赞
踩
parser.add_argument('--task', default='speed', help='train, val, test, speed or study')
在task的参数为’train, val, test时,会默认把图片填充成矩形形状,而在yolov5中,是把一个batch_size中所用的图像填充成相同大小,并填充的大小是根据一个batch_size中所用图像的大小计算的,这导致在batch_size不同时,同一张图像的填充大小不同,从而导致结果有一定的差距。
if self.rect: # Sort by aspect ratio s = self.shapes # wh ar = s[:, 1] / s[:, 0] # aspect ratio irect = ar.argsort() self.im_files = [self.im_files[i] for i in irect] self.label_files = [self.label_files[i] for i in irect] self.labels = [self.labels[i] for i in irect] self.shapes = s[irect] # wh ar = ar[irect] # Set training image shapes shapes = [[1, 1]] * nb #nb为图片总数除以batch_size for i in range(nb): ari = ar[bi == i] mini, maxi = ari.min(), ari.max() if maxi < 1: shapes[i] = [maxi, 1] elif mini > 1: shapes[i] = [1, 1 / mini] self.batch_shapes = np.ceil(np.array(shapes) * img_size / stride + pad).astype(np.int16) * stride```
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。