Face Engine SDK  4.6.0
A face detection, recognition and tracking engine.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
IIndex.h
1 #pragma once
2 
3 #include "IAsyncContext.h"
4 #include "IDescriptor.h"
5 
6 namespace fsdk {
7 
8  #ifndef DOXYGEN_SHOULD_SKIP_THIS
9  DECLARE_SMARTPTR(IStaticDescriptorStorage);
10  DECLARE_SMARTPTR(IDynamicDescriptorStorage);
11  DECLARE_SMARTPTR(IIndex);
12  DECLARE_SMARTPTR(IDenseIndex);
13  DECLARE_SMARTPTR(IDynamicIndex);
14  DECLARE_SMARTPTR(IIndexBuilder);
15  #endif
16 
18  using DescriptorId = size_t;
19 
26 
28  SearchResult() noexcept
29  : MatchingResult()
30  , index(std::numeric_limits<DescriptorId>::max())
31  {}
32 
40  float distance,
41  float similarity,
42  DescriptorId index) noexcept
44  , index(index)
45  {}
46  };
47 
63  const DescriptorId index,
64  IDescriptor* descriptor) const noexcept = 0;
65 
70  virtual uint64_t size() const noexcept = 0;
71  };
72 
90  const IDescriptor* desciptor) noexcept = 0;
91 
104  const IDescriptorBatch* batch) noexcept = 0;
105 
120  virtual Result<FSDKError> removeDescriptor(const DescriptorId index) noexcept = 0;
121  };
122 
127  struct IIndex
128  : IRefCounted {
140  const IDescriptor* reference,
141  int maxResultsCount,
142  SearchResult* results) const noexcept = 0;
143  };
144 
148  struct IDenseIndex
150  , IIndex {
151 
152  };
153 
159  , IIndex {
168  virtual Result<FSDKError> saveToDenseIndex(const char* path) const noexcept = 0;
169 
178  virtual Result<FSDKError> saveToDynamicIndex(const char* path) const noexcept = 0;
179 
193  virtual uint64_t countOfIndexedDescriptors() const noexcept = 0;
194  };
195 
205  virtual void progress(const float completion) const noexcept = 0;
206  };
207 
213  , IRefCounted {
223  const IProgressTracker* const progressTracker = nullptr) noexcept = 0;
224 
236  IAsyncContext* const asyncContext,
237  const IProgressTracker* const progressTracker = nullptr) noexcept = 0;
238  };
239 
240 
241 }
242 
#define DECLARE_SMARTPTR(X)
Smart ptr declaration helper macro.
Definition: Def.h:59
virtual Result< FSDKError > removeDescriptor(const DescriptorId index) noexcept=0
Removes descriptor out of internal storage. If used on.
virtual Result< FSDKError > saveToDenseIndex(const char *path) const noexcept=0
Saves index as dense.
Base index interface.
Definition: IIndex.h:127
Progress tracker interface.
Definition: IIndex.h:200
Result of index search.
Definition: IIndex.h:23
Descriptor batch interface.
Definition: IDescriptor.h:130
virtual ResultValue< FSDKError, Future< ResultValue< FSDKError, IDynamicIndex * > > > buildIndexAsync(IAsyncContext *const asyncContext, const IProgressTracker *const progressTracker=nullptr) noexcept=0
Builds index with every descriptor appended. Non blocking operation.
virtual uint64_t size() const noexcept=0
Return size of internal storage.
virtual uint64_t countOfIndexedDescriptors() const noexcept=0
Returns count of indexed descriptors.
Base strong reference counted object interface.
Definition: IRefCounted.h:36
Interface for running tasks asynchronously.
Definition: IAsyncContext.h:24
SearchResult() noexcept
Default constructor.
Definition: IIndex.h:28
virtual Result< FSDKError > descriptorByIndex(const DescriptorId index, IDescriptor *descriptor) const noexcept=0
Requests descriptor data out of internal storage.
Descriptor extractor and matcher interfaces.
float similarity
similarity (normalized in [0..1] range).
Definition: IDescriptor.h:37
Dynamic index interface.
Definition: IIndex.h:157
size_t DescriptorId
Intergral type used as identification of descriptor in internal storage.
Definition: IIndex.h:18
virtual Result< FSDKError > saveToDynamicIndex(const char *path) const noexcept=0
Saves index as dynamic.
Addon for Result to output some value aside the result. Specialization for copiable types...
Definition: ResultValue.h:21
MatchingResult(void) noexcept
Initializes result to default values.
Definition: IDescriptor.h:42
Async context interface.
virtual ResultValue< FSDKError, DescriptorId > appendDescriptor(const IDescriptor *desciptor) noexcept=0
Appends descriptor to internal storage. If used on.
SearchResult(float distance, float similarity, DescriptorId index) noexcept
Construct structure with parameters.
Definition: IIndex.h:39
Dense (read only) index interface.
Definition: IIndex.h:148
Result of descriptor matching.
Definition: IDescriptor.h:34
DescriptorId index
Identificator of descriptor in some storage.
Definition: IIndex.h:25
virtual ResultValue< FSDKError, int > search(const IDescriptor *reference, int maxResultsCount, SearchResult *results) const noexcept=0
Search for descriptors with the shorter distance to passed descriptor.
Descriptor interface.
Definition: IDescriptor.h:82
float distance
distance between descriptor vectors.
Definition: IDescriptor.h:36
virtual ResultValue< FSDKError, IDynamicIndex * > buildIndex(const IProgressTracker *const progressTracker=nullptr) noexcept=0
Builds index with every descriptor appended. Blocks until completed.
Dynamic descriptor storage interface.
Definition: IIndex.h:77
Index builder interface.
Definition: IIndex.h:211
virtual ResultValue< FSDKError, DescriptorId > appendBatch(const IDescriptorBatch *batch) noexcept=0
Appends batch of descriptors to internal storage. If used on.
Static descriptor storage interface.
Definition: IIndex.h:52
virtual void progress(const float completion) const noexcept=0
Function is called on some operation progress change.