nextcloud / nextcloud/recognize
Add an Ignored faces category
Nobody has claimed this yet.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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