No description
Find a file
Marcel Klehr 92afc36b75
Merge pull request #1393 from nextcloud/enh/ai-safety-api-key
enh: Require API-Key for webDAV API
2025-09-25 15:18:54 +02:00
.github fix(mariadb): Rename vector col to face_vector 2025-07-28 04:55:07 +00:00
.tx [tx-robot] Update transifex configuration 2022-10-01 02:54:11 +00:00
appinfo enh: Require API-Key for webDAV API 2025-09-25 11:35:31 +02:00
img Change app logo 2022-08-29 12:16:12 +02:00
l10n fix(l10n): Update translations from Transifex 2025-09-20 01:36:51 +00:00
lib Merge pull request #1393 from nextcloud/enh/ai-safety-api-key 2025-09-25 15:18:54 +02:00
models Implement MoViNet video classifier 2022-05-21 12:29:34 +02:00
screenshots README & info.xml: Update screenshots and descriptions 2023-08-08 16:36:45 +02:00
scripts Implement recognize:remove-legacy-tags command 2022-12-08 13:48:46 +01:00
src fix(AdminView): Warn about disabled systemtags app 2025-07-03 12:17:19 +02:00
templates First pass at implementing face clustering 2022-06-16 18:38:48 +02:00
tests fix: Don't use deprecated method Job#execute() 2025-09-16 11:13:36 +02:00
vendor-bin v10.0.2 2025-08-29 12:12:24 +02:00
.eslintrc.js Fix eslint errors 2022-10-25 13:31:47 +02:00
.gitattributes Exclude l10n and models from language statistics 2022-10-13 21:54:53 -07:00
.gitignore fix(gitignore): Add lib/autoload 2023-02-21 10:37:07 +01:00
.l10nignore Add transifex config 2022-07-29 09:52:36 +02:00
.php-cs-fixer.dist.php fix(Rubix\ML): Isolate rubix 2024-01-10 14:34:36 +01:00
CHANGELOG.md v10.0.4 2025-09-01 14:15:27 +02:00
composer.json fix(php84): Update php-stemmer 2025-09-24 10:30:10 +02:00
CONTRIBUTING.md Let there be 💡 2021-04-22 16:10:08 +02:00
COPYING Let there be 💡 2021-04-22 16:10:08 +02:00
Makefile v10.0.4 2025-09-01 14:15:27 +02:00
package-lock.json feat(deps): Add Nextcloud 33 support 2025-09-04 12:58:13 +02:00
package.json feat(deps): Add Nextcloud 33 support 2025-09-04 12:58:13 +02:00
psalm-baseline.xml enh: Require API-Key for webDAV API 2025-09-25 11:35:31 +02:00
psalm.xml fix(psalm): Upgrade to psalm 6 and fix issues 2025-04-09 13:06:24 +02:00
README.md fix(README): Update README.md 2025-09-02 12:47:34 +02:00
scoper.inc.php fix(deprecation): Avoid using deprecated IConfig#getAppValue 2024-01-25 15:24:48 +01:00
stylelint.config.js Fix webpack build 2021-06-26 21:07:21 +02:00
webpack.js Remove user settings 2022-09-15 11:12:03 +02:00

Recognize: Smart media tagging for Nextcloud

Join the chat at https://gitter.im/marcelklehr/recognize

This app goes through your media collection and adds fitting tags, automatically categorizing your photos and music.

  • 📷 👪 Recognizes faces and groups photos by faces that appear in them (GUI in the photos app and the memories app)
  • 📷 🏔 Recognizes animals, landscapes, food, vehicles, buildings and other objects
  • 📷 🗼 Recognizes landmarks and monuments
  • 👂 🎵 Recognizes music genres
  • 🎥 🤸 Recognizes human actions on video

Tagging works via Nextcloud's Collaborative Tags

  • 👂 listen to your tagged music with the audioplayer app
  • 📷 view your tagged photos and videos with the photos app

Model sizes:

  • Object recognition: 1GB
  • Landmark recognition: 300MB
  • Video action recognition: 50MB
  • Music genre recognition: 50MB

Ethical AI Rating

Rating for Photo object detection: 🟢

Positive:

  • the software for training and inference of this model is open source
  • the trained model is freely available, and thus can be run on-premises
  • the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.

Rating for Photo face recognition: 🟢

