You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

ir_vision_random_test.cc 11 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. /**
  2. * Copyright 2021 Huawei Technologies Co., Ltd
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #include <memory>
  17. #include "common/common.h"
  18. #include "minddata/dataset/kernels/ir/vision/random_affine_ir.h"
  19. #include "minddata/dataset/kernels/ir/vision/random_color_adjust_ir.h"
  20. #include "minddata/dataset/kernels/ir/vision/random_color_ir.h"
  21. #include "minddata/dataset/kernels/ir/vision/random_crop_decode_resize_ir.h"
  22. #include "minddata/dataset/kernels/ir/vision/random_crop_ir.h"
  23. #include "minddata/dataset/kernels/ir/vision/random_crop_with_bbox_ir.h"
  24. #include "minddata/dataset/kernels/ir/vision/random_horizontal_flip_ir.h"
  25. #include "minddata/dataset/kernels/ir/vision/random_horizontal_flip_with_bbox_ir.h"
  26. #include "minddata/dataset/kernels/ir/vision/random_posterize_ir.h"
  27. #include "minddata/dataset/kernels/ir/vision/random_resized_crop_ir.h"
  28. #include "minddata/dataset/kernels/ir/vision/random_resized_crop_with_bbox_ir.h"
  29. #include "minddata/dataset/kernels/ir/vision/random_resize_ir.h"
  30. #include "minddata/dataset/kernels/ir/vision/random_resize_with_bbox_ir.h"
  31. #include "minddata/dataset/kernels/ir/vision/random_rotation_ir.h"
  32. #include "minddata/dataset/kernels/ir/vision/random_select_subpolicy_ir.h"
  33. #include "minddata/dataset/kernels/ir/vision/random_sharpness_ir.h"
  34. #include "minddata/dataset/kernels/ir/vision/random_solarize_ir.h"
  35. #include "minddata/dataset/kernels/ir/vision/random_vertical_flip_ir.h"
  36. #include "minddata/dataset/kernels/ir/vision/random_vertical_flip_with_bbox_ir.h"
  37. using namespace mindspore::dataset;
  38. class MindDataTestIRVision : public UT::DatasetOpTesting {
  39. public:
  40. MindDataTestIRVision() = default;
  41. };
  42. TEST_F(MindDataTestIRVision, TestRandomColorIRFail) {
  43. MS_LOG(INFO) << "Doing MindDataTestIRVision-TestRandomColorIRFail.";
  44. // Testing invalid lower bound > upper bound
  45. std::shared_ptr<TensorOperation> random_color1(new vision::RandomColorOperation(1.0, 0.1));
  46. Status rc1 = random_color1->ValidateParams();
  47. EXPECT_ERROR(rc1);
  48. // Testing invalid negative lower bound
  49. std::shared_ptr<TensorOperation> random_color2(new vision::RandomColorOperation(-0.5, 0.5));
  50. Status rc2 = random_color2->ValidateParams();
  51. EXPECT_ERROR(rc2);
  52. }
  53. TEST_F(MindDataTestIRVision, TestRandomColorAdjustIRFail) {
  54. MS_LOG(INFO) << "Doing MindDataTestIRVision-TestRandomColorAdjustIRFail.";
  55. // Testing invalid brightness out of range
  56. std::shared_ptr<TensorOperation> random_color_adjust1(
  57. new vision::RandomColorAdjustOperation({-1.0}, {0.0}, {0.0}, {0.0}));
  58. Status rc1 = random_color_adjust1->ValidateParams();
  59. EXPECT_ERROR(rc1);
  60. // Testing invalid contrast out of range
  61. std::shared_ptr<TensorOperation> random_color_adjust2(
  62. new vision::RandomColorAdjustOperation({1.0}, {-0.1}, {0.0}, {0.0}));
  63. Status rc2 = random_color_adjust2->ValidateParams();
  64. EXPECT_ERROR(rc2);
  65. // Testing invalid saturation out of range
  66. std::shared_ptr<TensorOperation> random_color_adjust3(
  67. new vision::RandomColorAdjustOperation({0.0}, {0.0}, {-0.2}, {0.0}));
  68. Status rc3 = random_color_adjust3->ValidateParams();
  69. EXPECT_ERROR(rc3);
  70. // Testing invalid hue out of range
  71. std::shared_ptr<TensorOperation> random_color_adjust4(
  72. new vision::RandomColorAdjustOperation({0.0}, {0.0}, {0.0}, {-0.6}));
  73. Status rc4 = random_color_adjust4->ValidateParams();
  74. EXPECT_ERROR(rc4);
  75. // Testing invalid hue out of range
  76. std::shared_ptr<TensorOperation> random_color_adjust5(
  77. new vision::RandomColorAdjustOperation({0.0}, {0.0}, {0.0}, {-0.5, 0.6}));
  78. Status rc5 = random_color_adjust5->ValidateParams();
  79. EXPECT_ERROR(rc5);
  80. // Testing invalid hue
  81. std::shared_ptr<TensorOperation> random_color_adjust6(
  82. new vision::RandomColorAdjustOperation({0.0}, {0.0}, {0.0}, {0.51}));
  83. Status rc6 = random_color_adjust4->ValidateParams();
  84. EXPECT_ERROR(rc6);
  85. }
  86. TEST_F(MindDataTestIRVision, TestRandomHorizontalFlipIRFail) {
  87. MS_LOG(INFO) << "Doing MindDataTestIRVision-TestRandomHorizontalFlipIRFail.";
  88. // Testing invalid negative input
  89. std::shared_ptr<TensorOperation> random_horizontal_flip1(new vision::RandomHorizontalFlipOperation(-0.5));
  90. Status rc1 = random_horizontal_flip1->ValidateParams();
  91. EXPECT_ERROR(rc1);
  92. // Testing invalid >1 input
  93. std::shared_ptr<TensorOperation> random_horizontal_flip2(new vision::RandomHorizontalFlipOperation(2));
  94. Status rc2 = random_horizontal_flip2->ValidateParams();
  95. EXPECT_ERROR(rc2);
  96. }
  97. TEST_F(MindDataTestIRVision, TestRandomHorizontalFlipWithBBoxIRFail) {
  98. MS_LOG(INFO) << "Doing MindDataTestIRVision-TestRandomHorizontalFlipWithBBoxIRFail.";
  99. // Testing invalid negative input
  100. std::shared_ptr<TensorOperation> random_horizontal_flip_bbox1(
  101. new vision::RandomHorizontalFlipWithBBoxOperation(-1.0));
  102. Status rc1 = random_horizontal_flip_bbox1->ValidateParams();
  103. EXPECT_ERROR(rc1);
  104. // Testing invalid >1 input
  105. std::shared_ptr<TensorOperation> random_horizontal_flip_bbox2(new vision::RandomHorizontalFlipWithBBoxOperation(2.0));
  106. Status rc2 = random_horizontal_flip_bbox2->ValidateParams();
  107. EXPECT_ERROR(rc2);
  108. }
  109. TEST_F(MindDataTestIRVision, TestRandomPosterizeIRFail) {
  110. MS_LOG(INFO) << "Doing MindDataTestIRVision-TestRandomPosterizeIRFail.";
  111. // Testing invalid max > 8
  112. std::shared_ptr<TensorOperation> random_posterize1(new vision::RandomPosterizeOperation({1, 9}));
  113. Status rc1 = random_posterize1->ValidateParams();
  114. EXPECT_ERROR(rc1);
  115. // Testing invalid min < 1
  116. std::shared_ptr<TensorOperation> random_posterize2(new vision::RandomPosterizeOperation({0, 8}));
  117. Status rc2 = random_posterize2->ValidateParams();
  118. EXPECT_ERROR(rc2);
  119. // Testing invalid min > max
  120. std::shared_ptr<TensorOperation> random_posterize3(new vision::RandomPosterizeOperation({8, 1}));
  121. Status rc3 = random_posterize3->ValidateParams();
  122. EXPECT_ERROR(rc3);
  123. // Testing invalid empty input
  124. std::shared_ptr<TensorOperation> random_posterize4(new vision::RandomPosterizeOperation({}));
  125. Status rc4 = random_posterize4->ValidateParams();
  126. EXPECT_ERROR(rc4);
  127. }
  128. TEST_F(MindDataTestIRVision, TestRandomResizeIRFail) {
  129. MS_LOG(INFO) << "Doing MindDataTestIRVision-TestRandomResizeIRFail.";
  130. // Testing invalid: size must only contain positive integers
  131. std::shared_ptr<TensorOperation> random_resize1(new vision::RandomResizeOperation({-66, 77}));
  132. Status rc1 = random_resize1->ValidateParams();
  133. EXPECT_ERROR(rc1);
  134. // Testing invalid: size must only contain positive integers
  135. std::shared_ptr<TensorOperation> random_resize2(new vision::RandomResizeOperation({0, 77}));
  136. Status rc2 = random_resize2->ValidateParams();
  137. EXPECT_ERROR(rc2);
  138. // Testing invalid: size must be a vector of one or two values
  139. std::shared_ptr<TensorOperation> random_resize3(new vision::RandomResizeOperation({1, 2, 3}));
  140. Status rc3 = random_resize3->ValidateParams();
  141. EXPECT_ERROR(rc3);
  142. // Testing invalid: size must be a vector of one or two values
  143. std::shared_ptr<TensorOperation> random_resize4(new vision::RandomResizeOperation({}));
  144. Status rc4 = random_resize4->ValidateParams();
  145. EXPECT_ERROR(rc4);
  146. }
  147. TEST_F(MindDataTestIRVision, TestRandomResizeWithBBoxIRFail) {
  148. MS_LOG(INFO) << "Doing MindDataTestIRVision-TestRandomResizeWithBBoxIRFail.";
  149. // Testing invalid: size must only contain positive integers
  150. std::shared_ptr<TensorOperation> random_resize_with_bbox1(new vision::RandomResizeWithBBoxOperation({-66, 77}));
  151. Status rc1 = random_resize_with_bbox1->ValidateParams();
  152. EXPECT_ERROR(rc1);
  153. // Testing invalid: size must be a vector of one or two values
  154. std::shared_ptr<TensorOperation> random_resize_with_bbox2(new vision::RandomResizeWithBBoxOperation({1, 2, 3}));
  155. Status rc2 = random_resize_with_bbox2->ValidateParams();
  156. EXPECT_ERROR(rc2);
  157. // Testing invalid: size must be a vector of one or two values
  158. std::shared_ptr<TensorOperation> random_resize_with_bbox3(new vision::RandomResizeWithBBoxOperation({}));
  159. Status rc3 = random_resize_with_bbox3->ValidateParams();
  160. EXPECT_ERROR(rc3);
  161. }
  162. TEST_F(MindDataTestIRVision, TestRandomSharpnessIRFail) {
  163. MS_LOG(INFO) << "Doing MindDataTestIRVision-TestRandomSharpnessIRFail.";
  164. // Testing invalid empty degrees vector
  165. std::shared_ptr<TensorOperation> random_sharpness1(new vision::RandomSharpnessOperation({}));
  166. Status rc1 = random_sharpness1->ValidateParams();
  167. EXPECT_ERROR(rc1);
  168. // Testing invalid single degree value
  169. std::shared_ptr<TensorOperation> random_sharpness2(new vision::RandomSharpnessOperation({0.1}));
  170. Status rc2 = random_sharpness2->ValidateParams();
  171. EXPECT_ERROR(rc2);
  172. }
  173. TEST_F(MindDataTestIRVision, TestRandomSolarizeIRFail) {
  174. MS_LOG(INFO) << "Doing MindDataTestIRVision-TestRandomSolarizeIRFail.";
  175. // Testing invalid lower bound > upper bound
  176. std::shared_ptr<TensorOperation> random_solarize1(new vision::RandomSolarizeOperation({13, 1}));
  177. Status rc1 = random_solarize1->ValidateParams();
  178. EXPECT_ERROR(rc1);
  179. // Testing invalid threshold must be a vector of two values
  180. std::shared_ptr<TensorOperation> random_solarize2(new vision::RandomSolarizeOperation({1, 2, 3}));
  181. Status rc2 = random_solarize2->ValidateParams();
  182. EXPECT_ERROR(rc2);
  183. // Testing invalid threshold must be a vector of two values
  184. std::shared_ptr<TensorOperation> random_solarize3(new vision::RandomSolarizeOperation({1}));
  185. Status rc3 = random_solarize3->ValidateParams();
  186. EXPECT_ERROR(rc3);
  187. // Testing invalid empty threshold
  188. std::shared_ptr<TensorOperation> random_solarize4(new vision::RandomSolarizeOperation({}));
  189. Status rc4 = random_solarize4->ValidateParams();
  190. EXPECT_ERROR(rc4);
  191. }
  192. TEST_F(MindDataTestIRVision, TestRandomVerticalFlipIRFail) {
  193. MS_LOG(INFO) << "Doing MindDataTestIRVision-TestRandomVerticalFlipIRFail.";
  194. // Testing invalid negative input
  195. std::shared_ptr<TensorOperation> random_vertical_flip1(new vision::RandomVerticalFlipOperation(-0.5));
  196. Status rc1 = random_vertical_flip1->ValidateParams();
  197. EXPECT_ERROR(rc1);
  198. // Testing invalid >1 input
  199. std::shared_ptr<TensorOperation> random_vertical_flip2(new vision::RandomVerticalFlipOperation(1.1));
  200. Status rc2 = random_vertical_flip2->ValidateParams();
  201. EXPECT_ERROR(rc2);
  202. }
  203. TEST_F(MindDataTestIRVision, TestRandomVerticalFlipWithBBoxIRFail) {
  204. MS_LOG(INFO) << "Doing MindDataTestIRVision-TestRandomVerticalFlipWithBBoxIRFail.";
  205. // Testing invalid negative input
  206. std::shared_ptr<TensorOperation> random_vertical_flip1(new vision::RandomVerticalFlipWithBBoxOperation(-0.5));
  207. Status rc1 = random_vertical_flip1->ValidateParams();
  208. EXPECT_ERROR(rc1);
  209. // Testing invalid >1 input
  210. std::shared_ptr<TensorOperation> random_vertical_flip2(new vision::RandomVerticalFlipWithBBoxOperation(3.0));
  211. Status rc2 = random_vertical_flip2->ValidateParams();
  212. EXPECT_ERROR(rc2);
  213. }