3#if _MSC_VER >= 1900 && defined(_M_X64)
5#include "BackendBase.h"
13 class FL_EXPORT CTensor;
16 class FL_EXPORT CBackendMultiScaleRoIAlign :
public CBackendBase<T>
19 CBackendMultiScaleRoIAlign();
20 CBackendMultiScaleRoIAlign(
const CBackendMultiScaleRoIAlign<T>& bl);
21 virtual ~CBackendMultiScaleRoIAlign();
23 virtual const CResult MultiScaleRoIAlign(
const std::vector<CTensor<T>*>& vctTsrInput,
const std::vector<CTensor<T>*>& vctTsrBoxes, CTensor<T>* pTsrResult, int64_t i64SamplingRatio, int64_t i64OutputSizeW, int64_t i64OutputSizeH,
const std::vector<T>& vctScales,
const std::vector<std::pair<int64_t, int64_t>>& vctImageShapes, int64_t i64CanonicalScale = 224, int64_t i64CanonicalLevel = 4);
24 virtual const CResult MultiScaleRoIAlignBackward(
const std::vector<CTensor<T>*>& vctTsrInput,
const std::vector<CTensor<T>*>& vctTsrBoxes,
const CTensor<T>* pTsrDy, std::vector<CTensor<T>*>& vctTsrDx,
const std::vector<bool>& vctAddGradients, int64_t i64SamplingRatio, int64_t i64OutputSizeW, int64_t i64OutputSizeH,
const std::vector<T>& vctScales,
const std::vector<std::pair<int64_t, int64_t>>& vctImageShapes, int64_t i64CanonicalScale = 224, int64_t i64CanonicalLevel = 4);
25 virtual const CResult RoIAlignCPU(
const CTensor<T>* pTsrInput,
const CTensor<T>* pTsrBoxes, CTensor<T>* pTsrResult, T tSpatialScale, int64_t i64OutputW, int64_t i64OutputH, int64_t i64SamplingRatio,
bool bAligned);
26 virtual const CResult RoIAlign_Backward(
const CTensor<T>* pTsrX,
const CTensor<T>* pTsrDy,
const CTensor<T>* pTsrBoxes, CTensor<T>* pTsrDx, T tSpatialScale, int64_t i64OutputW, int64_t i64OutputH, int64_t i64SamplingRatio,
bool bAligned);
28 virtual const CResult RoIAlignGPU(
const CTensor<T>* pTsrInput,
const CTensor<T>* pTsrBoxes, CTensor<T>* pTsrResult, T tSpatialScale, int64_t i64OutputW, int64_t i64OutputH, int64_t i64SamplingRatio,
bool bAligned);
29 virtual const CResult RoIAlignGPU_Backward(
const CTensor<T>* pTsrX,
const CTensor<T>* pTsrDy,
const CTensor<T>* pTsrBoxes, CTensor<T>* pTsrDx, T tSpatialScale, int64_t i64OutputW, int64_t i64OutputH, int64_t i64SamplingRatio,
bool bAligned);
33 virtual const CResult CheckShape(
const std::vector<CTensor<T>*>& vctTsrInput,
const std::vector<CTensor<T>*>& vctTsrBoxes,
const std::vector<T>& vctScales,
const std::vector<std::pair<int64_t, int64_t>>& vctImageShapes);
34 virtual const CResult InitializeData(
const std::vector<CTensor<T>*>& vctTsrInput,
const std::vector<CTensor<T>*>& vctTsrBoxes,
const std::vector<T>& vctScales,
const std::vector<std::pair<int64_t, int64_t>>& vctImageShapes, int64_t i64CanonicalLevel, int64_t i64CanonicalScale, CTensor<T>& tsrResultBoxCoverted, std::vector<T>& vctResultScales, std::vector<std::vector<uint32_t>>& vctResultIndexPerLevel);
35 virtual const CResult InitializeData_GPU(
const std::vector<CTensor<T>*>& vctTsrInput,
const std::vector<CTensor<T>*>& vctTsrBoxes,
const std::vector<T>& vctScales,
const std::vector<std::pair<int64_t, int64_t>>& vctImageShapes, int64_t i64CanonicalLevel, int64_t i64CanonicalScale, CTensor<T>& tsrResultBoxCoverted, std::vector<T>& vctResultScales, std::vector<std::vector<uint32_t>>& vctResultIndexPerLevel);
37 virtual const CResult InitializeScale(
const std::vector<CTensor<T>*>& vctTsrInput,
const std::vector<CTensor<T>*>& vctTsrBoxes,
const std::vector<T>& vctScales,
const std::vector<std::pair<int64_t, int64_t>>& vctImageShapes, std::vector<T>& vctResultScales);
39 virtual const CResult MultiScaleRoIAlignGPU(
const std::vector<CTensor<T>*>& vctTsrInput,
const std::vector<CTensor<T>*>& vctTsrBoxes, CTensor<T>* pTsrResult, int64_t i64SamplingRatio, int64_t i64OutputSizeW, int64_t i64OutputSizeH,
const std::vector<T>& vctScales,
const std::vector<std::pair<int64_t, int64_t>>& vctImageShapes, int64_t i64CanonicalScale = 224, int64_t i64CanonicalLevel = 4);
40 virtual const CResult MultiScaleRoIAlignBackwardGPU(
const std::vector<CTensor<T>*>& vctTsrInput,
const std::vector<CTensor<T>*>& vctTsrBoxes,
const CTensor<T>* pTsrDy, std::vector<CTensor<T>*>& vctTsrDx,
const std::vector<bool>& vctAddGradients, int64_t i64SamplingRatio, int64_t i64OutputSizeW, int64_t i64OutputSizeH,
const std::vector<T>& vctScales,
const std::vector<std::pair<int64_t, int64_t>>& vctImageShapes, int64_t i64CanonicalScale = 224, int64_t i64CanonicalLevel = 4);
42 virtual const CResult MultiScaleRoIAlignCPU(
const std::vector<CTensor<T>*>& vctTsrInput,
const std::vector<CTensor<T>*>& vctTsrBoxes, CTensor<T>* pTsrResult, int64_t i64SamplingRatio, int64_t i64OutputSizeW, int64_t i64OutputSizeH,
const std::vector<T>& vctScales,
const std::vector<std::pair<int64_t, int64_t>>& vctImageShapes, int64_t i64CanonicalScale = 224, int64_t i64CanonicalLevel = 4);
43 virtual const CResult MultiScaleRoIAlignBackwardCPU(
const std::vector<CTensor<T>*>& vctTsrInput,
const std::vector<CTensor<T>*>& vctTsrBoxes,
const CTensor<T>* pTsrDy, std::vector<CTensor<T>*>& vctTsrDx,
const std::vector<bool>& vctAddGradients, int64_t i64SamplingRatio, int64_t i64OutputSizeW, int64_t i64OutputSizeH,
const std::vector<T>& vctScales,
const std::vector<std::pair<int64_t, int64_t>>& vctImageShapes, int64_t i64CanonicalScale = 224, int64_t i64CanonicalLevel = 4);
45 DeclareGetClassType();
46 SupportToDuplicateObjectWithoutCreateNewObject(CBackendMultiScaleRoIAlign<T>, *
this);