当前位置: 代码迷 >> 综合 >> 【trick 4】multi-scale training多尺度训练 —— 提高模型对物体大小的鲁棒性
  详细解决方案

【trick 4】multi-scale training多尺度训练 —— 提高模型对物体大小的鲁棒性

热度:16   发布时间:2023-12-14 09:38:42.0

目录

  • 一、定义
  • 二、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)
  相关解决方案