digiKam
Loading...
Searching...
No Matches
dnnfacedetectorbase.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam
4 *
5 * Date : 2019-08-08
6 * Description : Base class to perform low-level neural network inference
7 * for face detection
8 *
9 * SPDX-FileCopyrightText: 2019 by Thanh Trung Dinh <dinhthanhtrung1996 at gmail dot com>
10 * SPDX-FileCopyrightText: 2020-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 *
14 * ============================================================ */
15
16#pragma once
17
18// C++ includes
19
20#include <vector>
21
22// Qt includes
23
24#include <QMutex>
25
26// Local includes
27
28#include "digikam_opencv.h"
29#include "digikam_export.h"
30#include "facescansettings.h"
31#include "dnnmodelbase.h"
32
33namespace Digikam
34{
35
36class DIGIKAM_EXPORT DNNFaceDetectorBase
37{
38
39public:
40
42 explicit DNNFaceDetectorBase(float scale, const cv::Scalar& val, const cv::Size& inputImgSize);
43 virtual ~DNNFaceDetectorBase() = default;
44
45 virtual void detectFaces(const cv::Mat& inputImage,
46 const cv::Size& paddedSize,
47 std::vector<cv::Rect>& detectedBboxes) = 0;
48
49 cv::Size nnInputSizeRequired() const;
50
52 {
53 Q_UNUSED(faceSize);
54
55 return;
56 };
57
58protected:
59
60 void selectBbox(const cv::Size& paddedSize,
61 float confidence,
62 int left,
63 int right,
64 int top,
65 int bottom,
66 std::vector<float>& goodConfidences, std::vector<cv::Rect>& goodBoxes,
67 std::vector<float>& doubtConfidences, std::vector<cv::Rect>& doubtBoxes) const;
68
69 void correctBbox(cv::Rect& bbox,
70 const cv::Size& paddedSize) const;
71
72public:
73
75 static float nmsThreshold;
76
77protected:
78
79 float scaleFactor = 1.0F;
80 cv::Scalar meanValToSubtract = cv::Scalar(0.0, 0.0, 0.0);
81 cv::Size inputImageSize = cv::Size(300, 300);
82 DNNModelBase* model = nullptr;
83
84private:
85
86 // Disable
88 DNNFaceDetectorBase& operator=(const DNNFaceDetectorBase&) = delete;
89};
90
91} // namespace Digikam
Definition dnnfacedetectorbase.h:37
virtual void detectFaces(const cv::Mat &inputImage, const cv::Size &paddedSize, std::vector< cv::Rect > &detectedBboxes)=0
virtual void setFaceDetectionSize(FaceScanSettings::FaceDetectionSize faceSize)
Definition dnnfacedetectorbase.h:51
static float nmsThreshold
Threshold for nms suppression.
Definition dnnfacedetectorbase.h:75
virtual ~DNNFaceDetectorBase()=default
static int uiConfidenceThreshold
Threshold for bbox detection. It can be init and changed in the GUI.
Definition dnnfacedetectorbase.h:74
Definition dnnmodelbase.h:35
FaceDetectionSize
Definition facescansettings.h:76
Definition datefolderview.cpp:34