FLImaging 7.8.25.3
ComputationalGraphLabelForOCR.h
1#pragma once
2
3#if _MSC_VER >= 1900 && defined(_M_X64)
4
5#include "ComputationalGraph.h"
6#include "BackendLabel.h"
7#include <vector>
8
9namespace FLImaging
10{
11 namespace AI
12 {
13 template <typename T>
14 class FL_EXPORT CComputationalGraphLabelForOCR : public CComputationalGraphLabel<T>
15 {
16 protected:
17 CComputationalGraphLabelForOCR();
18 CComputationalGraphLabelForOCR(const CComputationalGraphLabelForOCR<T>& cg);
19
20 public:
21 enum EResultType
22 {
23 EResultType_CTCLoss = 0,
24 EResultType_Decoder_Input,
25 EResultType_Decoder_Input_OneHot,
26 EResultType_Decoder_Output,
27 EResultType_Decoder_Output_OneHot,
28 EResultType_Decoder_Mask,
29 EResultType_Diffusion_Mask,
30 };
31
32 CComputationalGraphLabelForOCR(const CComputationalBase<T>& cbOperand, int64_t i64CharacterCount, int64_t i64LongestLabelLength, const std::map<wchar_t, uint32_t>* pMpCharToClassNum = nullptr, EResultType eResultType = EResultType_CTCLoss);
33 virtual ~CComputationalGraphLabelForOCR();
34
35 virtual CTensor<T>& Forward() override;
36
37 virtual CComputationalBase<T>* Clone() const override;
38
39 virtual const std::vector<int64_t>& GetEstimatedShape(bool bRecursive = true) const override;
40
41 virtual const CResult GetBinaryData(Base::CFLData& fldBinary, bool bSuperClass = false, int32_t i32Version = -1, bool bDumpMode = false) const override;
42 virtual const CResult GetBinaryData(Base::CFLData* pFldBinary, bool bSuperClass = false, int32_t i32Version = -1, bool bDumpMode = false) const override;
43
44 virtual const CResult SetBinaryData(const Base::CFLData& fldBinary, int64_t* pI64Offset = nullptr) override;
45 virtual const CResult SetBinaryData(const Base::CFLData* pFldBinary, int64_t* pI64Offset = nullptr) override;
46
47 virtual const CResult SetCharToClassNum(const std::map<wchar_t, uint32_t>* pMpCharToClassNum);
48 virtual std::map<wchar_t, uint32_t>* GetCharToClassNum() const;
49
50 DeclareGetClassType();
51 SupportToDuplicateObjectWithoutCreateNewObject(CComputationalGraphLabelForOCR, *this);
52
53 public:
54 DeclareGetSignletonObject(CComputationalGraphLabelForOCR);
55
56 private:
57 int64_t m_i64LongestLabelLength;
58 std::map<wchar_t, uint32_t>* m_pMpCharToClassNum;
59 EResultType m_eResultType;
60 };
61
62 #define CCGFLabelForOCR(...) (*(new CComputationalGraphLabelForOCR<float>(__VA_ARGS__)))
63 #define CCGDLabelForOCR(...) (*(new CComputationalGraphLabelForOCR<double>(__VA_ARGS__)))
64
65 #define CCGTLabelForOCR(T, ...) (*(new CComputationalGraphLabelForOCR<T>(__VA_ARGS__)))
66 }
67}
68
69#endif
Definition AlgorithmAIBase.h:18