首发于个人博客
理论分析

system.png
YOLO从v2版本开始重新启用anchor box,YOLOv2网络的网络输出为尺寸为[b,125,13,13]
的tensor,要将这个Tensor变为最终的输出结果,还需要以下的处理:
- 解码:从Tensor中解析出所有框的位置信息和类别信息
- NMS:筛选最能表现物品的识别框
解码过程
解码之前,需要明确的是每个候选框需要5+class_num个数据,分别是相对位置x,y,相对宽度w,h,置信度c和class_num个分类结果,YOLOv2-voc中class_num=20,即每个格点对应5个候选框,每个候选框有5+20=25个参数,这就是为什么输出Tensor的最后一维为5*(20+5)=125。

tensor.png
上图为一个框所需要的所有数据构成,假设这个框是位于格点X,Y的,对应的anchor box大小为W,H,位置相关参数的处理方法如下所示,其中,分别是输出Tensor在长宽上的值,这里;分别为原图片的长和宽:
置信度和类别信息处理方法如下所示:
当格点置信度大于某个阈值时,认为该格点有物体,物体类别为class_id对应的类别
NMS
NMS为非最大值抑制,用在YOLO系统中的含义指从多个候选框标记同一个物品时,从中选择最合适的候选框。其基本思维很简单:使用置信度最高的候选框标记