44from utils .box_utils import matrix_iof
55
66
7- def _crop (image , boxes , labels , img_dim , rgb_means ):
7+ def _crop (image , boxes , labels , img_dim ):
88 height , width , _ = image .shape
9+ pad_image_flag = True
910
1011 for _ in range (250 ):
1112 if random .uniform (0 , 1 ) <= 0.2 :
@@ -41,7 +42,7 @@ def _crop(image, boxes, labels, img_dim, rgb_means):
4142 b_h_t = (boxes_t [:, 3 ] - boxes_t [:, 1 ] + 1 ) / h * img_dim
4243 mask_b = np .minimum (b_w_t , b_h_t ) > 16.0
4344 boxes_t = boxes_t [mask_b ]
44- labels_t = labels_t [mask_b ]. copy ()
45+ labels_t = labels_t [mask_b ]
4546
4647 if boxes_t .shape [0 ] == 0 :
4748 continue
@@ -53,14 +54,10 @@ def _crop(image, boxes, labels, img_dim, rgb_means):
5354 boxes_t [:, 2 :] = np .minimum (boxes_t [:, 2 :], roi [2 :])
5455 boxes_t [:, 2 :] -= roi [:2 ]
5556
56- return image_t , boxes_t , labels_t
57+ pad_image_flag = False
5758
58- long_side = max (width , height )
59- image_t = np .empty ((long_side , long_side , 3 ), dtype = image .dtype )
60- image_t [:, :] = rgb_means
61- image_t [0 :0 + height , 0 :0 + width ] = image
62-
63- return image_t , boxes , labels
59+ return image_t , boxes_t , labels_t , pad_image_flag
60+ return image , boxes , labels , pad_image_flag
6461
6562
6663def _distort (image ):
@@ -85,7 +82,7 @@ def _convert(image, alpha=1, beta=0):
8582
8683 image = cv2 .cvtColor (image , cv2 .COLOR_BGR2HSV )
8784
88- # saturation distortion
85+ #saturation distortion
8986 if random .randrange (2 ):
9087 _convert (image [:, :, 1 ], alpha = random .uniform (0.5 , 1.5 ))
9188
@@ -105,7 +102,7 @@ def _convert(image, alpha=1, beta=0):
105102
106103 image = cv2 .cvtColor (image , cv2 .COLOR_BGR2HSV )
107104
108- # saturation distortion
105+ #saturation distortion
109106 if random .randrange (2 ):
110107 _convert (image [:, :, 1 ], alpha = random .uniform (0.5 , 1.5 ))
111108
@@ -159,12 +156,23 @@ def _mirror(image, boxes):
159156 return image , boxes
160157
161158
162- def preproc_for_test (image , insize , mean ):
159+ def _pad_to_square (image , rgb_mean , pad_image_flag ):
160+ if not pad_image_flag :
161+ return image
162+ height , width , _ = image .shape
163+ long_side = max (width , height )
164+ image_t = np .empty ((long_side , long_side , 3 ), dtype = image .dtype )
165+ image_t [:, :] = rgb_mean
166+ image_t [0 :0 + height , 0 :0 + width ] = image
167+ return image_t
168+
169+
170+ def _resize_subtract_mean (image , insize , rgb_mean ):
163171 interp_methods = [cv2 .INTER_LINEAR , cv2 .INTER_CUBIC , cv2 .INTER_AREA , cv2 .INTER_NEAREST , cv2 .INTER_LANCZOS4 ]
164172 interp_method = interp_methods [random .randrange (5 )]
165173 image = cv2 .resize (image , (insize , insize ), interpolation = interp_method )
166174 image = image .astype (np .float32 )
167- image -= mean
175+ image -= rgb_mean
168176 return image .transpose (2 , 0 , 1 )
169177
170178
@@ -181,12 +189,15 @@ def __call__(self, image, targets):
181189 boxes = targets [:, :- 1 ].copy ()
182190 labels = targets [:, - 1 ].copy ()
183191
184- image_t = _distort (image )
185- # image_t, boxes_t = _expand(image_t, boxes, self.cfg['rgb_mean'], self.cfg['max_expand_ratio'])
186- image_t , boxes_t , labels_t = _crop (image_t , boxes , labels , self .img_dim , self .rgb_means )
192+ #image_t = _distort(image)
193+ #image_t, boxes_t = _expand(image_t, boxes, self.cfg['rgb_mean'], self.cfg['max_expand_ratio'])
194+ #image_t, boxes_t, labels_t = _crop(image_t, boxes, labels, self.img_dim, self.rgb_means)
195+ image_t , boxes_t , labels_t , pad_image_flag = _crop (image , boxes , labels , self .img_dim )
196+ image_t = _distort (image_t )
197+ image_t = _pad_to_square (image_t ,self .rgb_means , pad_image_flag )
187198 image_t , boxes_t = _mirror (image_t , boxes_t )
188199 height , width , _ = image_t .shape
189- image_t = preproc_for_test (image_t , self .img_dim , self .rgb_means )
200+ image_t = _resize_subtract_mean (image_t , self .img_dim , self .rgb_means )
190201 boxes_t [:, 0 ::2 ] /= width
191202 boxes_t [:, 1 ::2 ] /= height
192203
0 commit comments