/recognize

👁 👂 Smart media tagging for Nextcloud: recognizes faces, objects, landscapes, music genres

Primary LanguageJavaScriptGNU Affero General Public License v3.0AGPL-3.0

Recognize for Nextcloud

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

Smart media tagging for Nextcloud

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

  • 👪 Recognizes faces from contact photos
  • 🏔 🦍 Recognizes animals, landscapes, food, vehicles, buildings and other objects
  • 👂 Recognizes music genres
  • 📷 view your tagged photos with the photos app
  • 🎵 listen to your tagged music with the audioplayer app
  • ⚡ Tagging works via Nextcloud's Collaborative Tags, allowing access by any of your apps

Notice: While this app often works nicely its stability across different environments is more comparable to that of a tech preview.

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.

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 a pre-trained EfficientNet v2 model for ImageNet object detection

Recognize uses face-api.js to extract and compare face features.

Recognize uses a Musicnn neural network architecture to classify audio files into music genres. Also see the original musicnn repository.

Install

Requirements

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

One click

Go to "Apps" in your nextcloud, search for "recognize" and click install (currently only works on Nextcloud v22+. If you're below that, you'll need to install manually).

Configuration

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

You can also ignore directories (and their children) by adding a .noimage, .nomusic or .nomedia file in them.

Manual install

Dependencies

Setup

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

Maintainers

Donate

If you'd like to support the creation and maintenance of this software, consider donating.

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.