目录
参考:YOLO网络图像前处理的探讨(resize or letterbox) - 知乎 (zhihu.com)
图像的几种前处理方式
目标检测网络输入一般是W==H的形式,例如416x416,608x608,但是输入图像大部分情况下都不是矩形框,这需要对输入图像进行前处理以符合网络的一个输入。
扫描二维码关注公众号,回复:
14730651 查看本文章
一般有3三种:
1:resize,
直接对图像进行resize,改变了图像的长宽比,图像会拉伸,在darknet-AB中,作者用的就是这种前处理方式,原因作者解释说在相同的图像尺寸被拉伸后,进行训练和测试效果上是没有影响的,但是resize可以使得目标的尺寸变大,使得对小目标检测更加友好。
2. letterbox,像信封一样,
图像在保持长宽比的情况下,填充到一个盒子内,操作就是在短边上去填充0像素,使得图像扩充为网络输入尺寸,在原始darknet框架中,用的就是这种前处理形式。
3. blobFromImage,
opencv中深度学习的图像前处理方式,先等比例缩放,宽高尺寸一个等于对应的size尺寸,另一个大于或者等于对应的size尺寸,然后再从中心进行裁剪,得到网络输入图片,这种方式目标尺寸是大了,但是也会丢失一些图片信息。
letterbox使网络加速
在项目实际使用时,很多图片的长宽比不同,因此缩放填充后,两端的黑边大小都不同,而如果填充的比较多,则存在信息冗余,影响推理速度。
参考yolov3 issue: https://github.com/ultralytics/yolov3/issues/232
这里提出一种letterbox函数中进行了修改,对原始图像自适应的添加最少的黑边。