"Powerful search", am I missing something?

I’ve got an install of photoprism on a vm and have loaded it with a small set of images.

The software looks good, runs pretty well considering that it’s a 1CPU vm. But the thing I really need in a photo cataloger is powerful search, a feature I see mentioned on the website.

Things I’d like to do are search by exact string. All of my thousands of photos have already been hand tagged by me.

  • train is a different search from train track. How can I search for train track without train photos? When I use quotes on the term, it doesn’t help.

  • I want to be able to find sky photos that are not also tagged night. How do I exclude results? When I put a hyphen in front of the word to exclude, it doesn’t work.

  • I want to be able to find birthday photos that contain cake. How do I and requests? When I have both terms, I get results that are birthday or cake.

I saw the color:red trick in a demo link for finding images determined to be red (somehow, I am very dubious about automatic classification), but I didn’t find that documented. Is it possible to find images tagged (shows up as “Subject” in the UI) red that don’t have color:red? Or images with red somewhere other than color? One of my photos got identified as having “lime” as the color, but it is a forest scene. How would I exclude that from a lime fruit search?

Have you checked out Search Filters - PhotoPrism

You also say “hand tagged” but that probably needs further explanation. Have you otherwise verified that photo prism has read your metadata?

Oh, yes, it comes in and shows in the “Subject” field. I can search on that, but I can’t make exact searches.

More details:

When I use the edit button, I see my tags (as added by F-Stop Gallery android app) imported into Photoprism in the Subject field. This makes sense because it’s F-Stop is using XMP Subject tags exactly as recommended in that post. I can see them opening the file in vim:

<dc:subject> <rdf:Bag> <rdf:li>Wyoming</rdf:li> <rdf:li>backseat antics</rdf:li> <rdf:li>Yellowstone National Park</rdf:li> <rdf:li>thermal</rdf:li> </rdf:Bag> </dc:subject>

When I search using the filters, as defined there (the linked filters doc), I get nothing.

If I just do a free-form search, it does show up. What little exact power there is in searches seems to be locked away from how my images are tagged.

(And I didn’t even notice until looking at my post, those images were taken seconds apart, not hours. I don’t know what’s going on there.)

Hi @Conic, sounds like a bug to me. I’m also able to do a search on keywords:something1&something2 that works as expected, but not on subjects.
Regarding the strange timestamp effect, are you using the latest version of photoprism? I think I also had something like this, but I recently did a complete rescan from scratch of my complete picture database, so can’t remember anymore, sorry.
Perhaps you may also have a look at their issue and feature request list at GitHub.

Hi @Conic

The subject search filter is for people (see description in the search filter documentation).

A search filter for the subject from the photo details is on our to do. I guess we should think about the naming again as it seems to be confusing.

A not operator for search filters is planned as well.

1 Like

I saw that it was described as for people in the documents, but how does it know which people are in a picture? The UI exposes a “subject” field and the tool imports data into that field. Why is that subject not subject to a “subject:” search?

(I’ve deleted my VM with photoprism now, and decided that every product on the market is not what I want and am reluctantly writing my own. I can do it, but my skills are very much in “non-UI” so I don’t expect to have something pretty. Just something that can search to my satisfaction.)

Currently, the subject filter finds images with people whose faces have been recognized and matched to a person. The “Subject” field in the photo details existed before and is “just” a text field (normal keyword search) until we had time to properly parse it and match it with the list of people also used for face recognition. It’s quite a lot of work in practice, as this has to be fuzzy and related information can be stored in various data structures in addition to a comma-separated list:

Oh, I don’t doubt there can be interesting issues at scale. I sampled the exif on 23,000 images I had handy (up to five per directory across 20 years of backups, so I’ve got everything from attachments to spam to important to me with curiosities I saved working with images for $WORK and web browser cache). I found a lot of inconsistency. (Those FLIR photos for example are kinda wild inside, there’s the obvious JPEG plus separate 16bit PNG heat map and “embeded” photo for after the fact reblending.) But I can prioritize the formats that I mostly have.

