文献精读——(第十八篇)YoLo3

一、文献梳理

1、文献背景

 

YOLO即“You Only Look Once”, 是目标检测算法的一种,是采用一步算法实现目标检测的算法,比较两部算法的速度上较快.YOLO一直以速度快而见长. 识别精度比目前优秀的mask rcnn相比还有差距,但是如果在消费级的GPU上实现实时的目标检测,mask RCNN还是不能实现实时的效果,采用YOLO,尤其是YOLO3,在不牺牲太多精度的情景下,非常轻松实现实时的检测效果.

2、研究成果

1)模型意义

YOLO 是目标检测算法中常用的一种模型,目前最新的YOLO V3版本不论速度和精度上都有了很大进步,yolo算法在实际应用中能很好平衡精度和速度,所以我们在实际应用中使用的还是比较多的。

2)实验及其结果

 

二、文献核心思想

Yolo算法直接将原始图片分割成互不重合的小方块,然后通过卷积最后生产这样大小的特征图,基于上面的分析,可以认为特征图的每个元素也是对应原始图片的一个小方块,然后用每个元素来可以预测那些中心点在该小方格内的目标,即Yolo将输入的图片分割成 m*m 网格,然后每个单元格负责去检测那些中心点落在该格子内的目标,这就是Yolo算法的朴素思想。

三、文献重点

1、结构框架

  • DBL: 网络,代码中的Darknetconv2d_BN_Leaky,是yolo_v3的基本组件,就是卷积+BN+Leaky relu。
  • resn: n代表数字,有res1,res2,...,res8等等,表示这个res_block里有多少个res_unit.
  • concat:张量拼接,将darknet中间层和后面的某一层的上采样进行拼接,拼接的操作和参差层add的操作是不一样的,拼接会扩充张量的维度,而add只是直接相加不会导致张量维度的改变。

2、backbone: darknet-53 

yolo_v3使用了darknet-53的前面的52层(没有全连接层,除去最后一个FC),yolo_v3这个网络是一个全卷积网络,大量使用参差的跳层连接,并且为了降低池化带来的梯度负面效果,作者直接摒弃了pooling,用conv的stride来实现降采样。在这个网络结构中,使用的是步长为2的卷积来进行降采样。主干网络被分成3个stage,结构类似FPN,1-26层卷积为stage 1, 27-43层卷积为stage 2,44-52层卷积为stage 3, 低层卷积(26)感受视野较小,负责检测小目标,深层卷积(52)感受野大,容易检测出大目标,这个网络由残差单元叠加而成。根据作者的实验,在分类准确度上跟效率的平衡上,这个模型比ResNet-101、 ResNet-152和Darknet-19表现得更好。

为了加强算法对小目标检测度,yolov3中采用类似fpn的upsample和融合做法(最后融合了3个scale,其他两个scale的大小分别是26×26和52×52,在多个scale的feature map上做检测。

3、网络输出 

网络中作者进行了3次预测,分别是在32倍降采样,16倍降采样,8倍降采样时进行检测,这样在多尺度的feature map上检测跟ssd有点像。在网络中使用up-sample(上采样)的原因,网络越深的特征表达效果越好,比如在进行16倍降采样检测,如果直接使用第4次下采样的特征来检测,这样就使用了浅层特征,这样效果一般并不好,如果想使用32倍降采样后的特征,但深层特征的大小太小,因此yolo_v3使用了步长为2的up-sample上采样,将深层特征提取,其维度是与将要融合的特征层维度是相同的(channel不同)。

4、损失函数

1)Yolov3重要改变一:

No more softmaxing the class.对图像中检测到的目标执行多标签分类。早期yolo,作者曾用softmax获取类别得分并用最大得分的标签来表示包含在边界框内的目标,在yolov3中,这种做法被修正。softmax来分类依赖于这样一个前提:即分类是相互独立的,换句话说,如果一个目标术语一种类别,那么它就不能属于另一种,但是,当我们的数据集中存在人或女人的标签时,上面所提到的前提就是失去了意义,这就是作者为什么不用softmax,而用logistic regression来预测每个类别得分并使用一个阈值来对目标进行多标签预测。比阈值高的类别就是这个边界框真正的类别。

用简单一点的语言来说,其实就是对每种类别使用二分类的logistic回归(或称为Sigmoid函数),即你要么是这种类别要么就不是,然后遍历所有类别,得到所有类别的得分,选取大于阈值的类别就好了。

2)Yolov3重要改变二:

舍弃平方误差,大都采用交叉熵除了w,h的损失函数依然采用均方误差。之外,其他部分的损失函数用的是二值交叉熵。
 

5、总结 

 一张416*416大小的图片输入,会经过很多层的深度卷积(图片中略过了层数)一直降维到52,26和13。在52,26和13维分别有三个全卷积特征提取器,对应的是右边的Convolutional Set,这就是特征提取器的内部卷积核结构,1*1的卷积核用于降维,3*3的卷积核用于提取特征,多个卷积核交错达到目的。每个全卷积特征层是有连接的,在图中为Concatenate标志,意味着当前特征层的输入有来自于上一层的输出的一部分。每个特征层都有一个输出Predict,即预测结果,最后根据置信度大小对结果进行回归,得到最终的预测结果。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Keras深度学习实战(15)——从零开始实现YOLO目标检测是一非常实用的教程。YOLO(You Only Look Once)是一种流行的实时目标检测算法,其核心思想是将目标检测任务视为回归问题,并通过卷积神经网络实现端到端的检测。这教程提供了一步一步的实现代码,让读者能够快速了解并实践YOLO目标检测的方法。 首先,教程介绍了YOLO的工作原理和网络结构。YOLO将输入图像划分为多个网格,每个网格负责预测包含在该网格中的目标。每个网格预测包含目标的方框的位置和类别,以及目标的置信度。 接下来,教程详细介绍了如何实现YOLO的网络结构。使用Keras库,创建了一个具有卷积和池化层的卷积神经网络。还使用了Anchor Boxes,用来预测不同比例和宽高比的目标。 教程还介绍了如何预处理输入图像,包括将图像调整为适当的大小,并将目标边界框转换为YOLO需要的格式。然后,选择了合适的损失函数,训练了模型,以及进行了模型评估和预测。 最后,教程提供了一些改进和扩展的思路,包括使用更大的数据集进行训练、调整网络结构和超参数等等。 通过这教程,读者可以了解到YOLO目标检测的基本原理和实现步骤。并且,使用Keras库可以很方便地实现和训练自己的YOLO模型。无论是对于已经有一定深度学习基础的读者,还是对于刚刚开始学习的读者,这教程都是非常有价值的参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值