赞
踩
YOLO系列博客,紧接上一篇Yolo系列算法-理论部分-YOLOv2-CSDN博客
2018年,Redmon团队推出YOLOv3的网络模型,将骨干网络(backbone)由darknet-19替换成darknet-53网络,加入特征金字塔网络结构,解决多尺度检测的问题,在分类模块中使用逻辑回归代替了softmax,在兼顾实时性的基础上还保证目标检测的准确性。
同时作者也提供了轻量级tiny-darknet,YOLO系列开始走向工程化的路线,轻量化的模型让目标检测算法在计算性能弱一些的芯片中运行成为了可能。
YOLOv3的骨干网络有了较大的升级,将ResNet残差网络思想,将darknet-19改进为darknet-53;卷积层主要使用1×1和3×3的卷积核,每个卷积层之后都会加上批量归一化和Leaky ReLU(主要是为了防止过拟合)。卷积层、批量归一化层以及Leaky ReLU共同组成darknet-53中的基本卷积单元DBL,其中包含53个DBL,网络结构细节如下图所示。
说明:
改进:
YOLOv3选择三种不同shape的Anchors,同时每种Anchors具有三种不同的尺度,一共9种不同大小的Anchors,(10×13)、(16×30)、(33×23)、(30×61)、(62×45)、(59×119)、(116×90)、(156×198)、(373×326)。
借助特征金字塔的思想,三种不同尺度的网络输出Y1、Y2和Y3,目的是预测不同尺度的目标,由于在每一个尺度网格都负责预测3个边界框,且COCO数据集有80个类,所以网络输出的张量应该是:N×N×[3 × (4 + 1 + 80)]。由下采样次数不同,得到的N不同,最终Y1、Y2和Y3的shape分别为:[13,13,255]、[26,26,255]和[52,52,255]。
损失函数中,位置损失部分并没有改变,置信度损失和类别预测损失改为了交叉熵的损失计算方法。
将YOLOv2网络结构中用于分类的softmax层修改为逻辑分类器,v2中算法认定一个目标只会从属于一个类别,根据网络输出类别得分最大值,将其归为某一类。然而在一些复杂场景中,单一目标可能从属于多个类别。
例如,在交通场景中,目标既是汽车又是卡车,单标签分类的方法就满足不了要求。
逻辑分类器是对每一个类别都进行二分类,使用sigmoid函数,将其约束到0-1,如果某一个特征图输出经过该函数处理后的值大于设定的阈值,那么就认定目标框所对应的目标属于该类。
YOLOv3在COCO数据集上测试结果,在满足检测精度差不多的情况下,有着更快的推理速度。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。