|
|
|
@ -23,9 +23,10 @@
|
|
|
|
|
#include "utils/log_adapter.h"
|
|
|
|
|
|
|
|
|
|
using namespace mindspore::dataset;
|
|
|
|
|
using mindspore::MsLogLevel::INFO;
|
|
|
|
|
using mindspore::ExceptionType::NoExceptionType;
|
|
|
|
|
using mindspore::LogStream;
|
|
|
|
|
using mindspore::ExceptionType::NoExceptionType;
|
|
|
|
|
using mindspore::MsLogLevel::INFO;
|
|
|
|
|
constexpr double kMseThreshold = 2.0;
|
|
|
|
|
|
|
|
|
|
class MindDataTestRandomCropDecodeResizeOp : public UT::CVOP::CVOpCommon {
|
|
|
|
|
public:
|
|
|
|
@ -33,39 +34,38 @@ class MindDataTestRandomCropDecodeResizeOp : public UT::CVOP::CVOpCommon {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
TEST_F(MindDataTestRandomCropDecodeResizeOp, TestOp2) {
|
|
|
|
|
MS_LOG(INFO) << "Doing testRandomCropDecodeResizeOp Test";
|
|
|
|
|
MS_LOG(INFO) << "starting RandomCropDecodeResizeOp test 1";
|
|
|
|
|
|
|
|
|
|
std::shared_ptr<Tensor> output_tensor1;
|
|
|
|
|
std::shared_ptr<Tensor> output_tensor2;
|
|
|
|
|
std::shared_ptr<Tensor> decode_and_crop_output;
|
|
|
|
|
std::shared_ptr<Tensor> crop_and_decode_output;
|
|
|
|
|
|
|
|
|
|
int target_height = 884;
|
|
|
|
|
int target_width = 718;
|
|
|
|
|
float scale_lb = 0.08;
|
|
|
|
|
float scale_ub = 1.0;
|
|
|
|
|
float aspect_lb = 0.75;
|
|
|
|
|
float aspect_ub = 1.333333;
|
|
|
|
|
InterpolationMode interpolation = InterpolationMode::kLinear;
|
|
|
|
|
uint32_t max_iter = 10;
|
|
|
|
|
std::unique_ptr<RandomCropAndResizeOp> op1(new RandomCropAndResizeOp(
|
|
|
|
|
target_height, target_width, scale_lb, scale_ub, aspect_lb, aspect_ub, interpolation, max_iter));
|
|
|
|
|
EXPECT_TRUE(op1->OneToOne());
|
|
|
|
|
std::unique_ptr<RandomCropDecodeResizeOp> op2(new RandomCropDecodeResizeOp(
|
|
|
|
|
target_height, target_width, scale_lb, scale_ub, aspect_lb, aspect_ub, interpolation, max_iter));
|
|
|
|
|
EXPECT_TRUE(op2->OneToOne());
|
|
|
|
|
Status s1, s2;
|
|
|
|
|
constexpr int target_height = 884;
|
|
|
|
|
constexpr int target_width = 718;
|
|
|
|
|
constexpr float scale_lb = 0.08;
|
|
|
|
|
constexpr float scale_ub = 1.0;
|
|
|
|
|
constexpr float aspect_lb = 0.75;
|
|
|
|
|
constexpr float aspect_ub = 1.333333;
|
|
|
|
|
const InterpolationMode interpolation = InterpolationMode::kLinear;
|
|
|
|
|
constexpr uint32_t max_iter = 10;
|
|
|
|
|
|
|
|
|
|
auto crop_and_decode = RandomCropDecodeResizeOp(target_height, target_width, scale_lb, scale_ub, aspect_lb, aspect_ub,
|
|
|
|
|
interpolation, max_iter);
|
|
|
|
|
auto crop_and_decode_copy = crop_and_decode;
|
|
|
|
|
auto decode_and_crop = static_cast<RandomCropAndResizeOp>(crop_and_decode_copy);
|
|
|
|
|
EXPECT_TRUE(crop_and_decode.OneToOne());
|
|
|
|
|
GlobalContext::config_manager()->set_seed(42);
|
|
|
|
|
for (int i = 0; i < 100; i++) {
|
|
|
|
|
s1 = op1->Compute(input_tensor_, &output_tensor1);
|
|
|
|
|
s2 = op2->Compute(raw_input_tensor_, &output_tensor2);
|
|
|
|
|
cv::Mat output1(target_height, target_width, CV_8UC3, output_tensor1->StartAddr());
|
|
|
|
|
cv::Mat output2(target_height, target_width, CV_8UC3, output_tensor2->StartAddr());
|
|
|
|
|
(void)crop_and_decode.Compute(raw_input_tensor_, &crop_and_decode_output);
|
|
|
|
|
(void)decode_and_crop.Compute(input_tensor_, &decode_and_crop_output);
|
|
|
|
|
cv::Mat output1(target_height, target_width, CV_8UC3, crop_and_decode_output->StartAddr());
|
|
|
|
|
cv::Mat output2(target_height, target_width, CV_8UC3, decode_and_crop_output->StartAddr());
|
|
|
|
|
long int mse_sum = 0;
|
|
|
|
|
long int count = 0;
|
|
|
|
|
int a, b;
|
|
|
|
|
for (int i = 0; i < target_height; i++) {
|
|
|
|
|
for (int j = 0; j < target_width; j++) {
|
|
|
|
|
a = (int)output1.at<cv::Vec3b>(i, j)[1];
|
|
|
|
|
b = (int)output2.at<cv::Vec3b>(i, j)[1];
|
|
|
|
|
for (int j = 0; j < target_height; j++) {
|
|
|
|
|
for (int k = 0; k < target_width; k++) {
|
|
|
|
|
a = static_cast<int>(output1.at<cv::Vec3b>(i, j)[1]);
|
|
|
|
|
b = static_cast<int>(output2.at<cv::Vec3b>(i, j)[1]);
|
|
|
|
|
mse_sum += sqrt((a - b) * (a - b));
|
|
|
|
|
if (a != b) {
|
|
|
|
|
count++;
|
|
|
|
@ -73,24 +73,22 @@ TEST_F(MindDataTestRandomCropDecodeResizeOp, TestOp2) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
double mse;
|
|
|
|
|
if (count > 0) {
|
|
|
|
|
mse = (double) mse_sum / count;
|
|
|
|
|
} else {
|
|
|
|
|
mse = mse_sum;
|
|
|
|
|
}
|
|
|
|
|
MS_LOG(DEBUG) << "mse: " << mse << std::endl;
|
|
|
|
|
mse = count > 0 ? static_cast<double>(mse_sum) / count : mse_sum;
|
|
|
|
|
MS_LOG(INFO) << "mse: " << mse << std::endl;
|
|
|
|
|
EXPECT_LT(mse, kMseThreshold);
|
|
|
|
|
}
|
|
|
|
|
MS_LOG(INFO) << "MindDataTestRandomCropDecodeResizeOp end!";
|
|
|
|
|
|
|
|
|
|
MS_LOG(INFO) << "RandomCropDecodeResizeOp test 1 finished";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(MindDataTestRandomCropDecodeResizeOp, TestOp1) {
|
|
|
|
|
MS_LOG(INFO) << "Doing MindDataTestRandomCropDecodeResizeOp";
|
|
|
|
|
const unsigned int h = 884;
|
|
|
|
|
const unsigned int w = 718;
|
|
|
|
|
const float scale_lb = 0.1;
|
|
|
|
|
const float scale_ub = 1;
|
|
|
|
|
const float aspect_lb = 0.1;
|
|
|
|
|
const float aspect_ub = 10;
|
|
|
|
|
MS_LOG(INFO) << "starting RandomCropDecodeResizeOp test 2";
|
|
|
|
|
constexpr int h = 884;
|
|
|
|
|
constexpr int w = 718;
|
|
|
|
|
constexpr float scale_lb = 0.1;
|
|
|
|
|
constexpr float scale_ub = 1;
|
|
|
|
|
constexpr float aspect_lb = 0.1;
|
|
|
|
|
constexpr float aspect_ub = 10;
|
|
|
|
|
|
|
|
|
|
std::shared_ptr<Tensor> decoded, decoded_and_cropped, cropped_and_decoded;
|
|
|
|
|
std::mt19937 rd;
|
|
|
|
@ -98,14 +96,14 @@ TEST_F(MindDataTestRandomCropDecodeResizeOp, TestOp1) {
|
|
|
|
|
std::uniform_real_distribution<float> rd_aspect(aspect_lb, aspect_ub);
|
|
|
|
|
DecodeOp op(true);
|
|
|
|
|
op.Compute(raw_input_tensor_, &decoded);
|
|
|
|
|
Status s1, s2;
|
|
|
|
|
Status crop_and_decode_status, decode_and_crop_status;
|
|
|
|
|
float scale, aspect;
|
|
|
|
|
int crop_width, crop_height;
|
|
|
|
|
bool crop_success = false;
|
|
|
|
|
unsigned int mse_sum, m1, m2, count;
|
|
|
|
|
float mse;
|
|
|
|
|
int mse_sum, m1, m2, count;
|
|
|
|
|
double mse;
|
|
|
|
|
|
|
|
|
|
for (unsigned int k = 0; k < 100; ++k) {
|
|
|
|
|
for (int k = 0; k < 100; ++k) {
|
|
|
|
|
mse_sum = 0;
|
|
|
|
|
count = 0;
|
|
|
|
|
for (auto i = 0; i < 100; i++) {
|
|
|
|
@ -132,13 +130,13 @@ TEST_F(MindDataTestRandomCropDecodeResizeOp, TestOp1) {
|
|
|
|
|
int y = rd_y(rd);
|
|
|
|
|
|
|
|
|
|
op.Compute(raw_input_tensor_, &decoded);
|
|
|
|
|
s1 = Crop(decoded, &decoded_and_cropped, x, y, crop_width, crop_height);
|
|
|
|
|
s2 = JpegCropAndDecode(raw_input_tensor_, &cropped_and_decoded, x, y, crop_width, crop_height);
|
|
|
|
|
crop_and_decode_status = Crop(decoded, &decoded_and_cropped, x, y, crop_width, crop_height);
|
|
|
|
|
decode_and_crop_status = JpegCropAndDecode(raw_input_tensor_, &cropped_and_decoded, x, y, crop_width, crop_height);
|
|
|
|
|
{
|
|
|
|
|
cv::Mat M1(crop_height, crop_width, CV_8UC3, decoded_and_cropped->StartAddr());
|
|
|
|
|
cv::Mat M2(crop_height, crop_width, CV_8UC3, cropped_and_decoded->StartAddr());
|
|
|
|
|
for (unsigned int i = 0; i < crop_height; ++i) {
|
|
|
|
|
for (unsigned int j = 0; j < crop_width; ++j) {
|
|
|
|
|
for (int i = 0; i < crop_height; ++i) {
|
|
|
|
|
for (int j = 0; j < crop_width; ++j) {
|
|
|
|
|
m1 = M1.at<cv::Vec3b>(i, j)[1];
|
|
|
|
|
m2 = M2.at<cv::Vec3b>(i, j)[1];
|
|
|
|
|
mse_sum += sqrt((m1 - m2) * (m1 - m2));
|
|
|
|
@ -149,8 +147,9 @@ TEST_F(MindDataTestRandomCropDecodeResizeOp, TestOp1) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mse = (count == 0) ? mse_sum : static_cast<float>(mse_sum) / count;
|
|
|
|
|
MS_LOG(DEBUG) << "mse: " << mse << std::endl;
|
|
|
|
|
mse = count > 0 ? static_cast<double>(mse_sum) / count : mse_sum;
|
|
|
|
|
MS_LOG(INFO) << "mse: " << mse << std::endl;
|
|
|
|
|
EXPECT_LT(mse, kMseThreshold);
|
|
|
|
|
}
|
|
|
|
|
MS_LOG(INFO) << "MindDataTestRandomCropDecodeResizeOp end!";
|
|
|
|
|
MS_LOG(INFO) << "RandomCropDecodeResizeOp test 2 finished";
|
|
|
|
|
}
|