Hacker News new | ask | show | jobs
by damianmoore 2614 days ago
Shameless plug: I'm currently working on a solution called Photonix, though it's still very much pre-1.0 at the moment.

https://photonix.org/

Installation is fairly simple with Docker, frontend is web-based (React), backend is Python with a sprinkling of Tensorflow. So far auto-tagging of photos by location, object detection and colour is fairly decent. UI is progressing and is useable on most devices, though quite minimal.

Please feel free to check out the demo site and the GitHub issues. I'd really appreciate feedback and help. Thanks.

6 comments

Will you have support for handling duplicate images? People are either super organised, or the complete opposite. When you have multiple copies for backup and then want to consolidate to a library you want to hide your messiness.

I've been struggling to find a tool that handles that handles the duplicates problem within a web interface. I've been experimenting with some approaches including perceptual hashes and was wondering if that's something you'll include?

Is there any way to use metadata from Lightroom Catalogs, or enable people tagging in your current implementation?

I definitely hear you regarding duplication. This whole project evolved from a script I wrote to do just that. There is a concept of multiple versions (files) of an image so different edits with the same metadata timestamp will show only once and you'll be able to select the preferred one. I prefer to handle things this way to start and then suggest deletions based on same hash rather than deleting up front.

I don't have any experience of Lightroom but I can have a go at reading the files if you think it's useful.

I have something that works fairly well for duplicates and automatic organization based on date. It’s python, so you can try integrating it, but it’s not a module, just a single file script.

https://github.com/jonathankoren/photo-autorganize

Thank you. I'll definitely check it out.
Reach out if you want help
I like your approach. I'll play around more with your app. Thinking about the LR catalogs, I wonder how much is tied up there versus being written back to image metadata. It's probably better to see what data is there and recommended workflow before spending too much time.
OMG, me too. @damianmoore, I've banged on this issue for > 2 years now and have a pretty solid deduping algorithm. I'd be happy to share what I've got with you.
Cool, share or PM me a link and I'd love to take a look.
You don't have any contact info here or on github (or in whois). Feel free to DM me @ https://twitter.com/mrm or send me an email.
Face detection and recognition is definitely planned and looks like it should be entirely doable.
I really like it, though I'm not photographer, so I won't be able to speak for your main user base. One thing I would like is when I open a large image, it should give me a loading status. Instead, it just blacked out for a moment and image suddenly loaded.
Thanks for the feedback. I agree, there should some progress display while downloading. I'll be sure to make sure that's there. There are other optimisations I want to make in this area like selecting a resized version to download depending on the current screen dimensions and pixel density. This will improve loading times.
As a developing photographer, having the biggest image isn't as important as having a large-ish image with additional metadata.
At the moment I create "thumbnails" at various sizes on discovery (4k, 2k, etc). Currently the 4k version is displayed but this will adapt and download the smaller versions on smaller devices.

The UI for metadata is a bit unintuitive at the moment but you can scroll down to see it when you're viewing the fullscreen photos.

Hey mate,

I have checked this out, running the docker-compose method, and kudos for your work. Looks great.

One issue I ran into was regarding videos (tried with a couple of MOV and MP4) - it doesn't generate a thumbnail and in fact throws an error along the lines of: File "/srv/photonix/photos/models.py", line 84, in base_image_path AttributeError: 'NoneType' object has no attribute 'base_image_path'

Happy to open a gitHub issue, but thought I'd drop you a line here to see if it was your intention to support videos (which would be cool!)

Cheers,

I have ~1TB of photos from various sources, including backups of old iPhoto libraries. Therefore I often have one photo available in many different sizes, cropped thumbnails, etc. I'd pay money for working duplicate detection :)
OK, noted ;)
Does Photonix work with a read-only volume for /data/photos?

I'm looking at the docker-compose.yml and wanted to give it a go, but not allow it any way of deleting anything :)

Yep, it should work fine with a read-only photo volume as it doesn't make any changes to photo files by default - it just needs to write to the DB which is configured as another container in the Docker Compose file.
Unfortunately I ran into issues with the docker-compose.yml method of running Photonix. I'll give it another try later and create a github issue for you. Thank you for replying to my question!
You might just want to try making a copy of a smaller selection of your photo library in a new folder and giving that to Photonix to try out. That way it doesn't matter if anything were to get removed.
Sorry that it didn't work for you. Hopefully we can solve your issue.
I like this architecture and wil spin up a Photonix docker on my Unraid server in a few weeks or so. I wonder why you used graphql for the api?
Thank you. I'd like to hear how that goes.

The thinking behind GraphQL was to allow for advanced filtering, supporting all the attributes we store without a lot of extra API work. The GraphiQL web interface makes it quite nice to explore the data and is bundled in and accessible at /graphql . GraphQL also has "subscriptions" which allows for pushing data from the server. The Apollo JS library I used also provides built-in extras like caching.