目标检测:YOLOV3技术详解
前言
YOLOV3是V2的升级版,也是原作者的绝笔,V3主要还是把当时一些有用的思想融入了进来,没有什么创新型的突破,具体细节我们下面介绍。
主要改进
DarkNet53
从yolov2的darknet19 转换为了新的darknet53,主要借鉴了FPN的思想,引入了多个感受野的特征融合,具体如下图:
CBL模块:卷基层+BN层+Leaky relu激活函数
ResUnit模块:两个CBL层+残差连接
ResX模块:CBL模块+ X个ResUnit模块
Concat:代表channel维度的叠加(就好比高中时期课代表收作业,最终会抱着很高的作业,把每一本作业必做一个feature map,那么这个作业本堆叠的过程就叫concat)。
网络输出3个大小不同feature map,这三个的感受野不同,作者用他们分别负责识别不同大小的目标,作者在聚类挑选anchor的时候,分成9个cluster,最小的三个尺度划分给 hw为76的feature,以此类推。
新的分类器
由于 COCO数据集的类别从20增加到80,会有很多类似的类别,比如说男人于女人,他们虽然可以看成两类,但是本身也有联系,而Softmax分类器假设的是所有类别互不相关,所以作者对每一个类别改用softmax的二分类。
正负样本的匹配
作者设定了两个IOIU阈值,假设为0.5,0.3,表示如果anchor与ground truth的IOU大于等于0.5或者是anchor中IOU最大的,则设定为正样本,小于0.3的设定为负样本,然而大于0.5却不是IOU最大的则直接丢弃。
然而在Ultralytics版本的代码中,没有采取这个策略,因为会造成正样本不足。