App: Recognize


目录

The recognize app provides media tagging and face recognition functionality for the memories app. Recognize can group similar faces on user's photos ("face recognition"); it can add fitting tags to photos detecting landscapes, food, vehicles, buildings animals and other objects, as well as known landmarks and monuments; it can recognize music genres in user's audio files and adds tags for those; it can recognize human actions on user's video files and add tags for them. It specifically runs only open source models and does so entirely on-premises. Nextcloud can provide customer support upon request, please talk to your account manager for the possibilities.

The actual classification work can be carried out by one of two interchangeable backends (see Classifier backends below): the built-in Node.js/TensorFlow.js classifiers that run directly on your Nextcloud nodes, or the recognize_backend ExApp, which is deployed as a container via AppAPI and plugs into Nextcloud's TaskProcessing framework.

Front-end

Tagged files will appear in the Memories app under the "Tags" section as well as in the normal Files app. Face recognition results will appear under the "People" section in the Memories app.

Classifier backends

Regardless of the backend, recognize itself always does the same work: it crawls the file system, keeps a queue of files per model, schedules background jobs, writes the resulting tags and face detections to the database and clusters faces into persons. Only the classification step itself differs.

Node.js backend (default)

The classifiers ship with the app as TensorFlow.js models and are executed by spawning a Node.js child process on the Nextcloud node that runs the background job. The models have to be downloaded to each node with occ recognize:download-models, and Node.js (plus FFmpeg for video) must be available on those nodes. This is the traditional and default setup described in the rest of this page.

recognize_backend ExApp (TaskProcessing)

recognize_backend is a separate Nextcloud ExApp that is deployed as a Docker container through AppAPI. It registers one TaskProcessing provider per classification task type, and recognize then hands off batches of files as TaskProcessing tasks instead of spawning local Node.js processes. Results are picked up asynchronously and applied to tags and face detections exactly as before.

Compared to the Node.js backend this means:

The following task types and models are implemented by recognize_backend:

Task type Recognize feature Model
recognize:image:classification Object recognition ConvNeXt V2 (Large, 384, ImageNet-22k)
recognize:image:facerecognition Face recognition InsightFace buffalo_l (SCRFD detector + ArcFace 512-dim embeddings)
recognize:audio:classification Music genre recognition Audio Spectrogram Transformer (AudioSet, 527 classes), plus a dedicated music genre classifier for clips detected as music
recognize:video:classification Video action recognition VideoMAE (Large, Kinetics-400)

Landmark recognition is currently not part of recognize_backend. Images that object recognition identifies as buildings are still queued for the Node.js landmarks classifier, so landmark recognition continues to require Node.js and occ recognize:download-models on the nodes running background jobs, even in TaskProcessing mode. If you do not want that, leave landmark recognition disabled.

Requirements

Common requirements

Node.js backend

recognize_backend ExApp

Disk space usage

  • Node.js backend: ~1.5GB for all models in total, on every node that runs background jobs
  • recognize_backend ExApp: ~9GB for the container image, plus ~3GB of model weights downloaded into the app's persistent storage volume on first use

Installation

Installation with the Node.js backend

  1. Install the recognize app via the "Apps" page in Nextcloud, or by executing

    occ app:enable recognize

  2. Execute the following command on your server terminal of each node that runs background jobs:

    occ recognize:download-models

  3. Go to your Nextcloud Administration settings and open the recognize admin settings page

  4. Enable all modes of operation that you want the app to undertake

  5. Enable GPU mode if you have a GPU that you want to use; if you want to use CPU only, you can set the number of cores to use here

  6. Execute the following command on your server terminal to stop background processing of existing files:

    occ recognize:clear-background-jobs

  7. Execute the following command on your server terminal to process all existing files in bulk (This may take a long time, depending on how many files you have on your instance):

    occ recognize:classify

  8. Execute the following command on your server terminal to calculate face clusters from faces found in all existing files (Run this repeatedly until no more clusters are found):

    occ recognize:cluster-faces

  9. All new files from this point on will be automatically processed in background tasks without manual intervention

