FLImaging 6.5.16.1
Evaluator.h
1#pragma once
2
3#if _MSC_VER >= 1900 && defined(_M_X64)
4
5#include "ComputationalGraphObjectDetection.h"
6#include "ComputationalGraphMaskRCNN.h"
7#include "Tensor.h"
8#include <atomic>
9
10namespace FLImaging
11{
12 namespace AI
13 {
14 template <typename T>
15 class CComputationalGraph;
16
17 template <typename T>
18 class CComputationalGraphPlaceholder;
19
20 template<typename T>
21 class CBackendEvaluatorBase;
22
23 template<typename T>
24 class CBackendEvaluatorForObjectDetection;
25
26 template<typename T>
27 class CBackendEvaluatorForInstanceSegmentation;
28
29 template <typename T>
30 class FL_EXPORT CEvaluator : public CAlgorithmAIBase
31 {
32 public:
33 enum EModelType
34 {
35 EModelType_Classifier = 0,
36 EModelType_SemanticSegmentation,
37 EModelType_ObjectDetection,
38 EModelType_InstanceSegmentation,
39 EModelType_AnomalyDetection,
40 EModelType_SuperResolution,
41 };
42
43 CEvaluator();
44 CEvaluator(const CEvaluator<T>& evaluator);
45 CEvaluator(const CEvaluator<T>* pEvaluator);
46 virtual ~CEvaluator();
47
48 virtual const CResult Assign(const CEvaluator<T>& evaluator);
49 virtual const CResult Assign(const CEvaluator<T>* pEvaluator);
50
51 virtual const CResult Clear();
52
53 virtual const CResult Initialize();
54 virtual bool IsInitialized() const;
55
56 virtual const CResult SetFunction(const CComputationalGraph<T>* pCgEvaluationLayer);
57 virtual const CComputationalGraph<T>& GetFunction() const;
58
59 virtual const CResult SetGPUIndices(const std::vector<int32_t>& vctGPUIndices);
60 virtual const CResult SetGPUIndices(const Base::CFLArray<int32_t>& flaGPUIndices);
61 virtual const CResult SetGPUIndices(const Base::CFLArray<uint32_t>& flaGPUIndices);
62 virtual const std::vector<int32_t>& GetGPUIndices() const;
63
64 virtual const CResult SetModelType(EModelType eModelType = EModelType_Classifier);
65 virtual EModelType GetModelType();
66
67 virtual const CResult SetMemoryLimitRatio(double f64MemoryLimitRatio = 1.);
68 virtual double GetMemoryLimitRatio() const;
69
70 virtual const CResult Evaluate(Base::CFLArray<int32_t>* pFlaIterationFeedback = nullptr, bool* pBStopImmediatedly = nullptr, std::vector<bool>* pVctEvaluatedIndex = nullptr);
71
72 virtual const CTensor<T>* GetResultEvaluation() const;
73 virtual const std::vector<std::vector<std::vector<std::tuple<CObjectBox<float>, float, int64_t>>>>* GetResultBox() const;
74 virtual const CInstanceSegmentationResult<T>* GetInstanceSegmentationResult() const;
75 virtual int64_t GetTotalIteration() const;
76 virtual int64_t GetActualTotalBatchSize() const;
77
78 virtual const Base::CFLArray<uint32_t> GetInvolvedDeviceIndices() const;
79
80 DeclareGetClassType();
81 SupportToDuplicateAbstractObject(CEvaluator<T>);
82
83 protected:
84 virtual const CResult CopyBatchParams(bool bDifferent);
85 virtual CBackendEvaluatorBase<T>* CreateNewBackendEvaluator();
86
87 protected:
88 std::vector<int32_t>& m_vctGPUIndices;
89 std::vector<int32_t>& m_vctDeviceIndices;
90 std::vector<int32_t>& m_vctPrevDeviceIndices;
91
92 CComputationalGraph<T>* m_pCgEvaluationLayer;
93 CTensor<T> m_tsrResult;
94
95 std::vector<CComputationalGraph<T>*>& m_vctFunctions;
96
97 bool m_bGPUDevice;
98 bool m_bDifferent;
99 bool m_bInitialized;
100 int64_t m_i64InitialBatch;
101
102 int32_t m_i32DeviceCount;
103
104 int64_t m_i64ActualMiniBatchSize;
105 int64_t m_i64TotalIteration;
106 int64_t m_i64TotalIterationPerDevice;
107 int64_t m_i64TotalBatchSize;
108 int64_t m_i64CurrentIteration;
109
110 std::vector<CBackendEvaluatorBase<T>*>& m_vctEvaluator;
111 EModelType m_eModelType;
112 EModelType m_ePrevModelType;
113
114 std::vector<std::vector<std::vector<std::tuple<CObjectBox<float>, float, int64_t>>>>& m_vct3BoxResult;
115 CInstanceSegmentationResult<T> m_instanceSegmentationResult;
116
117 double m_f64MemoryLimitRatio;
118 double m_f64PrevMemoryLimitRatio;
119 private:
120 template<typename T>
121 friend class CBackendEvaluatorBase;
122
123 template<typename T>
124 friend class CBackendEvaluatorForObjectDetection;
125
126 template<typename T>
127 friend class CBackendEvaluatorForInstanceSegmentation;
128 };
129
130
131 typedef CEvaluator<float> CEvaluatorF;
132 typedef CEvaluator<double> CEvaluatorD;
133 }
134}
135
136#endif
@ Assign
Set the value of CGUIPropertyItemView3DFigure to the specified figure.
@ Clear
Clear all the figure objects.