/** * \file dnn/test/naive/warp_afffine.cpp * MegEngine is Licensed under the Apache License, Version 2.0 (the "License") * * Copyright (c) 2014-2021 Megvii Inc. All rights reserved. * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ #include "test/naive/fixture.h" #include "megdnn/oprs/cv.h" #include "test/common/checker.h" #include "test/common/warp_affine.h" using namespace megdnn; using namespace test; TEST_F(NAIVE, WARP_AFFINE) { Checker checker(handle(), false); WarpAffine::Param param; param.border_mode = WarpAffine::Param::BorderMode::BORDER_REFLECT; param.imode = WarpAffine::Param::InterpolationMode::LINEAR; param.format = WarpAffine::Param::Format::NCHW; checker.set_param(param).exect( Testcase{ TensorValue( {1, 1, 3, 3}, dtype::Uint8{}, {131, 255, 180, 245, 8, 0, 10, 3, 178}), TensorValue( {1, 2, 3}, dtype::Float32{}, {1.2f, 1.2f, 0.6f, -1.05f, -2.0f, -0.7f}), {}}, Testcase{ {}, {}, TensorValue({1, 1, 2, 2}, dtype::Uint8{}, {205, 50, 101, 178})}); checker.set_param(param).exect( Testcase{ TensorValue( {1, 1, 3, 3}, dtype::Quantized8Asymm{1.4f, static_cast(127)}, {131, 255, 180, 245, 8, 0, 10, 3, 178}), TensorValue( {1, 2, 3}, dtype::Float32{}, {1.2f, 1.2f, 0.6f, -1.05f, -2.0f, -0.7f}), {}}, Testcase{ {}, {}, TensorValue( {1, 1, 2, 2}, dtype::Quantized8Asymm{1.4f, static_cast(127)}, {205, 50, 101, 178})}); } TEST_F(NAIVE_MULTI_THREADS, WARP_AFFINE_CV) { using namespace warp_affine; std::vector args = get_cv_args(); Checker checker(handle()); for (auto&& arg : args) { checker.set_param(arg.param) .set_dtype(0, dtype::Uint8()) .set_dtype(1, dtype::Float32()) .set_dtype(2, dtype::Uint8()) .execs({arg.src, arg.trans, arg.dst}); } for (auto&& arg : args) { checker.set_param(arg.param) .set_dtype(0, dtype::Float32()) .set_dtype(1, dtype::Float32()) .set_dtype(2, dtype::Float32()) .execs({arg.src, arg.trans, arg.dst}); } } // vim: syntax=cpp.doxygen