Positive:

  • the software for training and inference of this model is open source
  • the trained model is freely available, and thus can be run on-premises
  • the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.

Rating for Video action recognition: 🟢

Positive:

  • the software for training and inferencing of this model is open source
  • the trained model is freely available, and thus can be ran on-premises
  • the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.

Rating Music genre recognition: 🟡

Positive:

  • the software for training and inference of this model is open source
  • the trained model is freely available, and thus can be run on-premises

Negative:

  • the training data is not freely available, limiting the ability of external parties to check and correct for bias or optimise the models performance and CO2 usage.

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

Examples

(Screenshot by _DigitalWriter_)

Privacy

This app does not send any sensitive data to cloud providers or similar services. All image processing is done on your nextcloud machine, using Tensorflow.js running in Node.js, which comes bundled with this app.

Encryption

Note that end-to-end encrypted files are not possible to be processed by recognize, because the server by design cannot read them.

Categories

This is the list of recognized things and which categories they are currently mapped to. I'm happy to accept pull requests for this file to fine tune predictions.

Behind the scenes

Recognize uses

Learn more about what's going on behind the scenes in this wiki article and this forum post.

Install

Requirements

  • php 8.0 and above
  • App "collaborative tags" enabled
  • For native speed:
    • Processor: x86 64-bit (with support for AVX instructions)
    • System with glibc (usually the norm on Linux; FreeBSD, Alpine linux and thus also Nextcloud AIO are not such systems)
  • For sub-native speed (using WASM mode)
    • Processor: x86 64-bit, arm64, armv7l (no AVX needed)
    • System with glibc or musl (incl. Alpine linux and thus also Nextcloud AIO)
  • ~4GB of free RAM (if you're cutting it close, make sure you have some swap available)

Tmp

This app temporarily stores files to be recognized in /tmp. If you're using docker, you might find that adding an additional volume for /tmp speeds things up and eases the burden on your disk:

⚠️⚠️⚠️ Make sure that your RAM is big enough to store big files. Otherwise public uploads will fail.

docker run: Add --mount type=tmpfs,destination=/tmp:exec to command line.

docker compose: Add the following to the volume section docker-compose.yml:

  app:
    image: nextcloud:26
    ...
    volumes:
      - type: tmpfs
        target: /tmp:exec
      ...
    ...

One click

Go to "Apps" in your nextcloud, search for "recognize" and click install.

Help: If one-click install fails

Configuration

Any configuration is done in Settings/Recognize of your Nextcloud instance.

Ignoring directories

If you want path/to/your/folder/* to be excluded from image recognition, add a file path/to/your/folder/.noimage. If you want to exclude it from music genre recognition, add a file path/to/your/folder/.nomusic. If you want to exclude it from video recognition, add a file path/to/your/folder/.novideo. If you want to exclude it from all recognition, add a file path/to/your/folder/.nomedia.

Manual install

Dependencies

Setup

cd /path/to/nextcloud/apps/
git clone https://github.com/marcelklehr/recognize.git
cd recognize
make

Maintainers

🛠️ State of maintenance

While there are some things that could be done to further improve this app, the app is currently maintained with limited effort. This means:

  • The main functionality works for the majority of the use cases
  • We will ensure that the app will continue to work like this for future releases and we will fix bugs that we classify as 'critical'
  • We will not invest further development resources ourselves in advancing the app with new features
  • We do review and enthusiastically welcome community PR's

We would be more than excited if you would like to collaborate with us. We will merge pull requests for new features and fixes. We also would love to welcome co-maintainers.

If you are a customer of Nextcloud and you have a strong business case for any development of this app, we will consider your wishes for our roadmap. Please contact your account manager to talk about the possibilities.

Contribute

We always welcome contributions. Have an issue or an idea for a feature? Let us know. Additionally, we happily accept pull requests.

In order to make the process run more smoothly, you can make sure of the following things:

  • Announce that you're working on a feature/bugfix in the relevant issue
  • Make sure the tests are passing
  • If you have any questions you can let the maintainers above know privately via email, or simply open an issue on github

Please read the Code of Conduct. This document offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other.

More information on how to contribute: https://nextcloud.com/contribute/

Happy hacking ❤️

License

This software is licensed under the terms of the AGPL written by the Free Software Foundation and available at COPYING.

The recognize logo Smart tag by Xinh Studio from the Noun Project is licensed under a Creative Commons Attribution license.