/** * Copyright 2020-2021 Huawei Technologies Co., Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "common/common.h" #include "include/api/types.h" #include "minddata/dataset/core/de_tensor.h" #include "minddata/dataset/include/dataset/audio.h" #include "minddata/dataset/include/dataset/execute.h" #include "minddata/dataset/include/dataset/transforms.h" #include "minddata/dataset/include/dataset/audio.h" #include "minddata/dataset/include/dataset/vision.h" #include "minddata/dataset/include/dataset/audio.h" #include "minddata/dataset/include/dataset/text.h" #include "utils/log_adapter.h" using namespace mindspore::dataset; using mindspore::LogStream; using mindspore::ExceptionType::NoExceptionType; using mindspore::MsLogLevel::INFO; class MindDataTestExecute : public UT::DatasetOpTesting { protected: }; TEST_F(MindDataTestExecute, TestAllpassBiquadWithEager) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestAllpassBiquadWithEager."; // Original waveform std::vector labels = { 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02, 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02, 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02, 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02, 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03}; std::shared_ptr input; ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input)); auto input_02 = mindspore::MSTensor(std::make_shared(input)); std::shared_ptr allpass_biquad_01 = std::make_shared(44100, 200); mindspore::dataset::Execute Transform01({allpass_biquad_01}); // Filtered waveform by allpassbiquad Status s01 = Transform01(input_02, &input_02); EXPECT_TRUE(s01.IsOk()); } TEST_F(MindDataTestExecute, TestAllpassBiquadWithWrongArg) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestAllpassBiquadWithWrongArg."; std::vector labels = { 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02, 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02, 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02, 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02, 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03}; std::shared_ptr input; ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input)); auto input_02 = mindspore::MSTensor(std::make_shared(input)); // Check Q MS_LOG(INFO) << "Q is zero."; std::shared_ptr allpass_biquad_op = std::make_shared(44100, 200, 0); mindspore::dataset::Execute Transform01({allpass_biquad_op}); Status s01 = Transform01(input_02, &input_02); EXPECT_FALSE(s01.IsOk()); } TEST_F(MindDataTestExecute, TestAdjustGammaEager3Channel) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestAdjustGammaEager3Channel."; // Read images auto image = ReadFileToTensor("data/dataset/apple.jpg"); // Transform params auto decode = vision::Decode(); auto adjust_gamma_op = vision::AdjustGamma(0.1, 1.0); auto transform = Execute({decode, adjust_gamma_op}); Status rc = transform(image, &image); EXPECT_EQ(rc, Status::OK()); } TEST_F(MindDataTestExecute, TestAdjustGammaEager1Channel) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestAdjustGammaEager1Channel."; auto m1 = ReadFileToTensor("data/dataset/apple.jpg"); // Transform params auto decode = vision::Decode(); auto rgb2gray = vision::RGB2GRAY(); auto adjust_gamma_op = vision::AdjustGamma(0.1, 1.0); auto transform = Execute({decode, rgb2gray, adjust_gamma_op}); Status rc = transform(m1, &m1); EXPECT_EQ(rc, Status::OK()); } TEST_F(MindDataTestExecute, TestAmplitudeToDB) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestAmplitudeToDB."; // Original waveform std::vector labels = { 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02, 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02, 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02, 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02, 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03, 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03}; std::shared_ptr input; ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 2, 2, 3}), &input)); auto input_ms = mindspore::MSTensor(std::make_shared(input)); std::shared_ptr amplitude_to_db_op = std::make_shared(); // apply amplitude_to_db mindspore::dataset::Execute trans({amplitude_to_db_op}); Status status = trans(input_ms, &input_ms); EXPECT_TRUE(status.IsOk()); } TEST_F(MindDataTestExecute, TestAmplitudeToDBWrongArgs) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestAmplitudeToDBWrongArgs."; // Original waveform std::vector labels = { 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02, 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02, 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02, 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02, 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03}; std::shared_ptr input; ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input)); auto input_ms = mindspore::MSTensor(std::make_shared(input)); std::shared_ptr amplitude_to_db_op = std::make_shared(ScaleType::kPower, 1.0, -1e-10, 80.0); // apply amplitude_to_db mindspore::dataset::Execute trans({amplitude_to_db_op}); Status status = trans(input_ms, &input_ms); EXPECT_FALSE(status.IsOk()); } TEST_F(MindDataTestExecute, TestAmplitudeToDBWrongInput) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestAmplitudeToDBWrongInput."; // Original waveform std::vector labels = { 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02, 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02, 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02, 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02, 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03}; std::shared_ptr input; ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({20}), &input)); auto input_ms = mindspore::MSTensor(std::make_shared(input)); std::shared_ptr amplitude_to_db_op = std::make_shared(); // apply amplitude_to_db mindspore::dataset::Execute trans({amplitude_to_db_op}); Status status = trans(input_ms, &input_ms); EXPECT_FALSE(status.IsOk()); } TEST_F(MindDataTestExecute, TestComposeTransforms) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestComposeTransforms."; // Read images auto image = ReadFileToTensor("data/dataset/apple.jpg"); // Transform params std::shared_ptr decode = std::make_shared(); std::shared_ptr center_crop(new vision::CenterCrop({30})); std::shared_ptr rescale = std::make_shared(1. / 3, 0.5); auto transform = Execute({decode, center_crop, rescale}); Status rc = transform(image, &image); EXPECT_EQ(rc, Status::OK()); EXPECT_EQ(30, image.Shape()[0]); EXPECT_EQ(30, image.Shape()[1]); } TEST_F(MindDataTestExecute, TestCrop) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestCrop."; // Read images auto image = ReadFileToTensor("data/dataset/apple.jpg"); // Transform params auto decode = vision::Decode(); auto crop = vision::Crop({10, 30}, {10, 15}); auto transform = Execute({decode, crop}); Status rc = transform(image, &image); EXPECT_EQ(rc, Status::OK()); EXPECT_EQ(image.Shape()[0], 10); EXPECT_EQ(image.Shape()[1], 15); } TEST_F(MindDataTestExecute, TestFrequencyMasking) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestFrequencyMasking."; std::shared_ptr input_tensor_; TensorShape s = TensorShape({6, 2}); ASSERT_OK(Tensor::CreateFromVector( std::vector({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f}), s, &input_tensor_)); auto input_tensor = mindspore::MSTensor(std::make_shared(input_tensor_)); std::shared_ptr frequency_masking_op = std::make_shared(true, 2); mindspore::dataset::Execute transform({frequency_masking_op}); Status status = transform(input_tensor, &input_tensor); EXPECT_TRUE(status.IsOk()); } TEST_F(MindDataTestExecute, TestTimeMasking) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestTimeMasking."; std::shared_ptr input_tensor_; TensorShape s = TensorShape({2, 6}); ASSERT_OK(Tensor::CreateFromVector( std::vector({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f}), s, &input_tensor_)); auto input_tensor = mindspore::MSTensor(std::make_shared(input_tensor_)); std::shared_ptr time_masking_op = std::make_shared(true, 2); mindspore::dataset::Execute transform({time_masking_op}); Status status = transform(input_tensor, &input_tensor); EXPECT_TRUE(status.IsOk()); } TEST_F(MindDataTestExecute, TestTimeStretchEager) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestTimeStretchEager."; std::shared_ptr input_tensor_; // op param int freq = 4; int hop_length = 20; float rate = 1.3; int frame_num = 10; // create tensor TensorShape s = TensorShape({2, freq, frame_num, 2}); // init input vec std::vector input_vec(2 * freq * frame_num * 2); for (int ind = 0; ind < input_vec.size(); ind++) { input_vec[ind] = std::rand() % (1000) / (1000.0f); } ASSERT_OK(Tensor::CreateFromVector(input_vec, s, &input_tensor_)); auto input_ms = mindspore::MSTensor(std::make_shared(input_tensor_)); std::shared_ptr time_stretch_op = std::make_shared(hop_length, freq, rate); // apply timestretch mindspore::dataset::Execute Transform({time_stretch_op}); Status status = Transform(input_ms, &input_ms); EXPECT_TRUE(status.IsOk()); } TEST_F(MindDataTestExecute, TestTimeStretchParamCheck) { MS_LOG(INFO) << "Doing MindDataTestTimeStretch-TestTimeStretchParamCheck."; // Create an input std::shared_ptr input_tensor_; std::shared_ptr output_tensor; TensorShape s = TensorShape({1, 4, 3, 2}); ASSERT_OK(Tensor::CreateFromVector( std::vector({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f}), s, &input_tensor_)); auto input_ms = mindspore::MSTensor(std::make_shared(input_tensor_)); std::shared_ptr time_stretch1 = std::make_shared(4, 512, -2); mindspore::dataset::Execute Transform1({time_stretch1}); Status status = Transform1(input_ms, &input_ms); EXPECT_FALSE(status.IsOk()); std::shared_ptr time_stretch2 = std::make_shared(4, -512, 2); mindspore::dataset::Execute Transform2({time_stretch2}); status = Transform2(input_ms, &input_ms); EXPECT_FALSE(status.IsOk()); } TEST_F(MindDataTestExecute, TestTransformInput1) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestTransformInput1."; // Test Execute with transform op input using API constructors, with std::shared_ptr decode = std::make_shared(); std::shared_ptr resize(new vision::Resize({224, 224})); std::shared_ptr normalize( new vision::Normalize({0.485 * 255, 0.456 * 255, 0.406 * 255}, {0.229 * 255, 0.224 * 255, 0.225 * 255})); std::shared_ptr hwc2chw = std::make_shared(); mindspore::dataset::Execute Transform({decode, resize, normalize, hwc2chw}); // Apply transform on image Status rc = Transform(image, &image); // Check image info ASSERT_TRUE(rc.IsOk()); ASSERT_EQ(image.Shape().size(), 3); ASSERT_EQ(image.Shape()[0], 3); ASSERT_EQ(image.Shape()[1], 224); ASSERT_EQ(image.Shape()[2], 224); } TEST_F(MindDataTestExecute, TestTransformInput2) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestTransformInput2."; // Test Execute with transform op input using API constructors, with std::shared_ptr de_tensor; mindspore::dataset::Tensor::CreateFromFile("data/dataset/apple.jpg", &de_tensor); auto image = mindspore::MSTensor(std::make_shared(de_tensor)); // Define transform operations std::shared_ptr decode(new vision::Decode()); std::shared_ptr resize(new vision::Resize({224, 224})); std::shared_ptr normalize( new vision::Normalize({0.485 * 255, 0.456 * 255, 0.406 * 255}, {0.229 * 255, 0.224 * 255, 0.225 * 255})); std::shared_ptr hwc2chw(new vision::HWC2CHW()); mindspore::dataset::Execute Transform({decode, resize, normalize, hwc2chw}); // Apply transform on image Status rc = Transform(image, &image); // Check image info ASSERT_TRUE(rc.IsOk()); ASSERT_EQ(image.Shape().size(), 3); ASSERT_EQ(image.Shape()[0], 3); ASSERT_EQ(image.Shape()[1], 224); ASSERT_EQ(image.Shape()[2], 224); } TEST_F(MindDataTestExecute, TestTransformInput3) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestTransformInput3."; // Test Execute with transform op input using API constructors, with auto pointers // Read image, construct MSTensor from dataset tensor std::shared_ptr de_tensor; mindspore::dataset::Tensor::CreateFromFile("data/dataset/apple.jpg", &de_tensor); auto image = mindspore::MSTensor(std::make_shared(de_tensor)); // Define transform operations auto decode = vision::Decode(); mindspore::dataset::Execute Transform1(decode); auto resize = vision::Resize({224, 224}); mindspore::dataset::Execute Transform2(resize); // Apply transform on image Status rc; rc = Transform1(image, &image); ASSERT_TRUE(rc.IsOk()); rc = Transform2(image, &image); ASSERT_TRUE(rc.IsOk()); // Check image info ASSERT_EQ(image.Shape().size(), 3); ASSERT_EQ(image.Shape()[0], 224); ASSERT_EQ(image.Shape()[1], 224); ASSERT_EQ(image.Shape()[2], 3); } TEST_F(MindDataTestExecute, TestTransformInputSequential) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestTransformInputSequential."; // Test Execute with transform op input using API constructors, with auto pointers; // Apply 2 transformations sequentially, including single non-vector Transform op input // Read image, construct MSTensor from dataset tensor std::shared_ptr de_tensor; mindspore::dataset::Tensor::CreateFromFile("data/dataset/apple.jpg", &de_tensor); auto image = mindspore::MSTensor(std::make_shared(de_tensor)); // Define transform#1 operations std::shared_ptr decode(new vision::Decode()); std::shared_ptr resize(new vision::Resize({224, 224})); std::shared_ptr normalize( new vision::Normalize({0.485 * 255, 0.456 * 255, 0.406 * 255}, {0.229 * 255, 0.224 * 255, 0.225 * 255})); std::vector> op_list = {decode, resize, normalize}; mindspore::dataset::Execute Transform(op_list); // Apply transform#1 on image Status rc = Transform(image, &image); // Define transform#2 operations std::shared_ptr hwc2chw(new vision::HWC2CHW()); mindspore::dataset::Execute Transform2(hwc2chw); // Apply transform#2 on image rc = Transform2(image, &image); // Check image info ASSERT_TRUE(rc.IsOk()); ASSERT_EQ(image.Shape().size(), 3); ASSERT_EQ(image.Shape()[0], 3); ASSERT_EQ(image.Shape()[1], 224); ASSERT_EQ(image.Shape()[2], 224); } TEST_F(MindDataTestExecute, TestTransformDecodeResizeCenterCrop1) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestTransformDecodeResizeCenterCrop1."; // Test Execute with Decode, Resize and CenterCrop transform ops input using API constructors, with shared pointers // Read image, construct MSTensor from dataset tensor std::shared_ptr de_tensor; mindspore::dataset::Tensor::CreateFromFile("data/dataset/apple.jpg", &de_tensor); auto image = mindspore::MSTensor(std::make_shared(de_tensor)); // Define transform operations std::vector resize_paras = {256, 256}; std::vector crop_paras = {224, 224}; std::shared_ptr decode(new vision::Decode()); std::shared_ptr resize(new vision::Resize(resize_paras)); std::shared_ptr centercrop(new vision::CenterCrop(crop_paras)); std::shared_ptr hwc2chw(new vision::HWC2CHW()); std::vector> op_list = {decode, resize, centercrop, hwc2chw}; mindspore::dataset::Execute Transform(op_list, MapTargetDevice::kCpu); // Apply transform on image Status rc = Transform(image, &image); // Check image info ASSERT_TRUE(rc.IsOk()); ASSERT_EQ(image.Shape().size(), 3); ASSERT_EQ(image.Shape()[0], 3); ASSERT_EQ(image.Shape()[1], 224); ASSERT_EQ(image.Shape()[2], 224); } TEST_F(MindDataTestExecute, TestUniformAugment) { // Read images auto image = ReadFileToTensor("data/dataset/apple.jpg"); std::vector image2; // Transform params std::shared_ptr decode = std::make_shared(); std::shared_ptr resize_op(new vision::Resize({16, 16})); std::shared_ptr vertical = std::make_shared(); std::shared_ptr horizontal = std::make_shared(); std::shared_ptr uniform_op(new vision::UniformAugment({resize_op, vertical, horizontal}, 3)); auto transform1 = Execute({decode}); Status rc = transform1(image, &image); ASSERT_TRUE(rc.IsOk()); auto transform2 = Execute({uniform_op}); rc = transform2({image}, &image2); ASSERT_TRUE(rc.IsOk()); } TEST_F(MindDataTestExecute, TestBasicTokenizer) { std::shared_ptr de_tensor; Tensor::CreateScalar("Welcome to China.", &de_tensor); auto txt = mindspore::MSTensor(std::make_shared(de_tensor)); std::vector txt_result; // Transform params std::shared_ptr tokenizer = std::make_shared(false, false, NormalizeForm::kNone, false, true); // BasicTokenizer has 3 outputs so we need a vector to receive its result auto transform1 = Execute({tokenizer}); Status rc = transform1({txt}, &txt_result); ASSERT_EQ(txt_result.size(), 3); ASSERT_TRUE(rc.IsOk()); } TEST_F(MindDataTestExecute, TestRotate) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestRotate."; // Read images auto image = ReadFileToTensor("data/dataset/apple.jpg"); // Transform params auto decode = vision::Decode(); auto rotate = vision::Rotate(10.5); auto transform = Execute({decode, rotate}); Status rc = transform(image, &image); EXPECT_EQ(rc, Status::OK()); } TEST_F(MindDataTestExecute, TestResizeWithBBox) { auto image = ReadFileToTensor("data/dataset/apple.jpg"); std::shared_ptr decode_op = std::make_shared(); std::shared_ptr resizewithbbox_op = std::make_shared(std::vector{250, 500}); // Test Compute(Tensor, Tensor) method of ResizeWithBBox auto transform = Execute({decode_op, resizewithbbox_op}); // Expect fail since Compute(Tensor, Tensor) is not a valid behaviour for this Op, // while Compute(TensorRow, TensorRow) is the correct one. Status rc = transform(image, &image); EXPECT_FALSE(rc.IsOk()); } TEST_F(MindDataTestExecute, TestBandBiquadWithEager) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestBandBiquadWithEager."; // Original waveform std::vector labels = { 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02, 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02, 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02, 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02, 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03}; std::shared_ptr input; ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input)); auto input_02 = mindspore::MSTensor(std::make_shared(input)); std::shared_ptr band_biquad_01 = std::make_shared(44100, 200); mindspore::dataset::Execute Transform01({band_biquad_01}); // Filtered waveform by bandbiquad Status s01 = Transform01(input_02, &input_02); EXPECT_TRUE(s01.IsOk()); } TEST_F(MindDataTestExecute, TestBandBiquadWithWrongArg) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestBandBiquadWithWrongArg."; std::vector labels = { 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02, 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02, 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02, 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02, 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03}; std::shared_ptr input; ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input)); auto input_02 = mindspore::MSTensor(std::make_shared(input)); // Check Q MS_LOG(INFO) << "Q is zero."; std::shared_ptr band_biquad_op = std::make_shared(44100, 200, 0); mindspore::dataset::Execute Transform01({band_biquad_op}); Status s01 = Transform01(input_02, &input_02); EXPECT_FALSE(s01.IsOk()); } TEST_F(MindDataTestExecute, TestBandpassBiquadWithEager) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestBandpassBiquadWithEager."; // Original waveform std::vector labels = { 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02, 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02, 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02, 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02, 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03}; std::shared_ptr input; ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input)); auto input_02 = mindspore::MSTensor(std::make_shared(input)); std::shared_ptr bandpass_biquad_01 = std::make_shared(44100, 200); mindspore::dataset::Execute Transform01({bandpass_biquad_01}); // Filtered waveform by bandpassbiquad Status s01 = Transform01(input_02, &input_02); EXPECT_TRUE(s01.IsOk()); } TEST_F(MindDataTestExecute, TestBandpassBiquadWithWrongArg) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestBandpassBiquadWithWrongArg."; std::vector labels = { 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02, 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02, 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02, 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02, 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03}; std::shared_ptr input; ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input)); auto input_02 = mindspore::MSTensor(std::make_shared(input)); // Check Q MS_LOG(INFO) << "Q is zero."; std::shared_ptr bandpass_biquad_op = std::make_shared(44100, 200, 0); mindspore::dataset::Execute Transform01({bandpass_biquad_op}); Status s01 = Transform01(input_02, &input_02); EXPECT_FALSE(s01.IsOk()); } TEST_F(MindDataTestExecute, TestBandrejectBiquadWithEager) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestBandrejectBiquadWithEager."; // Original waveform std::vector labels = { 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02, 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02, 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02, 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02, 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03}; std::shared_ptr input; ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input)); auto input_02 = mindspore::MSTensor(std::make_shared(input)); std::shared_ptr bandreject_biquad_01 = std::make_shared(44100, 200); mindspore::dataset::Execute Transform01({bandreject_biquad_01}); // Filtered waveform by bandrejectbiquad Status s01 = Transform01(input_02, &input_02); EXPECT_TRUE(s01.IsOk()); } TEST_F(MindDataTestExecute, TestBandrejectBiquadWithWrongArg) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestBandrejectBiquadWithWrongArg."; std::vector labels = { 2.716064453125000000e-03, 6.347656250000000000e-03, 9.246826171875000000e-03, 1.089477539062500000e-02, 1.138305664062500000e-02, 1.156616210937500000e-02, 1.394653320312500000e-02, 1.550292968750000000e-02, 1.614379882812500000e-02, 1.840209960937500000e-02, 1.718139648437500000e-02, 1.599121093750000000e-02, 1.647949218750000000e-02, 1.510620117187500000e-02, 1.385498046875000000e-02, 1.345825195312500000e-02, 1.419067382812500000e-02, 1.284790039062500000e-02, 1.052856445312500000e-02, 9.368896484375000000e-03}; std::shared_ptr input; ASSERT_OK(Tensor::CreateFromVector(labels, TensorShape({2, 10}), &input)); auto input_02 = mindspore::MSTensor(std::make_shared(input)); // Check Q MS_LOG(INFO) << "Q is zero."; std::shared_ptr bandreject_biquad_op = std::make_shared(44100, 200, 0); mindspore::dataset::Execute Transform01({bandreject_biquad_op}); Status s01 = Transform01(input_02, &input_02); EXPECT_FALSE(s01.IsOk()); } TEST_F(MindDataTestExecute, TestAngleEager) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestAngleEager."; std::vector origin = {1.143, 1.3123, 2.632, 2.554, -1.213, 1.3, 0.456, 3.563}; TensorShape input_shape({4, 2}); std::shared_ptr de_tensor; Tensor::CreateFromVector(origin, input_shape, &de_tensor); std::shared_ptr angle = std::make_shared(); auto input = mindspore::MSTensor(std::make_shared(de_tensor)); mindspore::dataset::Execute Transform({angle}); Status s = Transform(input, &input); ASSERT_TRUE(s.IsOk()); } TEST_F(MindDataTestExecute, TestRGB2BGREager) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestRGB2BGREager."; // Read images auto image = ReadFileToTensor("data/dataset/apple.jpg"); // Transform params auto decode = vision::Decode(); auto rgb2bgr_op = vision::RGB2BGR(); auto transform = Execute({decode, rgb2bgr_op}); Status rc = transform(image, &image); EXPECT_EQ(rc, Status::OK()); } TEST_F(MindDataTestExecute, TestComplexNormEager) { MS_LOG(INFO) << "Doing MindDataTestExecute-TestComplexNormEager."; // testing std::shared_ptr input_tensor_; Tensor::CreateFromVector(std::vector({1.0, 1.0, 2.0, 3.0, 4.0, 4.0}), TensorShape({3, 2}), &input_tensor_); auto input_02 = mindspore::MSTensor(std::make_shared(input_tensor_)); std::shared_ptr complex_norm_01 = std::make_shared(4.0); // Filtered waveform by complexnorm mindspore::dataset::Execute Transform01({complex_norm_01}); Status s01 = Transform01(input_02, &input_02); EXPECT_TRUE(s01.IsOk()); }