digiKam
Loading...
Searching...
No Matches
facepipeline.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2010-09-03
7 * Description : Integrated, multithread face detection / recognition
8 *
9 * SPDX-FileCopyrightText: 2010-2011 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 * SPDX-FileCopyrightText: 2012-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
11 * SPDX-FileCopyrightText: 2024 by Michael Miller <michael underscore miller at msn dot com>
12 *
13 * SPDX-License-Identifier: GPL-2.0-or-later
14 *
15 * ============================================================ */
16
17#pragma once
18
19// Local includes
20
21#include "facepipelinepackage.h"
22#include "facescansettings.h"
23
24namespace Digikam
25{
26
27class FacePipeline : public QObject
28{
29 Q_OBJECT
30
31public:
32
50
62
63public:
64
65 explicit FacePipeline();
66 ~FacePipeline() override;
67
103 void plugFaceDetector();
105 void plugFaceRecognizer();
106 void plugDatabaseWriter(WriteMode mode);
107 void plugDatabaseEditor();
108 void plugTrainer();
111 void construct();
112
116 void cancel();
117
121 void shutDown();
122
123 bool hasFinished() const;
124 QString benchmarkResult() const;
125
130 void setPriority(QThread::Priority priority);
131 QThread::Priority priority() const;
132
133public Q_SLOTS:
134
141 bool process(const ItemInfo& info);
142 bool process(const ItemInfo& info, const DImg& image);
143
150 FaceTagsIface confirm(const ItemInfo& info,
151 const FaceTagsIface& face,
152 int assignedTagId = 0,
153 const TagRegion& assignedRegion = TagRegion());
154 FaceTagsIface confirm(const ItemInfo& info,
155 const FaceTagsIface& face,
156 const DImg& image,
157 int assignedTagId = 0,
158 const TagRegion& assignedRegion = TagRegion());
159
163 void train(const ItemInfo& info,
164 const QList<FaceTagsIface>& faces);
165 void train(const ItemInfo& info,
166 const QList<FaceTagsIface>& faces,
167 const DImg& image);
168
172 void remove(const ItemInfo& info,
173 const FaceTagsIface& face);
174
179 const DImg& image,
180 const TagRegion& assignedRegion);
181
187 const DImg& image,
188 const FaceTagsIface& databaseFace,
189 const TagRegion& newRegion);
190
196 FaceTagsIface editTag(const ItemInfo& info,
197 const FaceTagsIface& databaseFace,
198 int newTagId);
199
205 void process(const QList<ItemInfo>& infos);
206
207 void setAccuracyAndModel(int detectAccuracy, FaceScanSettings::FaceDetectionModel detectModel, FaceScanSettings::FaceDetectionSize detectSize, int recognizeAccuracy, FaceScanSettings::FaceRecognitionModel recognizeModel);
208
209Q_SIGNALS:
210
212 void scheduled();
213
215 void started(const QString& message);
216
218 void processing(const FacePipelinePackage& package);
219
221 void processed(const FacePipelinePackage& package);
222 void progressValueChanged(float progress);
223
225 void finished();
226
228 void skipped(const QList<ItemInfo>& skippedInfos);
229
230public:
231
232 class Private;
233
234private:
235
236 // Disable
237 explicit FacePipeline(QObject*) = delete;
238 FacePipeline(const FacePipeline&) = delete;
239 FacePipeline& operator=(const FacePipeline&) = delete;
240
241private:
242
243 Private* const d = nullptr;
244 friend class Private;
245};
246
247} // namespace Digikam
Definition dimg.h:52
Definition facepipelinepackage.h:117
Definition facepipeline_p.h:42
Definition facepipeline.h:28
void plugFaceDetector()
Definition facepipeline.cpp:109
void setAccuracyAndModel(int detectAccuracy, FaceScanSettings::FaceDetectionModel detectModel, FaceScanSettings::FaceDetectionSize detectSize, int recognizeAccuracy, FaceScanSettings::FaceRecognitionModel recognizeModel)
Definition facepipeline.cpp:420
void progressValueChanged(float progress)
void setPriority(QThread::Priority priority)
Definition facepipeline.cpp:250
void plugFacePreviewLoader()
Definition facepipeline.cpp:104
void plugRerecognizingDatabaseFilter()
Definition facepipeline.cpp:92
void plugRecognitionBenchmarker()
Definition facepipeline.cpp:167
void cancel()
Definition facepipeline.cpp:266
void shutDown()
Definition facepipeline.cpp:61
WriteMode
Definition facepipeline.h:52
@ OverwriteAllFaces
Add new results. Previous all results will be cleared.
Definition facepipeline.h:57
@ NormalWrite
Write results. Merge with existing entries.
Definition facepipeline.h:54
@ OverwriteUnconfirmed
Add new results. Previous unconfirmed results will be cleared.
Definition facepipeline.h:60
FacePipeline()
Definition facepipeline.cpp:35
void plugDetectionBenchmarker()
Definition facepipeline.cpp:162
bool hasFinished() const
Definition facepipeline.cpp:67
void plugTrainer()
Definition facepipeline.cpp:157
void scheduled()
Emitted when processing is scheduled.
FilterMode
Definition facepipeline.h:34
@ ReadUnconfirmedFaces
Will read unconfirmed faces for recognition.
Definition facepipeline.h:42
@ ScanAll
Will read any given image.
Definition facepipeline.h:36
@ ReadConfirmedFaces
Will read faces which are confirmed.
Definition facepipeline.h:48
@ ReadFacesForTraining
Will read faces marked for training.
Definition facepipeline.h:45
@ SkipAlreadyScanned
Will skip any image that is already marked as scanned.
Definition facepipeline.h:39
void construct()
Definition facepipeline.cpp:177
void remove(const ItemInfo &info, const FaceTagsIface &face)
Definition facepipeline.cpp:405
void plugParallelFaceDetectors()
Definition facepipeline.cpp:118
void plugFaceRecognizer()
Definition facepipeline.cpp:143
FaceTagsIface editRegion(const ItemInfo &info, const DImg &image, const FaceTagsIface &databaseFace, const TagRegion &newRegion)
Definition facepipeline.cpp:369
void train(const ItemInfo &info, const QList< FaceTagsIface > &faces)
Definition facepipeline.cpp:309
QThread::Priority priority() const
Definition facepipeline.cpp:261
FaceTagsIface editTag(const ItemInfo &info, const FaceTagsIface &databaseFace, int newTagId)
Definition facepipeline.cpp:388
QString benchmarkResult() const
Definition facepipeline.cpp:72
bool process(const ItemInfo &info)
Definition facepipeline.cpp:271
void processed(const FacePipelinePackage &package)
Emitted when one package has finished processing.
void plugRetrainingDatabaseFilter()
Definition facepipeline.cpp:98
void started(const QString &message)
Emitted when processing has started.
void skipped(const QList< ItemInfo > &skippedInfos)
Emitted when one or several packages were skipped, usually because they have already been scanned.
void plugDatabaseWriter(WriteMode mode)
Definition facepipeline.cpp:152
~FacePipeline() override
Definition facepipeline.cpp:44
void processing(const FacePipelinePackage &package)
Emitted when one package begins processing.
void plugDatabaseFilter(FilterMode mode)
Definition facepipeline.cpp:87
FaceTagsIface addManually(const ItemInfo &info, const DImg &image, const TagRegion &assignedRegion)
Definition facepipeline.cpp:351
void finished()
Emitted when the last package has finished processing.
void plugDatabaseEditor()
Definition facepipeline.cpp:172
FaceTagsIface confirm(const ItemInfo &info, const FaceTagsIface &face, int assignedTagId=0, const TagRegion &assignedRegion=TagRegion())
Definition facepipeline.cpp:326
FaceDetectionSize
Definition facescansettings.h:76
FaceRecognitionModel
Definition facescansettings.h:89
FaceDetectionModel
Definition facescansettings.h:65
Definition facetagsiface.h:34
Definition iteminfo.h:68
Definition tagregion.h:36
Definition datefolderview.cpp:34