Here are several things I would very much like improved with the current faces area in Digikam. 1. The face detection (i.e. "this is a face") works reasonably well but fails miserably for rotated faces (even 90° and 180°). Please make it detect rotated faces. 2. The faces detection algorithm does not remember that I deleted an area which it (wrongly) detected as containing a face. If the image is processed again, it should not offer this area as a face again. 3. The face *regognition* (i.e. "this is Tim") should respect that the same face cannot appear in an image multiple times (or rather, that this is a rare corner case that should be excluded, e.g. when handling collages) and make according suggestions. 4. The face recognition database should update its guesses ("unconfirmed" faces) automatically whenever I update a face tag, so that when browsing through the image collection and correcting face tags subsequent very similar images which previously also had the same (incorrect) face tag are updated automatically. Thank you!
Hi, 1. The face detection algorithm can not detect faces which is rotated 90 degree. I think you can rotate the picture , then detect the face, and rotate the picture back. Since the face tag coordination is synchronized between database and metadata, the new face tag will in the right position after rotate the picture back. 2. The wrong face position is not remembered in metadata. So, it will be detected again even it is deleted. 3. There exists such situation that the same face appear more than once in a picture. In our latest version of digiKam, face recognition accuracy can reach 99%, which means the face can be recognized truly most of time, and it won't mistake face 'A' for face 'B' 4. This suggestion is admissible. We can add such function in dk and ask user whether to use it after he updated a face tag.
Thank you for answering! Regarding your comments: 1. I consider this a bug since there are lots of images of people lying down or even tilting their heads. This must be solved. A workaround in Digikam would be doing what you suggested, but automatically for 90°/180°/270° at least (better, also 45° etc). This slows down the detection process but it is still much faster than doing it manually (and might be presented as an optional checkbox before starting). 2. True - like I said, this should be remembered. iPhoto (Apple) does it by never deleting face tags at all - it just applies a flag "invisible" to a "deleted" face. If detection runs again, it will see there is already a face tag and delete it. There is an option for selected images to "rerun detection" which will make all "deleted" tags visible again. 3. Which version would that be? With 5.6.0, I have to correct 50% of all faces. Detection works reasonably well, but recognition doesn't. And since I have a lot of (baby) faces lying down (with parents) - i.e. rotated 90° - they are not detected either. 4. Thank you :) I have another one: quite frequently Digikam detects a face "inside" another face, i.e. a face rectangle is inside (or mostly inside) another one. the same name is applied to both faces. This also seems incorrect ... Q: When I draw face rectangles manually, what area should I choose to best train the algorithm? Just eyes/nose/mouth or the whole head? Thank you!
Git commit 300aa8b31de59661c0f66179abbb50b9f6580d76 by Gilles Caulier. Committed on 04/01/2018 at 22:51. Pushed by cgilles into branch 'development/6.0.0'. turn off option to select the recognition algorithm for faces management. The default one is DNN always used is Deep learning using Neural Network. The selection combo box still visible but disabled, in case of users feedback look wrong. Remove unsused code. M +16 -71 utilities/facemanagement/facescandialog.cpp M +3 -3 utilities/facemanagement/facescandialog.h M +7 -6 utilities/facemanagement/facescansettings.h M +1 -1 utilities/maintenance/facesdetector.cpp M +3 -3 utilities/maintenance/facesdetector.h M +1 -0 utilities/maintenance/maintenancesettings.cpp M +3 -3 utilities/maintenance/maintenancesettings.h https://commits.kde.org/digikam/300aa8b31de59661c0f66179abbb50b9f6580d76
How about the state of #1 and #2, and how can I detect whether Digikam updates its guesses after I correct faces? I still have to correct quite a number of faces. Can I delete the learning database and make Digikam re-learn from all existing faces to improve the detection algorithm?
No. Deleteting face fingerprints, event if face tags (region) are registered to core database, will not help. Remember : 1/ You scan for face. Algorithm detect faces in image and record region in core DB. 2/ You must at least register few faces in face database to see the recognition algorithm operational. Typically, a minimum of 6 different faces for the same people tag must be learned. 3/ The learning phase record the fingerprints to face database. To process automatic recognition, the collection of fingerprints registered for the same face will be used to try to recognize a new one. So, cleaning the face database clean all previous learning stages. This want mean that you will need to re-learn to the recognition algorithm few face from the same face to see if it work. It's fastidious but machine learning work like this. In fact it's as an human going to the school (:=)))... Gilles Caulier
So currently it is not possible to train the face recognition engine by importing a lot of images with existing (confirmed and tagged) face rectangle metadata? I still have about 40.000 images in my iPhoto database that eventually will be transferred to Digikam, and I would very much like all the "people" tags in iPhoto to be correctly converted to face tags in Digikam.
digiKam 7.0.0 will erase all face detection/recognition algorithms and use exclusively the new OpenCV3 Neural Network algorithms...