YOLO v3原理解析

      YOLO v3是从YOLO v1,YOLO v2逐步改进而来,在继承了v1,v2很多内容的基础上,也有了很多新的改进,一步步提高网络的性能,v1,v2的基础有利于v3的理解,请不熟悉v1,v2的小伙伴先参考一下博客YOLO v1原理解析,YOLO v2原理解析

YOLO系列原理概述

       通过特征提取网络对输入图像提取特征,得到一定size的feature map,比如13*13,然后将输入图像分成13*13个grid cell,接着如果ground truth中某个object的中心坐标落在哪个grid cell中,那么就由该grid cell来预测该object,因为每个grid cell都会预测固定数量的bounding box(YOLO v1中是2个,YOLO v2中是5个,YOLO v3中是3个,这几个bounding box的初始size是不一样的),那么这几个bounding box中最终是由哪一个来预测该object?答案是:这几个bounding box中只有和ground truth的IOU最大的bounding box才是用来预测该object的。可以看出预测得到的输出feature map有两个维度是提取到的特征的维度,比如13*13,还有一个维度(深度)是B*(5+C),注:YOLO v1中是(B*5+C),其中B表示每个grid cell预测的bounding box的数量,比如YOLO v1中是2个,YOLO v2中是5个,YOLO v3中是3个,C表示bounding box的类别数(没有背景类,所以对于VOC数据集是20),5表示4个坐标信息和一个置信度(objectness score)。

YOLO v3网络结构

      YOLO v3继续使用Darknet网络作为backbone,在引入resnet的思想的基础上,设计了Darknet-53,其结构如下

YOLO v3原理解析YOLO v3原理解析

YOLO v3细节说明

        前面说过YOLO v3是由v1,v2改进演变而来,所以有很多和v1,v2相似的内容就不在详细叙述.

  • Bounding Box Prediction

      bounding box的预测和v2相同,这里就不叙述了

  • 类别预测

      将原来的单标签分类改进为多标签分类,因为在一些复杂场景下,一个object可能属于多个类

  • 多scale融合预测

       从前面没出的网络结构大家就可以看出,YOLO v3采用了类似FPN的upsample和融合做法(最后融合了3个scale,其他两个scale的大小分别是26*26和52*52),在多个scale的feature map上做检测,对小目标的检测效果提升比较明显.

YOLO v3任然采用聚类的方法获取bounding box的初始尺寸,且每个feature map上anchor个数由5变成3,其尺寸如下表所示

YOLO v3原理解析

 

最后推荐一个参考资料:https://blog.paperspace.com/tag/series-yolo/,介绍如何用PyTorch实现YOLO v3算法.