• YOLO之Mini_Rect Training(矩形训练)


            mini_rect training 又称矩形训练,是从YOLOV3开始引入的一个训练技巧。在YOLOV3之前的网络训练都是Square training,即输入图片是正方形,如 416*416、 640*640等。

            Square training的优点是,图片的大小一致,方便训练处理;缺点是,在填充图片的过程中,引入了冗余信息,并且这一部分信息对于样本来说属于完全无用数据,增加了训练计算量。

            下面第一张图为原始图像,分辨率为810*1080,进行正方形训练对图像进行处理后填充到640*640后如下第二张图所示,左右填充了冗余数据。

            为了优化这个问题,从yolov3开始提出mini_rect training 训练策略

            mini_rect training 即对图片进行加载时,将原始图片的较长的边填充到最大长度,短边只填充到32的倍数。

            处理代码如下:

             经过处理后,大大缩小了原来正方形训练时引入冗余信息。矩形训练引入较少的冗余信息,可以加快训练速度。如下图所示处理后分辨率为512*640, 左右冗余数据明显减少。

            如果采用mini_rect training,那么整个batch内的图片的shape要一致,这就需要计算这个符合整个batch的shape。而且还要对数据集按照高宽比进行排序,这样才能保证同一个batch的图片的形状差不多相同,再选则一个共同的shape代价也比较小。

            以下为yolov5/8下处理batch shape大小代码:

            这就导致在dataloader时不能使用shuffle功能,如果使用shuffle功能,将随机打乱图片顺序,不能保证在一个batch处理时数据尺寸基本一致。在YOLOV8中同时设置 rect 和 shuffle会报警告信息,并禁用shuffle操作。

            总结,mini_rect training是为了减少冗余信息,提高训练推理速度及精度,使用mini_rect training时不能使用shuffle操作。

  • 相关阅读:
    Egress Gateway
    python——数理统计,概率
    人体轮廓特征—运动历史图—python实现
    Creo 9.0 中几何对象的选取方法
    MySQL 常用优化方式
    一套完整的养老院人员定位解决方案包含哪些内容?
    计算机毕业设计springboot+vue基本安卓/微信小程序的驾校考试预约系统 uniapp
    C#学习系列相关之多线程(二)----Thread类介绍
    基于改进D-S证据理论的多源空战信息博弈融合方法
    MySQL 8.*版本 修改root密码报错
  • 原文地址:https://blog.csdn.net/yueguang8/article/details/136678194