Installation with the recognize_backend ExApp

  1. Install and configure the AppAPI app and a deploy daemon as described in AppAPI and External Apps

  2. Install the recognize app via the "Apps" page in Nextcloud, or by executing

    occ app:enable recognize

  3. Install the Recognize Backend ExApp from the "External Apps" page in your Nextcloud Administration settings. Note that the first deployment pulls a container image of roughly 9GB, so this can take a while.

  4. Go to your Nextcloud Administration settings and open the recognize admin settings page. In the "Classifier backend" section, "Use Nextcloud TaskProcessing for classification" is switched on automatically as soon as the recognize_backend ExApp is installed and enabled; the Node.js, FFmpeg, WASM, GPU and resource usage sections disappear, because they no longer apply.

  5. Enable all modes of operation that you want the app to undertake. If you want landmark recognition, you also have to run occ recognize:download-models on every node that runs background jobs, since landmarks are still classified locally.

  6. Execute the following command on your server terminal to queue all existing files for classification (the actual work is then done by background jobs, which hand the files to the ExApp; this may take a long time, depending on how many files you have on your instance):

    occ recognize:recrawl

    Note that occ recognize:classify, which classifies files synchronously on the terminal, does not work in TaskProcessing mode. Bulk classification always goes through cron in this mode.

  7. Execute the following command on your server terminal to calculate face clusters from faces found in all existing files (Run this repeatedly until no more clusters are found):

    occ recognize:cluster-faces

  8. All new files from this point on will be automatically processed in background tasks without manual intervention

The progress of running tasks is visible in the recognize admin settings, which shows the number of scheduled and running TaskProcessing tasks per model next to the queue counts.

Switching between backends

Object, audio and video tags produced by the two backends are compatible: they end up as ordinary system tags, and you can simply leave existing tags in place, or remove them with occ recognize:reset-tags and reclassify.

Face detections are not compatible. The two backends use different face recognition models with different embeddings and different clustering distances, so detections created by one backend cannot be clustered together with detections created by the other. After switching the backend, reset the existing face data and let it be recomputed:

occ recognize:reset-faces

occ recognize:recrawl

occ recognize:cluster-faces

(occ recognize:reset-faces removes all face detections and clusters, occ recognize:recrawl puts all files back into the queues, and clustering then runs over the newly created detections. With the Node.js backend you can use occ recognize:classify instead of occ recognize:recrawl to do the classification on the terminal rather than through cron.)

Configuration of the recognize_backend ExApp

The defaults are sensible for most instances. If you want to change models or thresholds, the following environment variables can be set on the ExApp, either in the deploy daemon UI or with occ app_api:app:register / your container runtime:

Any Hugging Face model compatible with the corresponding transformers pipeline, and any InsightFace model pack, can be used. Note that the recognize app maps the returned labels onto its own tag vocabulary, so swapping in an unrelated model may produce labels that are dropped.

Scaling

With the Node.js backend it is possible to scale this app by adding multiple "background" nodes to your cluster that will only process background jobs by executing cron.php.

With the recognize_backend ExApp, the Nextcloud nodes only schedule tasks and apply results, so the classification throughput is determined by the machine that hosts the ExApp container: give it a GPU, more CPU cores and more RAM to speed up processing. Files are handed over in batches of up to 500 per task, and the container processes one task at a time. You still need cron to run on your Nextcloud nodes so that files are crawled, queued and handed over.

App store

You can also find the app in our app store, where you can write a review: https://apps.nextcloud.com/apps/recognize

The ExApp backend is listed separately: https://apps.nextcloud.com/apps/recognize_backend

Repository

You can find the app's source repository on GitHub where you can report bugs and contribute fixes and features: https://github.com/nextcloud/recognize

The source of the ExApp backend lives in a separate repository: https://github.com/nextcloud/recognize_backend

Nextcloud customers should file bugs directly with our Support system.

Known Limitations

Ethical AI Rating

Node.js backend

Rating for Photo object detection: Green

Positive:

Rating for Photo face recognition: Green

Positive:

Rating for Video action recognition: Green

Positive:

Rating Music genre recognition: Yellow

Positive:

Negative:

recognize_backend ExApp

Rating: Yellow

Positive:

Negative:

Learn more about the Nextcloud Ethical AI Rating in our blog.


版本号 #3
由 cocobook-sync 创建于 2026-10-28 16:28:54 UTC
由 cocobook-sync 更新于 2026-10-29 01:09:22 UTC