本章将介绍目标检测、实例分割、关键点检测和旋转目标检测的推理原理,基于onnx模型推理,那么首先就需要了解onnx模型的输入和输出,对输入的图片需要进行预处理的操作,对输出的结果需要进行后处理的操作,这部分内容在我的另一个专栏《YOLOv8深度剖析》中也有介绍,如果对YOLOv8原理感兴趣的也可以关注下那个专栏。
1.YOLOv8_det推理流程
这是目标检测网络的推理流程,包括预处理模块、推理模块(onnx)和后处理模块,下面将按照这个顺序来介绍。
1.1预处理模块
预处理模块主要是对输入图像进行预处理,处理成标准的输入数据,包括letterBox、归一化等操作,具体可以参考对应的源码。
这里主要介绍一下letterBox操作:(1)LetterBox的目的就是将原图的尺寸(720,1280)转换成网络输入尺寸(640,640);(2)缩放采用的是等比例缩放方式,即找出长边将其缩放成640,然后按照长边的缩放比例(1280/640=2),同时给短边进行缩放,得到720/2=360,然后把短边补充灰边至640;(3)如图所示经过LetterBox后的图片尺寸并不是640*640而是(384,640),这是为什么呢?这种是改进后的LetterBox,只要保证填充短边是32的