Bug 415679 - Faces are not recognized
Summary: Faces are not recognized
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: Faces-Recognition (show other bugs)
Version: 7.0.0
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-12-29 15:34 UTC by Kristian Karl
Modified: 2019-12-30 06:50 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In: 7.0.0
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Kristian Karl 2019-12-29 15:34:19 UTC
SUMMARY
Using a subset of images with faces, Digikam fails to recognize any faces.

STEPS TO REPRODUCE
1. Digikam detect faces successfully.
2. Assign name tags to some of the Unknown face tags (at least 4 to each person) 
3. Let Digikam try to Recognize faces

OBSERVED RESULT
No faces were recognized.

EXPECTED RESULT
Faces should have been recognized.


SOFTWARE/OS VERSIONS
KDE 5.65.0 / Plasma 5.17.4
Qt Version: 5.13.2

ADDITIONAL INFORMATION
I used the Appimage: digikam-7.0.0-beta1-20191221T113643-x86-64.appimage
I also tried the windows version: digiKam-7.0.0-beta1-20191227T151506-Win64.exe

LOG OUTPUT
igikam::RecognitionPreprocessor::Private::preprocess: Align face for OpenFace neural network model
Digikam::OpenfacePreprocessor::process: type:  16
Digikam::OpenfacePreprocessor::process: Full object detection and landmard computation finished
Digikam::OpenfacePreprocessor::process: Align face finished
Digikam::DNNFaceExtractor::getFaceEmbedding: Finish aligning face in  14  ms
Digikam::DNNFaceExtractor::getFaceEmbedding: Start neural network
Digikam::DNNFaceExtractor::getFaceEmbedding: Finish computing face embedding in  224  ms
Digikam::DNNFaceExtractor::getFaceEmbedding: Face descriptors size: ( 1 ,  128 )
Digikam::DNNFaceRecognizer::predict: m_threshold  1
Digikam::DNNFaceRecognizer::predict: vecdata:  0.0493621   0.0429577
Digikam::OpenCVDNNFaceRecognizer::recognize: 2 0.59324
Digikam::DNNFaceRecognizer::predict: Predicting face image
Digikam::DNNFaceExtractor::getFaceEmbedding: faceImage channels:  3
Digikam::DNNFaceExtractor::getFaceEmbedding: faceImage size: ( 254 ,  180 )

Digikam::FacePipeline::Private::checkFinished: Check for finish:  4 packages, 0 infos to filter, hasFinished() false
Digikam::RecognitionPreprocessor::Private::preprocess: Align face for OpenFace neural network model
Digikam::OpenfacePreprocessor::process: type:  16
Digikam::OpenfacePreprocessor::process: Full object detection and landmard computation finished
Digikam::OpenfacePreprocessor::process: Align face finished
Digikam::DNNFaceExtractor::getFaceEmbedding: Finish aligning face in  10  ms
Digikam::DNNFaceExtractor::getFaceEmbedding: Start neural network
Digikam::DNNFaceExtractor::getFaceEmbedding: Finish computing face embedding in  269  ms
Digikam::DNNFaceExtractor::getFaceEmbedding: Face descriptors size: ( 1 ,  128 )
Digikam::DNNFaceRecognizer::predict: m_threshold  1
Digikam::DNNFaceRecognizer::predict: vecdata:  0.0508566   0.0368828
Digikam::OpenCVDNNFaceRecognizer::recognize: 2 0.46771
Digikam::FacePipeline::Private::checkFinished: Check for finish:  3 packages, 0 infos to filter, hasFinished() false
Digikam::DNNFaceRecognizer::predict: Predicting face image
Digikam::DNNFaceExtractor::getFaceEmbedding: faceImage channels:  3
Digikam::DNNFaceExtractor::getFaceEmbedding: faceImage size: ( 254 ,  246 )

