updates
This commit is contained in:
parent
e5d11c68ac
commit
23cd4ecfa7
|
@ -74,7 +74,7 @@ class LoadImages: # for inference
|
||||||
print('image %g/%g %s: ' % (self.count, self.nF, path), end='')
|
print('image %g/%g %s: ' % (self.count, self.nF, path), end='')
|
||||||
|
|
||||||
# Padded resize
|
# Padded resize
|
||||||
img, _, _, _ = letterbox_rect(img0, height=self.height)
|
img, _, _, _ = letterbox(img0, height=self.height)
|
||||||
print('%gx%g ' % img.shape[:2], end='') # print image size
|
print('%gx%g ' % img.shape[:2], end='') # print image size
|
||||||
|
|
||||||
# Normalize RGB
|
# Normalize RGB
|
||||||
|
@ -176,7 +176,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing
|
||||||
cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img)
|
cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img)
|
||||||
|
|
||||||
h, w, _ = img.shape
|
h, w, _ = img.shape
|
||||||
img, ratio, padw, padh = letterbox(img, height=self.img_size)
|
img, ratio, padw, padh = letterbox(img, height=self.img_size, mode='square')
|
||||||
|
|
||||||
# Load labels
|
# Load labels
|
||||||
labels = []
|
labels = []
|
||||||
|
@ -236,30 +236,19 @@ class LoadImagesAndLabels(Dataset): # for training/testing
|
||||||
return torch.stack(img, 0), torch.cat(label, 0), path, hw
|
return torch.stack(img, 0), torch.cat(label, 0), path, hw
|
||||||
|
|
||||||
|
|
||||||
def letterbox(img, height=416, color=(127.5, 127.5, 127.5)):
|
def letterbox(img, height=416, color=(127.5, 127.5, 127.5), mode='rect'):
|
||||||
# Resize a rectangular image to a padded square
|
|
||||||
shape = img.shape[:2] # shape = [height, width]
|
|
||||||
ratio = float(height) / max(shape) # ratio = old / new
|
|
||||||
new_shape = (round(shape[1] * ratio), round(shape[0] * ratio)) # new_shape = [width, height]
|
|
||||||
|
|
||||||
dw = (height - new_shape[0]) / 2 # width padding
|
|
||||||
dh = (height - new_shape[1]) / 2 # height padding
|
|
||||||
|
|
||||||
top, bottom = round(dh - 0.1), round(dh + 0.1)
|
|
||||||
left, right = round(dw - 0.1), round(dw + 0.1)
|
|
||||||
img = cv2.resize(img, new_shape, interpolation=cv2.INTER_AREA) # resized, no border
|
|
||||||
img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # padded square
|
|
||||||
return img, ratio, dw, dh
|
|
||||||
|
|
||||||
|
|
||||||
def letterbox_rect(img, height=416, color=(127.5, 127.5, 127.5)):
|
|
||||||
# Resize a rectangular image to a 32 pixel multiple rectangle
|
# Resize a rectangular image to a 32 pixel multiple rectangle
|
||||||
shape = img.shape[:2] # shape = [height, width]
|
shape = img.shape[:2] # shape = [height, width]
|
||||||
ratio = float(height) / max(shape) # ratio = old / new
|
ratio = float(height) / max(shape) # ratio = old / new
|
||||||
new_shape = (round(shape[1] * ratio), round(shape[0] * ratio)) # new_shape = [width, height]
|
new_shape = (round(shape[1] * ratio), round(shape[0] * ratio)) # new_shape = [width, height]
|
||||||
|
|
||||||
|
# Select padding https://github.com/ultralytics/yolov3/issues/232
|
||||||
|
if mode is 'rect': # rectangle
|
||||||
dw = np.mod(height - new_shape[0], 32) / 2 # width padding
|
dw = np.mod(height - new_shape[0], 32) / 2 # width padding
|
||||||
dh = np.mod(height - new_shape[1], 32) / 2 # height padding
|
dh = np.mod(height - new_shape[1], 32) / 2 # height padding
|
||||||
|
else: # square
|
||||||
|
dw = (height - new_shape[0]) / 2 # width padding
|
||||||
|
dh = (height - new_shape[1]) / 2 # height padding
|
||||||
|
|
||||||
top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1))
|
top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1))
|
||||||
left, right = int(round(dw - 0.1)), int(round(dw + 0.1))
|
left, right = int(round(dw - 0.1)), int(round(dw + 0.1))
|
||||||
|
|
Loading…
Reference in New Issue