3#if _MSC_VER >= 1900 && defined(_M_X64)
5#include "ValidatorBase.h"
18 int64_t i64UniqueTruthIndex;
29 class CPrecisionRecall
44 class FL_EXPORT CValidatorForObjectDetection :
public CValidatorBase<T>
54 ETruthLabelMode_Rect = 0,
55 ETruthLabelMode_Angle,
56 ETruthLabelMode_MERAngle,
60 CValidatorForObjectDetection();
61 CValidatorForObjectDetection(
const CValidatorForObjectDetection<T>& validator);
62 CValidatorForObjectDetection(
const CValidatorForObjectDetection<T>* pValidator);
63 virtual ~CValidatorForObjectDetection();
65 const CValidatorForObjectDetection<T>& operator=(
const CValidatorForObjectDetection<T>& validator);
67 virtual const CResult
Assign(
const CValidatorForObjectDetection<T>& validator);
68 virtual const CResult
Assign(
const CValidatorForObjectDetection<T>* pValidator);
70 virtual const CResult
Clear()
override;
71 virtual const CResult ClearResultBox();
73 virtual const CResult SetNumOfClasses(int64_t i64ClassCount);
74 virtual int64_t GetNumOfClasses()
const;
76 virtual const CResult SetNonMaximumSuppressionType(ENonMaximumSuppressionType eNMS = ENonMaximumSuppressionType_Greedy);
77 virtual ENonMaximumSuppressionType GetNonMaximumSuppressionType()
const;
78 virtual const CResult SetBetaNMS(T tBetaNMS = .6);
79 virtual T GetBetaNMS()
const;
80 virtual const CResult SetNMSIoUThreshold(T tNMSIoUThreshold = 0.45);
81 virtual T GetNMSIoUThreshold()
const;
82 virtual const CResult SetObjectnessThreshold(T tObjectnessThreshold = .005);
83 virtual T GetObjectnessThreshold()
const;
85 virtual const CResult SetIoUThreshold(T tIoUThreshold = .5);
86 virtual T GetIoUThreshold()
const;
87 virtual const CResult SetAverageIoUThreshold(T tCalcAvgIoUThreshold = .25);
88 virtual T GetAverageIoUThreshold()
const;
90 virtual const CResult SetRealClassIdToValidClassId(
const std::vector<int64_t>& vctRealClassId);
91 virtual const CResult GetRealClassIdToValidClassId(std::vector<int64_t>& vctRealClassId);
93 virtual const std::vector<std::vector<std::vector<std::tuple<CObjectBox<T>, T, int64_t>>>>* GetResultBox()
const;
95 virtual T Validate(int32_t* pI32IterationFeedback =
nullptr)
override;
97 static T CalculateMap(std::vector<CDetectionInfo<T>>& vctDetectionInfo,
const int64_t* pI64TruthClassesCount, int64_t i64UniqueTruthCount, int64_t i64ClassCount, std::vector<T>& vctResultPrecisionPerClass, std::vector<T>& vctResultRecallPerClass, std::vector<T>& vctResultAPClass);
99 static const CResult CalculateEvaluation(
const std::vector<CDetectionInfo<T>>& vctDetectionInfo,
const int64_t* pI64TruthClassesCount, int64_t i64UniqueTruthCount, int64_t i64ClassCount, Base::CFLArray<uint8_t>& flaResultCorrectness, Base::CFLArray<double>& flaResultIoU, Base::CFLArray<int64_t>& flaFalseNegativeTargetIndexes);
101 static const CResult MakeDetectionInfo(
const Foundation::CFLFigureArray& flfa2Figure,
const Base::CFLArray<Base::CFLArray<int32_t>>& fla2ClassNum,
const Base::CFLArray<Base::CFLArray<double>>& fla2Score,
const Foundation::CFLFigureArray& flfa2Target, int64_t i64TotalClass, T tIoUThrehsold, std::vector<CDetectionInfo<T>>& vctResultDetectionInfoFlatten, std::vector<int64_t>& vctResultTruthClassesCountFlatten, int64_t& i64ResultUniqueTruthTotal);
103 virtual const CResult SetTruthLabelMode(ETruthLabelMode eTruthLabelMode);
104 virtual ETruthLabelMode GetTruthLabelModel()
const;
106 virtual const CResult SetModel(EModel eModel);
107 virtual EModel GetModel()
const;
109 virtual const CResult EnableIOUThresholdUpdate(
bool bIOUThresholdUpdate =
true);
110 virtual bool IsIOUThresholdUpdateEnabled()
const;
112 virtual const CResult EnableAngleReflection(
bool bAngleReflection =
false);
113 virtual bool IsAngleReflectionEnabled()
const;
115 virtual const CResult EnableSingleLabel(
bool bSingleLabel);
116 virtual bool IsSingleLabelEnable()
const;
118 virtual const std::vector<T>& GetRecallPerClass()
const;
119 virtual const std::vector<T>& GetPrecisionPerClass()
const;
120 virtual const std::vector<T>& GetAPPerClass()
const;
122 virtual const int64_t* GetTruthClassesCount()
const;
123 virtual const std::vector< CDetectionInfo<T>>& GetDetectionInstances();
124 virtual int64_t GetUniqueTruthCount()
const;
126 DeclareGetClassType();
127 SupportToDuplicateObject(CValidatorForObjectDetection<T>, *
this);
130 virtual const CResult ResetComputationPerClass();
131 virtual const CResult SetModelParams();
132 virtual const CResult SetModelParams(
const Base::CFLData& fldData);
133 virtual const CResult BackupModelParams(Base::CFLData& fldData);
135 std::vector<int64_t>& m_vctRealClassIdToValidClassId;
137 ENonMaximumSuppressionType m_eValidationNMS;
138 T m_tValidationBetaNMS;
139 T m_tValidationNMSIoUThreshold;
140 T m_tValidationObjectnessThreshold;
142 T m_tValidationIoUThreshold;
143 T m_tValidationCalcAvgIoUThreshold;
146 int64_t m_i64TruthLabelSize;
149 int64_t m_i64ClassCount;
150 int64_t* m_pI64TruthClassesCount;
151 int64_t* m_pI64TPForThresholdPerClass;
152 int64_t* m_pI64FPForThresholdPerClass;
153 int64_t m_i64UniqueTruthCount;
154 T* m_pTAvgIoUPerClass;
157 ETruthLabelMode m_eTruthLabelMode;
159 bool m_bIOUThresholdUpdate;
160 bool m_bAngleReflection;
162 std::vector<std::vector<std::vector<std::tuple<CObjectBox<T>, T, int64_t>>>>& m_vct3BoxResult;
164 std::vector<T>& m_vctPrecisionPerClass;
165 std::vector<T>& m_vctRecallPerClass;
166 std::vector<T>& m_vctAPPerClass;
167 std::vector<CDetectionInfo<T>>& m_vctDetectionInstances;
171 typedef CValidatorForObjectDetection<float> CValidatorForObjectDetectionF;
172 typedef CValidatorForObjectDetection<double> CValidatorForObjectDetectionD;
Definition AlgorithmAIBase.h:18
@ Assign
CGUIPropertyItemView3DFigure 의 값을 해당 도형으로 설정하는 함수
Definition DefinitionsGUIView3D.h:2930
@ Clear
도형 정리 메뉴
Definition DefinitionsGUI.h:2110