Nextcloud Memories face recognition that actually works: Recognize with InsightFace on GPU

A practical walkthrough of the MediaLab edition of Memories and Recognize: why face recognition finds nothing, how InsightFace on GPU and tiled detection help, and how to get people, search, duplicates and stories working.

If you have ever installed Recognize next to Nextcloud Memories and waited for people to appear, you know the disappointment. The apps are excellent, but the default setup on a self-hosted box often ends with an empty People view, a queue that never drains, or a scan that only picks up the large, well-lit faces. This tutorial walks through the MediaLab edition of Memories + Recognize — our fork of both open-source apps for Nextcloud 34 — and explains what we change on your server so that nextcloud memories face recognition actually produces usable people, search and albums.

The apps themselves stay open source under AGPL-3.0, written by their original authors (Memories by Varun Patil, Recognize by Marcel Klehr and Nextcloud). The MediaLab edition is our fork, not an official release, and the authors do not endorse it. The source is public: Memories on branch casapu/nc34 and Recognize on branch casapu/stable12. What you pay for is the work on your server, billed hourly with a minimum of 4 hours.

Memories vs Photos vs Immich, in one paragraph

All three give you a photo timeline. Memories is a Nextcloud app, so it lives inside the same account, permissions and storage you already run; Immich is a separate service with its own database and mobile app. The MediaLab edition focuses on what happens after the timeline: face recognition, natural-language search, duplicate cleanup, events and stories. If your library is already in Nextcloud and you want that intelligence there, this is the path.

Prerequisites

  • Nextcloud 34, on a server you control.
  • Enough disk space for the Python/ONNX environment and the ML models (the setup checks in Recognize report disk space).
  • A GPU if you want fast face recognition and search; CUDA/cuDNN must match your driver. A CPU-only box works but is slower.
  • Working cron and a running background job queue — Recognize reports on both in its diagnostics.
  • Your existing photo library, or a Google Takeout export if you are importing.

Step 1: Install both apps and the ML environment

We install Memories and Recognize on your Nextcloud 34, including the Python/ONNX environment and the models. This is the part that most home setups get wrong: Recognize needs its Python side and model files in place before any scan makes sense. The admin diagnostics page in the MediaLab edition runs setup checks for the GPU, CUDA/cuDNN, models, cron, queue and disk space, so you see immediately what is missing instead of guessing.

Step 2: Get the GPU and models right

Face recognition in the MediaLab edition runs InsightFace (RetinaFace + ArcFace) on ONNX Runtime with GPU acceleration. We configure the GPU drivers, CUDA/cuDNN for machine learning, and the face recognition and search models. If you switch between backends later, the names you have already assigned are kept.

When the environment is healthy, occ recognize:status gives you the state of the queue and the scan. Recent errors show up in the admin page and as notifications, which is far more useful than a silent queue.

Step 3: Why Recognize finds no faces — and what we change

The usual causes are the ones the diagnostics check for: models not downloaded, cron not running, the queue stalled, or previews too small for the detector. The MediaLab edition adds tiled detection and a configurable preview size, so faces that are small in the frame are still found, plus a minimum face size setting to filter noise. A re-scan only adds new faces instead of redoing the whole library, and scan progress is shown live.

On the matching side, new faces are assigned directly to known people, a person never appears twice in one photo, and unnamed clusters are merged automatically into the named person when they match. That is what turns a pile of unnamed clusters into a usable People view.

Step 4: Work through people

Once the scan has run, the workflow is the same in both apps:

  • In Memories, open a person and use find this person in more photos to extend the album.
  • Add people manually in the viewer with people in this photo.
  • In Recognize, draw a box to add a face, then assign, detach or ignore it.
  • Review unnamed people with suggestions; burst tracking keeps sequences from flooding the review list.
  • Person albums follow a recognized person automatically, with best photos first.

A prominence score per face and subject/background detection help sort the good shots from the background crowd.

Step 5: Search and duplicates

Natural-language photo search uses multilingual CLIP embeddings, so you can describe a scene instead of hunting folders. Duplicate and near-duplicate groups are built from perceptual hashes plus CLIP; in Memories, Similar photos offers keep-the-largest cleanup. Both features depend on the same indexing pipeline, so fix the queue first if results look thin.

Step 6: Events, stories and Takeout

Memories groups photos into automatic events by time gap and distance, and can save them as albums in bulk. A weekly recap and full-screen Stories give you a reason to open the app. Clips and videos made from photos can include a title card, location, tagged people, text over the video and background music chosen by mood, encoded on the GPU in the background with progress and notifications.

If you are coming from Google, Takeout sidecars are imported at index time — date, location, description, people and favorite — without touching the files themselves.

Tips and troubleshooting

  • Nothing in People after hours: check occ recognize:status and the admin diagnostics first; cron and the queue are the usual culprits.
  • Only big faces found: enable tiled detection and raise the preview size, then run a re-scan; it only adds new faces.
  • GPU not used: verify CUDA/cuDNN against your driver version in the setup checks.
  • Damaged or unusual files: RAW, TIFF, AVIF, JXL and damaged JPEGs are covered by the scanning in the MediaLab edition.
  • Privacy: the private section encrypts photos with XChaCha20-Poly1305, moves them out of Files and opens them only with the owner's code; nudity is kept out of the library so it never reaches the timeline, albums or people.
  • Sharing: short album links work with Shortcloud, and albums and people have hover actions.

More background is in our knowledge base; for one-off questions the FAQ is a good start.

Conclusion

Face recognition is not a checkbox — it is an environment, a queue, a model and a set of tuning choices. The MediaLab edition packages the fixes (InsightFace on GPU, tiled detection, review tools, natural-language search, duplicates, events and Takeout import) and we install, configure and maintain it on your server, including updates, Nextcloud upgrades, re-indexing and troubleshooting. If you want to hand that over, see the product page or contact us with your Nextcloud version, operating system, GPU and library size for an estimate.

This post was written with AI assistance from our product documentation or the sources listed and checked automatically before publication.

Read next

Running Emby, Jellyfin or Nextcloud?

Our plugins and apps add Live TV, subtitles, sign-up and security to your own server, with a free trial.