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.

test_dataflow_image.py 10 kB

4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import os
  4. import unittest
  5. os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
  6. import tensorlayer as tl
  7. from tests.utils import CustomTestCase
  8. class Dataflow_Image_Test(CustomTestCase):
  9. @classmethod
  10. def setUpClass(self):
  11. self.input_shape = [1, 100, 100, 3]
  12. self.input_layer = tl.layers.Input(self.input_shape, name='input_layer')
  13. self.input_shape_1 = [100, 100, 3]
  14. self.input_layer_1 = tl.layers.Input(self.input_shape_1, name='input_layer_1')
  15. self.centralcrop_1 = tl.dataflow.image.CentralCrop(self.input_layer, central_fraction=0.5)
  16. self.centralcrop_2 = tl.dataflow.image.CentralCrop(self.input_layer, size=60)
  17. self.hsvtorgb = tl.dataflow.image.HsvToRgb(self.input_layer)
  18. self.adjustbrightness = tl.dataflow.image.AdjustBrightness(self.input_layer, factor=0.5)
  19. self.adjustconstrast = tl.dataflow.image.AdjustContrast(self.input_layer, factor=0.5)
  20. self.adjusthue = tl.dataflow.image.AdjustHue(self.input_layer, factor=0.5)
  21. self.adjustsaturation = tl.dataflow.image.AdjustSaturation(self.input_layer, factor=0.5)
  22. self.crop = tl.dataflow.image.Crop(
  23. self.input_layer, offset_height=20, offset_width=20, target_height=60, target_width=60
  24. )
  25. self.fliphorizontal = tl.dataflow.image.FlipHorizontal(self.input_layer)
  26. self.flipvertical = tl.dataflow.image.FlipVertical(self.input_layer)
  27. self.rgbtogray = tl.dataflow.image.RgbToGray(self.input_layer)
  28. self.graytorgb = tl.dataflow.image.GrayToRgb(self.rgbtogray)
  29. self.padtoboundingbox = tl.dataflow.image.PadToBoundingbox(
  30. self.input_layer, offset_height=20, offset_width=20, target_height=150, target_width=150
  31. )
  32. self.pad_1 = tl.dataflow.image.Pad(self.input_layer, padding=10, padding_value=1, mode='constant')
  33. self.pad_2 = tl.dataflow.image.Pad(self.input_layer, padding=(10, 10), mode='REFLECT')
  34. self.pad_3 = tl.dataflow.image.Pad(self.input_layer, padding=(10, 20, 30, 40), mode='SYMMETRIC')
  35. self.standardization_1 = tl.dataflow.image.Standardization(
  36. self.input_layer, mean=(0.5, 0.5, 0.5), std=(0.5, 0.5, 0.5)
  37. )
  38. self.standardization_2 = tl.dataflow.image.Standardization(self.input_layer, channel_mode=False)
  39. self.standardization_3 = tl.dataflow.image.Standardization(self.input_layer, channel_mode=True)
  40. self.randombrightness = tl.dataflow.image.RandomBrightness(self.input_layer, factor=0.5)
  41. self.randomcontrast = tl.dataflow.image.RandomContrast(self.input_layer, lower=0.2, upper=0.5)
  42. self.randomhue = tl.dataflow.image.RandomHue(self.input_layer, factor=0.5)
  43. self.randomsaturation = tl.dataflow.image.RandomSaturation(self.input_layer, lower=0.2, upper=0.5)
  44. self.randomcrop_1 = tl.dataflow.image.RandomCrop(self.input_layer, size=50)
  45. self.randomcrop_2 = tl.dataflow.image.RandomCrop(self.input_layer, size=(50, 60))
  46. self.resize_1 = tl.dataflow.image.Resize(
  47. self.input_layer, size=46, method='bilinear', preserve_aspect_ratio=False, antialias=True
  48. )
  49. self.resize_2 = tl.dataflow.image.Resize(
  50. self.input_layer, size=(32, 45), method='bilinear', preserve_aspect_ratio=True, antialias=False
  51. )
  52. self.croporpad = tl.dataflow.image.CropOrPad(self.input_layer, target_height=50, target_width=150)
  53. self.resizeandpad = tl.dataflow.image.ResizeAndPad(
  54. self.input_layer, target_height=50, target_width=150, method='bilinear'
  55. )
  56. self.rgbtohsv = tl.dataflow.image.RgbToHsv(self.input_layer)
  57. self.transpose = tl.dataflow.image.Transpose(self.input_layer, order=(3, 2, 1, 0))
  58. self.randomrotation = tl.dataflow.image.RandomRotation(
  59. self.input_layer_1, degrees=60, fill_mode='nearest', fill_value=1
  60. )
  61. self.randomshift_1 = tl.dataflow.image.RandomShift(
  62. self.input_layer_1, shift=0.5, fill_mode='nearest', fill_value=0
  63. )
  64. self.randomshift_2 = tl.dataflow.image.RandomShift(
  65. self.input_layer_1, shift=(0.5, 0.4), fill_mode='nearest', fill_value=0
  66. )
  67. self.randomshear = tl.dataflow.image.RandomShear(
  68. self.input_layer_1, degree=30, fill_mode='nearest', fill_value=1
  69. )
  70. self.randomzoom_1 = tl.dataflow.image.RandomZoom(
  71. self.input_layer_1, zoom_range=0.5, fill_mode='nearest', fill_value=1
  72. )
  73. self.randomzoom_2 = tl.dataflow.image.RandomZoom(
  74. self.input_layer_1, zoom_range=(0.5, 0.4), fill_mode='nearest', fill_value=1
  75. )
  76. self.rescale = tl.dataflow.image.Rescale(self.input_layer, scale=3, offset=4)
  77. self.randomflipvertical = tl.dataflow.image.RandomFlipVertical(self.input_layer)
  78. self.randomfliphorizontal = tl.dataflow.image.RandomFlipHorizontal(self.input_layer)
  79. self.hwc2chw = tl.dataflow.image.HWC2CHW(self.input_layer)
  80. self.chw2hwc = tl.dataflow.image.CHW2HWC(self.hwc2chw)
  81. @classmethod
  82. def tearDownClass(self):
  83. pass
  84. def test_centralcrop_1(self):
  85. self.assertEqual(tl.get_tensor_shape(self.centralcrop_1), [1, 50, 50, 3])
  86. def test_centralcrop_2(self):
  87. self.assertEqual(tl.get_tensor_shape(self.centralcrop_2), [1, 60, 60, 3])
  88. def test_hsvtorgb(self):
  89. self.assertEqual(tl.get_tensor_shape(self.hsvtorgb), [1, 100, 100, 3])
  90. def test_adjustbrightness(self):
  91. self.assertEqual(tl.get_tensor_shape(self.adjustbrightness), [1, 100, 100, 3])
  92. def test_adjustconstrast(self):
  93. self.assertEqual(tl.get_tensor_shape(self.adjustconstrast), [1, 100, 100, 3])
  94. def test_adjusthue(self):
  95. self.assertEqual(tl.get_tensor_shape(self.adjusthue), [1, 100, 100, 3])
  96. def test_adjustsaturation(self):
  97. self.assertEqual(tl.get_tensor_shape(self.adjustsaturation), [1, 100, 100, 3])
  98. def test_crop(self):
  99. self.assertEqual(tl.get_tensor_shape(self.crop), [1, 60, 60, 3])
  100. def test_fliphorizontal(self):
  101. self.assertEqual(tl.get_tensor_shape(self.fliphorizontal), [1, 100, 100, 3])
  102. def test_flipvertical(self):
  103. self.assertEqual(tl.get_tensor_shape(self.flipvertical), [1, 100, 100, 3])
  104. def test_rgbtogray(self):
  105. self.assertEqual(tl.get_tensor_shape(self.rgbtogray), [1, 100, 100, 1])
  106. def test_graytorgb(self):
  107. self.assertEqual(tl.get_tensor_shape(self.graytorgb), [1, 100, 100, 3])
  108. def test_padtoboundingbox(self):
  109. self.assertEqual(tl.get_tensor_shape(self.padtoboundingbox), [1, 150, 150, 3])
  110. def test_pad_1(self):
  111. self.assertEqual(tl.get_tensor_shape(self.pad_1), [1, 120, 120, 3])
  112. def test_pad_2(self):
  113. self.assertEqual(tl.get_tensor_shape(self.pad_2), [1, 120, 120, 3])
  114. def test_pad_3(self):
  115. self.assertEqual(tl.get_tensor_shape(self.pad_3), [1, 130, 170, 3])
  116. def test_standardization_1(self):
  117. self.assertEqual(tl.get_tensor_shape(self.standardization_1), [1, 100, 100, 3])
  118. def test_standardization_2(self):
  119. self.assertEqual(tl.get_tensor_shape(self.standardization_2), [1, 100, 100, 3])
  120. def test_standardization_3(self):
  121. self.assertEqual(tl.get_tensor_shape(self.standardization_3), [1, 100, 100, 3])
  122. def test_randomcontrast(self):
  123. self.assertEqual(tl.get_tensor_shape(self.randomcontrast), [1, 100, 100, 3])
  124. def test_randomhue(self):
  125. self.assertEqual(tl.get_tensor_shape(self.randomhue), [1, 100, 100, 3])
  126. def test_randomsaturation(self):
  127. self.assertEqual(tl.get_tensor_shape(self.randomsaturation), [1, 100, 100, 3])
  128. def test_randomcrop_1(self):
  129. self.assertEqual(tl.get_tensor_shape(self.randomcrop_1), [1, 50, 50, 3])
  130. def test_randomcrop_2(self):
  131. self.assertEqual(tl.get_tensor_shape(self.randomcrop_2), [1, 50, 60, 3])
  132. def test_resize_1(self):
  133. self.assertEqual(tl.get_tensor_shape(self.resize_1), [1, 46, 46, 3])
  134. def test_resize_2(self):
  135. self.assertEqual(tl.get_tensor_shape(self.resize_2), [1, 32, 32, 3])
  136. def test_croporpad(self):
  137. self.assertEqual(tl.get_tensor_shape(self.croporpad), [1, 50, 150, 3])
  138. def test_resizeandpad(self):
  139. self.assertEqual(tl.get_tensor_shape(self.resizeandpad), [1, 50, 150, 3])
  140. def test_rgbtohsv(self):
  141. self.assertEqual(tl.get_tensor_shape(self.rgbtohsv), [1, 100, 100, 3])
  142. def test_transpose(self):
  143. self.assertEqual(tl.get_tensor_shape(self.transpose), [3, 100, 100, 1])
  144. def test_randomrotation(self):
  145. self.assertEqual(tl.get_tensor_shape(self.randomrotation), [100, 100, 3])
  146. def test_randomshift_1(self):
  147. self.assertEqual(tl.get_tensor_shape(self.randomshift_1), [100, 100, 3])
  148. def test_randomshift_2(self):
  149. self.assertEqual(tl.get_tensor_shape(self.randomshift_2), [100, 100, 3])
  150. def test_randoshear(self):
  151. self.assertEqual(tl.get_tensor_shape(self.randomshear), [100, 100, 3])
  152. def test_randomzoom_1(self):
  153. self.assertEqual(tl.get_tensor_shape(self.randomzoom_1), [100, 100, 3])
  154. def test_randomzoom_2(self):
  155. self.assertEqual(tl.get_tensor_shape(self.randomzoom_2), [100, 100, 3])
  156. def test_rescale(self):
  157. self.assertEqual(tl.get_tensor_shape(self.rescale), [1, 100, 100, 3])
  158. def test_randomflipvertical(self):
  159. self.assertEqual(tl.get_tensor_shape(self.randomflipvertical), [1, 100, 100, 3])
  160. def test_randomfliphorizontal(self):
  161. self.assertEqual(tl.get_tensor_shape(self.randomfliphorizontal), [1, 100, 100, 3])
  162. def test_hwc2chw(self):
  163. self.assertEqual(tl.get_tensor_shape(self.hwc2chw), [1, 3, 100, 100])
  164. def test_chw2hwc(self):
  165. self.assertEqual(tl.get_tensor_shape(self.chw2hwc), [1, 100, 100, 3])
  166. if __name__ == '__main__':
  167. tl.logging.set_verbosity(tl.logging.DEBUG)
  168. unittest.main()

TensorLayer3.0 是一款兼容多种深度学习框架为计算后端的深度学习库。计划兼容TensorFlow, Pytorch, MindSpore, Paddle.