目录
- 一、定义
- 二、PyTorch实现
一、定义
在训练时,每隔几轮便改变模型输入尺寸,通过对不同尺度的图像进行训练,在一定程度上提高检测模型对物体大小的鲁棒性。
二、PyTorch实现
# Multi-Scaleif multi_scale:# accumulate=16 batch_size=4# 每训练accumulate个batch(batch_size*accumulate张图片),就随机修改一次输入图片大小# 由于label已转为相对坐标,故缩放图片不影响label的值if ni % accumulate == 0: # ni=batch总个数# 在给定最大最小输入尺寸范围内随机选取一个size(size为32的整数倍)img_size = random.randrange(grid_min, grid_max + 1) * gs # img_size = 320~736sf = img_size / max(imgs.shape[2:]) # scale factor# 如果图片最大边长不等于img_size, 则缩放一个batch图片,并将长和宽调整到32的整数倍if sf != 1:# gs: (pixels) grid sizens = [math.ceil(x * sf / gs) * gs for x in imgs.shape[2:]] # new shape (stretched to 32-multiple)imgs = F.interpolate(imgs, size=ns, mode='bilinear', align_corners=False)