-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Face Gallery detects the faces in a pile of photos, works out which photos each person appears in, and lets you browse the result as face cards or as an interactive graph.
face-gallery.mrbean.dev is open to everyone. No sign-up, no account, nothing to install just to look around.
You connect your own backend to it, and a backend running on your own laptop is fully supported — it is the normal way to use the app.
The hosted site is only the interface. It is static HTML, CSS, and JavaScript, with no server behind it and no storage of any kind.
Every photo you add is uploaded to, processed by, and stored on the backend
you point it at. Point it at http://localhost:8000 and your photos never
travel further than your own computer. They are not copied anywhere, not sent
to a third party, and nobody running the hosted site can reach them — there is
nothing on that side to reach.
Your photos, the cropped faces, and the database all live in one folder on your machine that you can inspect or delete at any time. See where your data is stored.
One thing worth understanding: the app talks to whatever backend URL you give
it. If you deliberately point it at a backend on someone else's server, your
photos go there instead. Keep it on localhost and they stay local.
| I want to... | Go to |
|---|---|
| Try it with the least effort | Running Your Own Backend |
| Run both halves locally from source | Quick Start |
| Understand what the buttons do | Usage |
| Change tolerance, limits, or storage | Configuration |
| Call the API myself | API Reference |
| Fix a problem | Troubleshooting |
Processing runs in two passes.
The first pass scans every photo, detects faces, and builds a list of distinct people. A face is considered new when its encoding is further than the match tolerance from every person already found.
The second pass walks the photos again and links each detected face to its closest known person, recording the bounding box. Encodings computed in the first pass are reused, so no photo is encoded twice.
Detection runs on a copy scaled to at most 1600 px on the long edge, which is several times faster on large photos and costs no accuracy at the default tolerance. Face crops are always taken from the original resolution, so the face images stay sharp.
- Drag and drop photos or a ZIP archive
- Live progress over a WebSocket, with faces appearing as they are found
- List view — a card per person, with every photo they appear in
- Graph view — photos and faces as a node network, in square or radial layout, with hover highlighting, fullscreen, and a minimap
- Reversible merge — grouping two faces never deletes anything, so a wrong merge can be undone and the display face swapped at any time
- Rename, disable, or delete people
- Assign a face to a photo by hand, optionally drawing the bounding box
- Add more photos to an existing session and re-process
- Server-side thumbnails with a disk cache, and per-effect toggles for large graphs
A modern browser, and a machine that can run the backend.
Safari cannot be used with the hosted frontend. It blocks all mixed content, including requests to localhost. Chrome, Edge, and Firefox 84+ work.
Repository · Releases · Issues · MIT licensed
Getting started
Reference
Going further