在这章中将介绍目标检测推理原理,以及基于onnx模型使用Python语言进行推理。在推理原理章节中,将了解onnx模型的输入和输出,对输入的图片需要进行预处理的操作,对输出的结果需要进行后处理的操作等;在Python代码篇,将给出推理代码。
这里注意一下的是,由于在导出onnx模型的时候,V8已经帮我们进行了解码操作,所以onnx模型结果输出和我在《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后的图片尺寸并不