3#if _MSC_VER >= 1900 && defined(_M_X64)
6#include "DefinitionsAI.h"
24 class FL_EXPORT CValidationImageExtractor;
28 class CClassEqualizerBase;
31 class CClassEqualizerForTensorImages;
34 class CClassEqualizerForTensorImagesWithMaskLabels;
37 class FL_EXPORT CTensorImages :
public CTensor<T>
51 CTensorImages(
const CTensorImages<T>& tsr,
bool bDeepCopy =
true);
53 virtual ~CTensorImages();
55 virtual const CResult GetBinaryData(Base::CFLData& fldBinary,
bool bSuperClass =
false, int32_t i32Version = -1,
bool bDumpMode =
false)
const override;
56 virtual const CResult GetBinaryData(Base::CFLData* pFldBinary,
bool bSuperClass =
false, int32_t i32Version = -1,
bool bDumpMode =
false)
const override;
58 virtual const CResult SetBinaryData(
const Base::CFLData& fldBinary, int64_t* pI64Offset =
nullptr)
override;
59 virtual const CResult SetBinaryData(
const Base::CFLData* pFldBinary, int64_t* pI64Offset =
nullptr)
override;
61 virtual const CResult Create(
const std::vector<int64_t>& vctShape,
bool bOrderByDesc =
true,
bool bCudaAllocation =
true)
override;
62 virtual const CResult Create(
const std::initializer_list<int64_t>& ilShape,
bool bOrderByDesc =
true,
bool bCudaAllocation =
true)
override;
63 virtual const CResult Create(
const Base::CFLImage& fli,
bool bNormalize =
true, std::atomic<int32_t>* pI32CurrentPreparingTensorIndex =
nullptr,
bool* pBAbort =
nullptr);
64 virtual const CResult Create(
const Base::CFLImage* pFli,
bool bNormalize =
true, std::atomic<int32_t>* pI32CurrentPreparingTensorIndex =
nullptr,
bool* pBAbort =
nullptr);
65 virtual const CResult Create(
const Base::CFLImage* pFli,
const std::vector<int64_t>& vctNewSize, EResizeMethod eResizeMethod = EResizeMethod_ScaleAllAxises,
bool bROIExtraction =
false,
bool bNormalize =
true,
const Base::CMultiVar<T>& mvBlankColor = 0., ImageProcessing::EInterpolationMethod eInterpolationMethod = ImageProcessing::EInterpolationMethod_Bilinear, ETilingMode eTilingMode = ETilingMode_NoTiling_Fit,
double f64PreScaleRatio = 1., std::atomic<int32_t>* pI32CurrentPreparingTensorIndex =
nullptr,
bool* pBAbort =
nullptr);
66 virtual const CResult Create(
const Base::CFLImage& fli,
const std::vector<int64_t>& vctNewSize, EResizeMethod eResizeMethod = EResizeMethod_ScaleAllAxises,
bool bROIExtraction =
false,
bool bNormalize =
true,
const Base::CMultiVar<T>& mvBlankColor = 0., ImageProcessing::EInterpolationMethod eInterpolationMethod = ImageProcessing::EInterpolationMethod_Bilinear, ETilingMode eTilingMode = ETilingMode_NoTiling_Fit,
double f64PreScaleRatio = 1., std::atomic<int32_t>* pI32CurrentPreparingTensorIndex =
nullptr,
bool* pBAbort =
nullptr);
67 virtual const CResult Create(
const Base::CFLImage* pFli,
const std::initializer_list<int64_t>& ilNewSize, EResizeMethod eResizeMethod = EResizeMethod_ScaleAllAxises,
bool bROIExtraction =
false,
bool bNormalize =
true,
const Base::CMultiVar<T>& mvBlankColor = 0., ImageProcessing::EInterpolationMethod eInterpolationMethod = ImageProcessing::EInterpolationMethod_Bilinear, ETilingMode eTilingMode = ETilingMode_NoTiling_Fit,
double f64PreScaleRatio = 1., std::atomic<int32_t>* pI32CurrentPreparingTensorIndex =
nullptr,
bool* pBAbort =
nullptr);
68 virtual const CResult Create(
const Base::CFLImage& fli,
const std::initializer_list<int64_t>& ilNewSize, EResizeMethod eResizeMethod = EResizeMethod_ScaleAllAxises,
bool bROIExtraction =
false,
bool bNormalize =
true,
const Base::CMultiVar<T>& mvBlankColor = 0., ImageProcessing::EInterpolationMethod eInterpolationMethod = ImageProcessing::EInterpolationMethod_Bilinear, ETilingMode eTilingMode = ETilingMode_NoTiling_Fit,
double f64PreScaleRatio = 1., std::atomic<int32_t>* pI32CurrentPreparingTensorIndex =
nullptr,
bool* pBAbort =
nullptr);
71 virtual const CResult Create(
const wchar_t* pWcFilePath,
const std::vector<int64_t>& vctNewSize, EResizeMethod eResizeMethod = EResizeMethod_ScaleAllAxises,
bool bROIExtraction =
false,
bool bNormalize =
true,
const Base::CMultiVar<T>& mvBlankColor = 0.,
bool bRecursive =
false, ImageProcessing::EInterpolationMethod eInterpolationMethod = ImageProcessing::EInterpolationMethod_Bilinear, ETilingMode eTilingMode = ETilingMode_NoTiling_Fit,
double f64PreScaleRatio = 1.);
72 virtual const CResult Create(
const wchar_t* pWcFilePath,
const std::initializer_list<int64_t>& ilNewSize, EResizeMethod eResizeMethod = EResizeMethod_ScaleAllAxises,
bool bROIExtraction =
false,
bool bNormalize =
true,
const Base::CMultiVar<T>& mvBlankColor = 0.,
bool bRecursive =
false, ImageProcessing::EInterpolationMethod eInterpolationMethod = ImageProcessing::EInterpolationMethod_Bilinear, ETilingMode eTilingMode = ETilingMode_NoTiling_Fit,
double f64PreScaleRatio = 1.);
74 virtual const CResult
Assign(
const CTensor<T>& tsr,
bool bDeepCopy =
true)
override;
75 virtual const CResult
Assign(
const CTensor<T>* pTsr,
bool bDeepCopy =
true)
override;
77 virtual const CResult
Assign(
const CTensorImages<T>& tsr,
bool bDeepCopy =
true);
78 virtual const CResult
Assign(
const CTensorImages<T>* pTsr,
bool bDeepCopy =
true);
80 virtual const CResult
Append(
const Base::CFLImage* pFli, EResizeMethod eResizeMethod = EResizeMethod_ScaleAllAxises,
bool bROIExtraction =
false,
bool bNormalize =
true,
const Base::CMultiVar<T>& mvBlankColor = 0., ImageProcessing::EInterpolationMethod eInterpolationMethod = ImageProcessing::EInterpolationMethod_Bilinear, ETilingMode eTIlingMode = ETilingMode_NoTiling_Fit,
double f64PreScaleRatio = 1., std::atomic<int32_t>* pI32CurrentPreparingTensorIndex =
nullptr,
bool* pBAbort =
nullptr);
81 virtual const CResult
Append(
const Base::CFLImage& fli, EResizeMethod eResizeMethod = EResizeMethod_ScaleAllAxises,
bool bROIExtraction =
false,
bool bNormalize =
true,
const Base::CMultiVar<T>& mvBlankColor = 0., ImageProcessing::EInterpolationMethod eInterpolationMethod = ImageProcessing::EInterpolationMethod_Bilinear, ETilingMode eTIlingMode = ETilingMode_NoTiling_Fit,
double f64PreScaleRatio = 1., std::atomic<int32_t>* pI32CurrentPreparingTensorIndex =
nullptr,
bool* pBAbort =
nullptr);
83 virtual const CResult
Append(
const wchar_t* pWcFilePath,
bool bRecursive =
false);
85 virtual const CResult
Clear()
override;
87 virtual const CResult SetSourceImage(
const Base::CFLImage& fliSourceImage);
88 virtual const CResult SetSourceImage(
const Base::CFLImage* pFliSourceImage);
89 virtual const Base::CFLImage* GetSourceImage()
const;
91 virtual const CResult SetSourceImagePath(
const wchar_t* pWcsSourceImagePath);
92 virtual const wchar_t* GetSourceImagePath()
const;
94 virtual const CResult EnableRecursiveLoad(
bool bRecursive);
95 virtual bool IsRecursiveLoadEnabled()
const;
97 virtual const CResult SetTensorShape(
const std::vector<int64_t>& vctTensorShape);
98 virtual const CResult SetTensorShape(
const std::initializer_list<int64_t>& ilTensorShape);
99 virtual const std::vector<int64_t> GetTensorShape()
const;
101 virtual const CResult SetResizeMethod(EResizeMethod eResizeMethod = EResizeMethod_ScaleAllAxises);
104 virtual const CResult EnableROIExtraction(
bool bROIExtraction =
false);
105 virtual bool IsROIExtractionEnabled()
const;
107 virtual const CResult EnableNormalization(
bool bNormalize =
true);
108 virtual bool IsNormalizationEnabled()
const;
110 virtual const CResult SetBlankColor(
const Base::CMultiVar<T>& mvBlankColor = 0.);
111 virtual const Base::CMultiVar<T> GetBlankColor()
const;
113 virtual const CResult SetInterpolationMethod(ImageProcessing::EInterpolationMethod eInterpolationMethod = ImageProcessing::EInterpolationMethod_Bilinear);
114 virtual ImageProcessing::EInterpolationMethod GetInterpolationMethod()
const;
116 virtual const CResult SetPreImageScaleRatio(
double f64PreScaleRatio = 1.);
117 virtual double GetPreImageScaleRatio()
const;
119 virtual const CResult Initialize();
121 virtual const CResult EnableTrainingMode(
bool bMode,
bool bRecursively =
true)
override;
123 virtual const CResult ClearBatchFromMemory();
124 virtual const CResult ClearBatchIndices();
125 virtual const CResult SelectBatchIndices(
const std::vector<int64_t>& vctBatchIndices);
126 virtual const CResult GelectBatchIndices(std::vector<int64_t>& vctBatchIndices);
127 virtual const CResult SetBatchParameters(
const CTensor<T>& tsr)
override;
128 virtual const CResult SetBatchParameters(
const CTensorImages<T>& tsr);
130 virtual const CResult GetAccumulateSliceCount(std::vector<int64_t>& vctAccumulateSliceCount);
132 virtual CTensorImages<T>& Evaluate()
override;
133 virtual CTensorImages<T>& Forward()
override;
134 virtual CComputationalBase<T>* Clone()
const override;
136 virtual const CResult Swap(CComputationalBase<T>& cbSwap)
override;
138 virtual int64_t GetBatchSize()
const;
140 virtual const CResult LoadTensor(
const std::vector<int64_t>& vctBatchIndices);
141 virtual const CResult LoadTensor(
const std::initializer_list<int64_t>& ilBatchIndices);
143 virtual int64_t GetTensorImageTotalROIPageCount()
const;
144 virtual int64_t GetTensorImageTotalPageCount()
const;
145 virtual const CResult GetTensorImageFileSize(std::vector<std::pair<int64_t, int64_t>>& vctFileSize);
146 virtual bool IsCreatedWithImagePath()
const;
148 virtual int32_t GetResultLabelCategoryCount()
const;
149 virtual const CResult GetResultLabelCategoryClassNum(int64_t i64Index, int32_t& i32ClassNum)
const;
150 virtual const CResult GetResultLabelCategoryClassNum(int64_t i64Index, int32_t* pI32ClassNum)
const;
151 virtual const CResult GetResultLabelCategoryClassNames(int64_t i64Index, Base::CFLArray<Base::CFLString<wchar_t>>& flaClassNames)
const;
152 virtual const CResult GetResultLabelCategoryClassNames(int64_t i64Index, Base::CFLArray<Base::CFLString<wchar_t>>* pFlaClassNames)
const;
154 virtual const CResult ConvertClassNumToLabel(
bool bIncludingClassName =
true);
155 virtual const CResult ConvertLabelToClassNum(
bool bIncludingClassName =
true);
157 virtual const std::vector<int32_t>& GetLabelIndices(int64_t i64Index)
const;
159 virtual const CResult AddDefaultClass(int32_t i32ClassNum,
const Base::CFLString<wchar_t>& flsClassName);
160 virtual const CResult ClearDefaultClass();
161 virtual const CResult RemoveDefaultClass(int32_t i32ClassNum);
162 virtual const CResult RemoveDefaultClass(
const Base::CFLString<wchar_t>& flsClassName);
164 virtual const Base::CFLArray<int32_t> GetDefaultClassNum()
const;
165 virtual const Base::CFLArray<Base::CFLString<wchar_t>> GetDefaultClassName()
const;
167 virtual int64_t GetTensorImageTotalLabelCount()
const;
169 virtual const CResult EnableLog(
bool bLog =
true);
170 virtual bool IsLogEnabled()
const;
172 virtual const CResult SetClassNames(
const Base::CFLArray<Base::CFLString<wchar_t>>& flaClassNames);
173 virtual const CResult SetClassNames(
const Base::CFLArray<Base::CFLString<wchar_t>>* pFlaClassNames);
174 virtual const CResult AddClassNames(
const Base::CFLString<wchar_t>& flsClassName);
176 virtual const Base::CFLArray<Base::CFLString<wchar_t>> GetClassNames()
const;
177 virtual const CResult ClearClassNames();
179 virtual const CResult SetTilingMode(ETilingMode eImageTilingMode = ETilingMode_NoTiling_Fit);
182 static EImageType GetExtenstion(
const wchar_t* pWcsImagePath);
183 static const CResult ExtractClassNumClassName(
const Base::CFLString<wchar_t>& flsFigureName, Base::CFLString<wchar_t>& flsClassNum, Base::CFLString<wchar_t>& flsClassName);
185 virtual const CResult EnableNoLabelMode(
bool bNoLabelMode =
false);
186 virtual bool IsNoLabelModeEnable();
188 virtual const CResult SetTilingOverlapRatio(T tTilingOverlapRatio);
189 virtual T GetTilingOverlapRatio()
const;
191 virtual const CResult GetTilingInitializedData(std::vector<int64_t>& vctResultSliceSize, std::vector<int64_t>& vctResultLastSlicePositionX, std::vector<int64_t>& vctResultLastSlicePositionY, std::vector<int64_t>& vctResultSliceRowCount, std::vector<int64_t>& vctResultSliceColCount);
193 DeclareGetClassType();
194 SupportToDuplicateObject(CTensorImages, *
this);
196 virtual const CResult ApplyDefaultLabels();
197 virtual const CResult DecodeLabels(
const wchar_t* pWcsImagePath, Base::CFLImage* pFli =
nullptr);
198 virtual const CResult ExtractLabelInfo(
const wchar_t* pWcsName, int32_t i32PageIndex, int32_t i32FigureIndex);
199 virtual const CResult AddLabel(
const wchar_t* pWcsName, Foundation::CFLFigure* pFlfLabel,
bool bFile =
false);
200 virtual const CResult AddLabel(std::pair<int32_t, Base::CFLString<wchar_t>>& prLabelInfo);
201 virtual int32_t GetClassNameOffset(int32_t i32ClassNum, Base::CFLString<wchar_t>& flsName,
bool bRemoveSeparator =
true)
const;
203 virtual bool IsValidLabel(
const wchar_t* pWcsLabel)
const;
204 virtual const CResult RemoveExtension(
const wchar_t* pWcsName, Base::CFLString<wchar_t>& flsNewName);
205 virtual const CResult MakeDistribution();
207 virtual const CResult IsValidImageFormat(EImageType eImageType)
const;
209 virtual const CResult InitializeTilingData(int64_t i64ModelSize,
bool bClear =
true);
210 virtual const CResult ExtractTilingRegion(
const std::vector<int64_t>& vctBatchIndices,
const Base::CFLImage* pFliSrc, Base::CFLImage* pFliDst);
213 Foundation::CFLFigureArray m_flfaLabels;
214 Foundation::CFLFigureArray m_flfaObjectRegions;
215 CLabelData& m_ldLabels;
217 std::vector<Base::CFLString<wchar_t>>& m_vctFileList;
218 std::vector<int64_t>& m_vctPageCount;
219 std::vector<int64_t>& m_vctCumulativePageCount;
220 std::vector<int64_t>& m_vctBatchIndices;
222 std::vector<int64_t>& m_vctImageSize;
225 bool m_bROIExtraction;
227 Base::CMultiVar<T> m_mvBlankColor;
228 ImageProcessing::EInterpolationMethod m_eInterpolationMethod;
230 Base::CFLArray<int32_t> m_flaDefaultClassNum;
231 Base::CFLArray<Base::CFLString<wchar_t>> m_flaDefaultClassName;
233 std::vector<std::tuple<int32_t, int32_t>>& m_vctPage;
234 std::vector<std::vector<std::pair<int32_t, Base::CFLString<wchar_t>>>>& m_vct2LabelInfo;
236 int64_t m_i64TotalPageCount;
237 int64_t m_i64TotalLabelCount;
238 bool m_bCreatedWithImagePath;
241 bool m_bClearFigures;
243 bool m_bClearParameters;
244 bool m_bClearClassName;
247 Base::CFLImage* m_pFliSourceImage;
248 const wchar_t* m_pWcsSourceImagePath;
251 std::vector<int64_t>& m_vctTensorShape;
252 int64_t m_i64BatchSize;
255 Base::CFLArray<Base::CFLString<wchar_t>> m_flaClassNames;
259 double m_f64PreScaleRatio;
260 std::vector<int64_t>& m_vctSliceSize;
261 std::vector<int64_t>& m_vctLastSlicePositionX;
262 std::vector<int64_t>& m_vctLastSlicePositionY;
263 std::vector<int64_t>& m_vctSliceRowCount;
264 std::vector<int64_t>& m_vctSliceColCount;
265 std::vector<int64_t>& m_vctAccumulateSliceCount;
266 std::vector<std::pair<int64_t, int64_t>>& m_vctFileSize;
267 T m_tTilingOverlapRatio;
272 friend class CValidationImageExtractor;
275 friend class CClassEqualizerBase;
278 friend class CClassEqualizerForTensorImages;
281 friend class CClassEqualizerForTensorImagesWithMaskLabels;
284 DeclareGetSignletonObject(CTensorImages);
287 #define CCGFTensorImages(...) (*(new CTensorImages<float>(__VA_ARGS__)))
288 #define CCGDTensorImages(...) (*(new CTensorImages<double>(__VA_ARGS__)))
290 typedef CTensorImages<float> CTensorImagesF;
291 typedef CTensorImages<double> CTensorImagesD;
Definition AlgorithmAIBase.h:18
ETilingMode
Definition DefinitionsAIModel.h:75
@ ETilingMode_BothAxesTiling_NoFit
Definition DefinitionsAIModel.h:95
@ ETilingMode_NoTiling_NoFit
Definition DefinitionsAIModel.h:80
@ ETilingMode_NoTiling_Fit
Definition DefinitionsAIModel.h:85
@ ETilingMode_SingleAxisTiling_ProportionalFit
Definition DefinitionsAIModel.h:90
EResizeMethod
Definition DefinitionsImgProcBase.h:213
@ Assign
CGUIPropertyItemView3DFigure 의 값을 해당 도형으로 설정하는 함수
Definition DefinitionsGUIView3D.h:2930
@ Clear
도형 정리 메뉴
Definition DefinitionsGUI.h:2110
@ Append
추가
Definition DefinitionsGUI.h:58