Visual Search Workbench
I built Visual Search Workbench around the point where finding a photograph turns into following a visual idea. A search may begin with something specific, then return a picture that suggests another direction. I wanted that picture to become the next query without making someone invent a new description for it.
The app searches photographs in folders you choose. You can start with words or a reference image, inspect the results, and use a promising photograph to find related pictures. Explore adds a similarity map linked to an image grid, with Places and Timeline views for examining the same selection by location or date.
Give the search a starting point
I keep the search index separate from the original photographs. The app reads the folders you select and leaves the files where they are. Its image representations let a query follow what a picture depicts even when the filename is only a camera number; you do not have to tag the collection first.
A text query is useful when you can describe what you remember. A reference image is useful when the quality you are looking for is easier to show. You can drop a picture into the app or choose Find similar on one already in the collection.
When a photograph becomes the query, a banner names the reference. Back to text results returns to the earlier search. Those controls make the change of query visible and give it a way back, so following one image does not require starting over.
A search for flowers, for example, might turn up a picture worth following for its colour. That photograph can then lead to references that would have been difficult to request with the original search terms.
Explore the collection on a map
I used UMAP for the Similarity view. It takes the images’ numerical representations and looks for a two-dimensional arrangement that keeps neighbours near each other. This gives the collection regions to explore instead of presenting every result in one ranked list.
The map is linked to the grid. Select a region and the photographs behind it appear below, where you can judge the images themselves and choose one to follow. That connection is important: the layout offers an overview, but the photographs are still what the person needs to inspect.
The regions are not automatically named categories, and distances on the map are not exact measurements of visual difference. Finding a Visual Direction with UMAP develops the design idea; the interaction reference follows the individual views and controls.
Look at the selection by place or time
A selection carries between Similarity, Places, and Timeline. Places uses recorded coordinates, while Timeline lets you examine wider or narrower periods. Each view retains its zoom and pan when you change tabs. Selecting a photograph opens the available metadata, including camera information, capture time, and location.
I also worked on what happens while that information is loading. In release 0.2.6, the plot and timeline appear before all dates and locations have been read, then fill in as the metadata arrives. An unfinished metadata read no longer has to hold back the whole view.
The time slider needed a related correction. A request made earlier can finish after a newer one. I changed the handling so the selection and results settle on the range most recently requested, including after a drag or a change of time axis. An older response cannot replace the range the person has just chosen.
The same release fixed a preview crash caused by the people-name reader misinterpreting a metadata value in photographs from some cameras. It also made same-named folders distinguishable by their paths and corrected a count’s singular and plural forms on screen and in VoiceOver. The release notes document these changes.
Take a cutout into another project
Search can lead to a photograph whose subject would be useful in a composition. I added an experimental cutout feature that proposes subject layers with transparent backgrounds. The layers can be inspected and saved for use elsewhere.
The proposed separation still needs judgment. An edge can be rough or a label can be wrong. Cutouts remain a secondary experiment alongside the search and exploration work.
Keep the work on the Mac
I built the macOS interface in SwiftUI and use Core ML for local model processing. The app bundles its search and cutout models, so it does not need to fetch them at first launch. The photographs are processed on the Mac; my network checks found no gallery data leaving the device in the tested flows.
My documented checks include an 8 GB Apple Silicon Mac. Larger-library performance and peak memory still need measurement. I have not yet run an outside-user study to test whether the app helps people find remembered images or develop useful references for a creative brief.
Download
Download Visual Search Workbench 0.2.6 for Apple Silicon or Intel, macOS 14 or later.
The app is not notarized by Apple, so macOS may block its first launch. The release instructions explain the opening procedure. The GitHub repository distributes the built app, model-licence information, and checksums; it does not publish the application source.