flir exif dump

File Name : flir_20220718T220825.jpg
[…]
Components Configuration : -, Cr, Cb, Y
Subject Distance : 1 m
Image Temperature Max : 213
Image Temperature Min : 213

Thumbnail Offset : 2040
Thumbnail Length : 1808
Subject : Wyoming, backseat antics, Yellowstone National Park, thermal
Creator Software :
Embedded Image Width : 1440
Embedded Image Height : 1080
Embedded Image Type : JPG
Embedded Image : (Binary data 27991 bytes, use -b option to extract)
Emissivity : 1.00
Object Distance : 1.00 m
Reflected Apparent Temperature : 298.1 C
Atmospheric Temperature : 20.0 C
IR Window Temperature : 33.6 C
IR Window Transmission : 0.82
Relative Humidity : 50.0 %
Planck R1 : 18029.801
Planck B : 1435
Planck F : 1
Atmospheric Trans Alpha 1 : 0.006569
Atmospheric Trans Alpha 2 : 0.012620
Atmospheric Trans Beta 1 : -0.002276
Atmospheric Trans Beta 2 : -0.006677
Atmospheric Trans X : 1.900000
Camera Temperature Range Max : 150.0 C
Camera Temperature Range Min : -20.0 C
Camera Temperature Max Clip : 150.0 C
Camera Temperature Min Clip : -60.0 C
Camera Temperature Max Warn : 120.0 C
Camera Temperature Min Warn : -40.0 C
Camera Temperature Max Saturated: 150.0 C
Camera Temperature Min Saturated: -60.0 C
Camera Model : CAT® S61
[…]
Planck O : -1713
Planck R2 : 0.0125
Raw Value Range Min : 4
Raw Value Range Max : 65535
Raw Value Median : 13872
Raw Value Range : 2880
Date/Time Original : 2022:07:19 05:06:20.000+00:00
Focus Step Count : 0
Focus Distance : 2.0 m
Frame Rate : 0
Palette Colors : 224
Above Color : 170 128 128
Below Color : 50 128 128
Overflow Color : 67 216 98
Underflow Color : 41 110 240
Isotherm 1 Color : 100 128 128
Isotherm 2 Color : 100 110 240
Palette Method : 0
Palette Stretch : 0
Palette Name : iron
Palette : (Binary data 672 bytes, use -b option to extract)
Raw Thermal Image Width : 640
Raw Thermal Image Height : 480
Raw Thermal Image Type : PNG
Raw Thermal Image : (Binary data 122857 bytes, use -b option to extract)
Real 2 IR : 1.52327239513397
Offset X : -19
Offset Y : -12
PiP X1 : 0
PiP X2 : 639
PiP Y1 : 0
PiP Y2 : 479
GPS Valid : Yes
GPS Latitude Ref : Unknown (No)
GPS Longitude Ref : Unknown (We)
GPS Map Datum : WGS84
Image Width : 1440
Image Height : 1080
Encoding Process : Baseline DCT, Huffman coding
Bits Per Sample : 8
Color Components : 3
Y Cb Cr Sub Sampling : YCbCr4:2:0 (2 2)
Image Size : 1440x1080
Megapixels : 1.6
Thumbnail Image : (Binary data 1808 bytes, use -b option to extract)
Peak Spectral Sensitivity : 10.0 um
GPS Latitude : 44 deg 27’ 50.76" N
GPS Longitude : 110 deg 5’ 57.00" W
GPS Position : 44 deg 27’ 50.76" N, 110 deg 5’ 57.00" W

But I don’t trust AI to reliably match people or things. My wife’s childhood photos look a lot like my daughters. Would AI know the difference? One of the tools I tested told me it had 87% confidence that a rotary phone was a clock.

I disabled the tensorflow stuff in Photoprism but it still did color matching. A panorama of a forest was labeled “lime” and came up in searches for “lime”. Not what I want. I have tens of thousands of my own photos with hand assigned tags because that’s how I find them myself. Automatic tagging like that is just noise to me.