Description

Create an locally deployable application that allows the user to repeatedly choose between two images from a set to rank them over the course of multiple comparisons. The image set should be loadable from a local file folder the user specifies, then the program displays 2 images at a time to the user who selects their preferred image, random comparisons continue until the user decides they are done, or some threshold for comparisons is met (for example, all images except 1 have "lost" 5 times). The resulting stack sort is available to the user. As a stretch goal the images could be renamed or copy+rename based on the results. Additional stretch goal would be to sort images from a library of URLs (or perhaps a flickr stream). An unlikely but ambitious additional stretch goal is to filter out blurry images using some sort of AI plugin.

Goals

Provide an easily deployable interface in either golang or python (TBD) that supports easy image searching.
Expand the pool of possible image imports over time.
Opportunistically add AI filtering of images based on sharpness or other features.
Application runs on OpenSUSE (stretch goal to also test on Windows)

Resources

Expectation is user can run this on a local machine. This is also meant as a learning project for freesimplegui and image understanding with Gemini
https://freesimplegui.readthedocs.io/en/latest/ https://ai.google.dev/gemini-api/docs/quickstart
https://ai.google.dev/gemini-api/docs/image-understanding

This could be used for sorting a large number of photos for quality/artistic purposes. This could also be used to rank the things that the photos/pictures represent, say ranking world wonders or food items or marvel movies.

Next up Tactical Objectives

  • Add selector between view mode (1 picture shown, readonly driven by left side list) and vote mode (shows 2 photos click to vote)
  • Track voting results
  • Persist voting results on local disk (use directory path as key)
  • re-sort list by win percentage as votes are cast
  • add ability to set "maximum lost votes" , after losing that many picture no longer appears in comparisons

Looking for hackers with the skills:

Nothing? Add some keywords!

This project is part of:

Hack Week 25

Activity

  • 2 days ago: jeremy_moffitt joined this project.
  • 18 days ago: rhuan.queiroz started this project.
  • about 1 month ago: hennevogel liked this project.
  • about 1 month ago: jeremy_moffitt originated this project.

  • Comments

    • jeremy_moffitt
      about 1 month ago by jeremy_moffitt | Reply

      Considering using https://realpython.com/pysimplegui-python/ for this, as the basics for image display are covered in the tutorial.

      Did some standalone tests with Gemini comparing image sharpness of provided images, and initial results are promising, though it needs the image contents as some URLs are not accessible by Gemini (I tried linking a Flickr profile and it said it was a nice profile but unable to view any of the photos, presumably for IP reasons).

    • jeremy_moffitt
      16 days ago by jeremy_moffitt | Reply

      looks like pysimplegui has been discontinued and https://freesimplegui.readthedocs.io/en/latest/ may be a good alternative option

    • jeremy_moffitt
      14 days ago by jeremy_moffitt | Reply

      started a repo at https://github.com/jeremy-moffitt/image-ranker currently displays two images and a list of images from the folder (heavily leverages FreeSimpleGUI imgviewer demo example)

      compared to demo:
      - displays two files at once
      - responds to clicks

      does not yet rank files, will likely leave that for hackweek itself, currently just setting a baseline

    • jeremy_moffitt
      3 days ago by jeremy_moffitt | Reply

      at the end of day 1 we have some gemini integration for getting basic comparisons between photos (related to sharpness) . fixed some minor bugs in the list selection on the left from the baseline. Rhuan is making good progress on the ranking functionality in his own fork and should have a PR up tomorrow that we can both build on going forward.

      Note that gemini functionality requires an API key, the readme links to Googles docs for setting that up

    • jeremy_moffitt
      2 days ago by jeremy_moffitt | Reply

      The ranking functionality that Rhuan worked on is now merged into main. We've added the ability to ask Gemini to cast a vote users can now copy geminis single image evaluation to clipboard ranking table appears below the images and updates as votes are cast current results can be exported to csv

    • jeremy_moffitt
      1 day ago by jeremy_moffitt | Reply

      during day 3 we:
      - persisted the results in a folder so they are maintained from one session to the next
      - added a separate single-image view for just viewing the files without comparison
      - bug fixes and clean-up

    • jeremy_moffitt
      about 3 hours ago by jeremy_moffitt | Reply

      day 4 -
      Added basic localization support, including English and Brazilian Portuguese.
      Fixed some cursor issues to make clickable elements more obvious.

      Hoping to land enhancements to show image metadata tomorrow and wrap it up.

    Similar Projects

    This project is one of its kind!