Digikam::RecognitionPreprocessor::Private::preprocess: Align face for OpenFace neural network model
Digikam::OpenfacePreprocessor::process: type:  16
Digikam::OpenfacePreprocessor::process: Full object detection and landmard computation finished
Digikam::OpenfacePreprocessor::process: Align face finished
Digikam::DNNFaceExtractor::getFaceEmbedding: Finish aligning face in  13  ms
Digikam::DNNFaceExtractor::getFaceEmbedding: Start neural network
Digikam::DNNFaceExtractor::getFaceEmbedding: Finish computing face embedding in  181  ms
Digikam::DNNFaceExtractor::getFaceEmbedding: Face descriptors size: ( 1 ,  128 )
Digikam::DNNFaceRecognizer::predict: m_threshold  1
Digikam::DNNFaceRecognizer::predict: vecdata:  0.0627084   -0.0602348
Digikam::OpenCVDNNFaceRecognizer::recognize: 2 0.514198
Digikam::FacePipeline::Private::checkFinished: Check for finish:  2 packages, 0 infos to filter, hasFinished() false
Digikam::DNNFaceRecognizer::predict: Predicting face image
Digikam::DNNFaceExtractor::getFaceEmbedding: faceImage channels:  3
Digikam::DNNFaceExtractor::getFaceEmbedding: faceImage size: ( 254 ,  164 )

Digikam::RecognitionPreprocessor::Private::preprocess: Align face for OpenFace neural network model
Digikam::OpenfacePreprocessor::process: type:  16
Digikam::OpenfacePreprocessor::process: Full object detection and landmard computation finished
Digikam::OpenfacePreprocessor::process: Align face finished
Digikam::DNNFaceExtractor::getFaceEmbedding: Finish aligning face in  14  ms
Digikam::DNNFaceExtractor::getFaceEmbedding: Start neural network
Digikam::DNNFaceExtractor::getFaceEmbedding: Finish computing face embedding in  202  ms
Digikam::DNNFaceExtractor::getFaceEmbedding: Face descriptors size: ( 1 ,  128 )
Digikam::DNNFaceRecognizer::predict: m_threshold  1
Digikam::DNNFaceRecognizer::predict: vecdata:  0.195295   -0.0440654
Digikam::OpenCVDNNFaceRecognizer::recognize: 1 0.647489
Digikam::FacePipeline::Private::checkFinished: Check for finish:  1 packages, 0 infos to filter, hasFinished() false
Digikam::DNNFaceRecognizer::predict: Predicting face image
Digikam::DNNFaceExtractor::getFaceEmbedding: faceImage channels:  3
Digikam::DNNFaceExtractor::getFaceEmbedding: faceImage size: ( 254 ,  174 )

Digikam::RecognitionPreprocessor::Private::preprocess: Align face for OpenFace neural network model
Digikam::OpenfacePreprocessor::process: type:  16
Digikam::OpenfacePreprocessor::process: Full object detection and landmard computation finished
Digikam::OpenfacePreprocessor::process: Align face finished
Digikam::DNNFaceExtractor::getFaceEmbedding: Finish aligning face in  12  ms
Digikam::DNNFaceExtractor::getFaceEmbedding: Start neural network
Digikam::DNNFaceExtractor::getFaceEmbedding: Finish computing face embedding in  229  ms
Digikam::DNNFaceExtractor::getFaceEmbedding: Face descriptors size: ( 1 ,  128 )
Digikam::DNNFaceRecognizer::predict: m_threshold  1
Digikam::DNNFaceRecognizer::predict: vecdata:  0.0913226   -0.0140578
Digikam::OpenCVDNNFaceRecognizer::recognize: 1 0.668027
Digikam::FacePipeline::Private::checkFinished: Check for finish:  0 packages, 0 infos to filter, hasFinished() true
Digikam::FacesDetector::slotContinueAlbumListing: false false
Digikam::adjustedEnvironmentForAppImage: Adjusting environment variables for AppImage bundle
Digikam::DNotificationWrapper: parent is null
Comment 1 Maik Qualmann 2019-12-29 16:24:18 UTC
You have to start with an empty face database or do the "delete training data" option beforehand. The data of the old algorithm are still available and incompatible with the new one. And 4 new faces are not enough to overwrite the "old" data.

Maik
Comment 2 Kristian Karl 2019-12-29 17:14:12 UTC
My subset of images were placed in a new folder, and I started a new Digikam database in that folder. So everything was completely new for Digikam. No old databases.

I started digikam like this:
digikam --database-directory <path_to_my_new_folder_with_subset_of_images>
Comment 3 Kristian Karl 2019-12-29 17:41:40 UTC
I experimented a bit, and I think I know what's going on.

When I let Digikam detect faces, I set 'Face Accuracy' to 100%, which gives very good results.

Then I carry on with Face Recognition, with no recognized faces. But. If I change the 'Face Accuracy' to way less, say 50%, Digikam is starting to recognize.

So in short, 100% 'Face Accuracy', no faces will be recognized.