// // CropAndResizeTest.cpp // MNNTests // // Created by MNN on 2021/03/11. // Copyright © 2018, Alibaba Group Holding Limited // #include #include #include #include #include #define MNN_OPEN_TIME_TRACE #include #include "MNNTestSuite.h" #include "TestUtils.h" using namespace MNN::Express; #define BATCH 8 #define DEPTH 4 #define WIDTH 720 #define HEIGHT 720 #define TIME 10 class GridSampleSpeed : public MNNTestCase { public: virtual ~GridSampleSpeed() = default; virtual bool run(int precision) { const int batch = BATCH; const int inHeight = HEIGHT; const int inWidth = WIDTH; const int outHeight = HEIGHT; const int outWidth = WIDTH; const int depth = DEPTH; auto input = _Input({batch, depth, inHeight, inWidth}, NCHW); auto grid = _Input({batch, outHeight, outWidth, 2}, NHWC); std::vector modes({BILINEAR}); std::vector paddingModes({GRID_SAMPLE_PADDING_ZEROS}); std::vector alignCornersVec({false}); std::vector expectedOutput(batch * outHeight * outWidth * depth); for (auto mode : modes) { std::string modeStr = mode == BILINEAR ? "bilinear" : "nearest"; for (auto paddingMode : paddingModes) { std::string paddingModeStr = paddingMode == GRID_SAMPLE_PADDING_ZEROS ? "zeros" : (paddingMode == GRID_SAMPLE_PADDING_BORDER ? "border" : "reflection"); for (auto alignCorners : alignCornersVec) { std::string alignCornersStr = alignCorners ? "true" : "false"; // grid->unMap(); // input->unMap(); // input = _Convert(input, NC4HW4); auto output = _GridSample(input, grid, mode, paddingMode, alignCorners); MNN_PRINT("Test GridSample for NCHW (%d, %d, %d, %d) x %d with setting %s %s %s \n", BATCH, DEPTH, HEIGHT, WIDTH, TIME, modeStr.c_str(), paddingModeStr.c_str(), alignCornersStr.c_str()); { AUTOTIME; for (int i = 0; i < TIME; ++i) { auto inputPtr = input->writeMap(); auto gridPtr = grid->writeMap(); output->readMap(); } } } } } return true; } }; MNNTestSuiteRegister(GridSampleSpeed, "speed/GridSample");