nextcloud / nextcloud/recognize

Add an Ignored faces category

Open
#1,424 1 comment 5 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
PHP
Stars
699
Forks
68
Avg merge
1d 4h
Merged PRs (30d)
5

Description

Which version of recognize are you using?

10.0.6

Enabled Modes

Face recognition, Object recognition

TensorFlow mode

Normal mode

Downstream App

Memories App

Which Nextcloud version do you have installed?

32.0.2

Which Operating system do you have installed?

Ubuntu 24.04.3 LTS

Which database are you running Nextcloud on?

mysql 8.0.44

Which Docker container are you using to run Nextcloud? (if applicable)

No response

How much RAM does your server have?

8GiB

What processor Architecture does your CPU have?

x86_64

Describe the Bug

It recognizes a lot of faces in the background of my pictures, which is fine. However, I end up playing whack-a-mole because I'll tell it to remove the face, but then, probably when it rescans, it recognizes the face again. It's annoying because it'll tag the pictures with that face, so I have the face of one or two people I know along with the face of some stranger.
How do you tell it to never recognize a particular face? Is there documentation on how to use the app that I've missed somewhere?

Expected Behavior

Removing a face should tell it not to re-recognize it again.

To Reproduce

Go into Memories, select a face, click "Remove person" from the three-dots menu in the upper right. It'll remove the person from the list, but, a few minutes later, they're back.

Debug log

I do get this in the logs:

{"reqId":"mZjkq2NDud2Z8olcfP2E","level":3,"time":"2025-11-30T04:55:25+00:00","remoteAddr":"","user":"--","app":"core","method":"","url":"--","message":"Error while running background job OCA\\Recognize\\BackgroundJobs\\ClusterFacesJob (id: 14321, arguments: {\"userId\":\"jack\"})","userAgent":"--","version":"32.0.2.2","exception":{"Exception":"OCP\\AppFramework\\Db\\DoesNotExistException","Message":"Did expect one result but found none when executing: query \"SELECT `id`, `title`, `user_id` FROM `*PREFIX*recognize_face_clusters` WHERE `id` = ?\"; ","Code":0,"Trace":[{"file":"/var/www/html/lib/public/AppFramework/Db/QBMapper.php","line":375,"function":"findOneQuery","class":"OCP\\AppFramework\\Db\\QBMapper","type":"->"},{"file":"/var/www/html/apps/recognize/lib/Db/FaceClusterMapper.php","line":34,"function":"findEntity","class":"OCP\\AppFramework\\Db\\QBMapper","type":"->"},{"file":"/var/www/html/apps/recognize/lib/Service/FaceClusterAnalyzer.php","line":137,"function":"find","class":"OCA\\Recognize\\Db\\FaceClusterMapper","type":"->"},{"file":"/var/www/html/apps/recognize/lib/BackgroundJobs/ClusterFacesJob.php","line":42,"function":"calculateClusters","class":"OCA\\Recognize\\Service\\FaceClusterAnalyzer","type":"->"},{"file":"/var/www/html/lib/public/BackgroundJob/Job.php","line":61,"function":"run","class":"OCA\\Recognize\\BackgroundJobs\\ClusterFacesJob","type":"->"},{"file":"/var/www/html/lib/public/BackgroundJob/QueuedJob.php","line":43,"function":"start","class":"OCP\\BackgroundJob\\Job","type":"->"},{"file":"/var/www/html/lib/public/BackgroundJob/QueuedJob.php","line":29,"function":"start","class":"OCP\\BackgroundJob\\QueuedJob","type":"->"},{"file":"/var/www/html/cron.php","line":175,"function":"execute","class":"OCP\\BackgroundJob\\QueuedJob","type":"->"}],"File":"/var/www/html/lib/public/AppFramework/Db/QBMapper.php","Line":277,"message":"Error while running background job OCA\\Recognize\\BackgroundJobs\\ClusterFacesJob (id: 14321, arguments: {\"userId\":\"jack\"})","exception":{},"CustomMessage":"Error while running background job OCA\\Recognize\\BackgroundJobs\\ClusterFacesJob (id: 14321, arguments: {\"userId\":\"jack\"})"}}```

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the reported flow in Memories: remove a person, then observe the next face-recognition scan. Read apps/recognize/lib/BackgroundJobs/ClusterFacesJob.php, FaceClusterAnalyzer.php, and FaceClusterMapper.php using the supplied stack trace to understand how deleted clusters are processed. Done means a removed face is represented as ignored and is not recreated or tagged by later scans.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
backend, machine-learning
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.