yolov--12--YOLOv3的原理深度剖析和关键点讲解

Yolov-1-TX2上用YOLOv3训练自己数据集的流程(VOC2007-TX2-GPU)

Yolov--2--一文全面了解深度学习性能优化加速引擎---TensorRT

Yolov--3--TensorRT中yolov3性能优化加速(基于caffe)

yolov-5-目标检测:YOLOv2算法原理详解

yolov--8--Tensorflow实现YOLO v3

yolov--9--YOLO v3的剪枝优化

yolov--10--目标检测模型的参数评估指标详解、概念解析

yolov--11--YOLO v3的原版训练记录、mAP、AP、recall、precision、time等评价指标计算

yolov--12--YOLOv3的原理深度剖析和关键点讲解


yolo-v3原理深度剖析

问题

1、yolo-v3的架构是什么?

  • darknet-53、顾名思义有53个卷积层
  • DarkNet_53= Conv3x3 + Sum_(下采样 Conv3x3_步长为2 + N x DarkNetBlock)         ---N为下采样次数

    DarkNetBlock(含2层卷积)= Conv1x1 + Conv3x3 + Residual     

    所以我们可以发现DarkNet-53一共有1 + (1 + 1 x 2 ) + (1 + 2 x2) + (1 + 8 x 2) + (1 + 8 x 2) + (1 + 4 x 2) +全连接= 53个卷积层。

 

 


从上面的模型的网络结构图我们可以明显看出基于darknet-53的最新的模型结构有以下几个特点:

  1. 从网络的不同层次映射不同尺寸的输出,如图中从79层(外加两个卷积层)得到13*13的的输出;从91层(外加两个卷积层)得到26*26的输出;最后再得到52*52的输出。
  2. 后面的高层结合使用低层特征(图中的86、98层,分别使用了61层和36层的特征映射),使高层能使用细粒度(fine grained)特征和更多的语义信息。
  3. 最后一个尺寸输出使用了前两个尺寸计算的特征映射,使得最后的尺寸输出也能使用细粒度。
  4. 每个YOLO输出层中,每个grid cell的bounding box数量为3,而不是9,这样不同的YOLO输出层便能负责不同尺寸大小的对象预测了,这个思想来自SSD。例如,COCO数据集中,作者让YOLO scale1负责预测的尺寸有(10,13)、 (16,30)和 (33,23), YOLO scale2负责预测的尺寸有(30,61)、(62,45)和(59,119),YOLO scale3负责预测的尺寸有(116,90)、(156,198)和(373,326)。

多尺度预测:

Yolov3采用了类似SSD的mul-scales策略,使用3个scale(13*13,26*26,52*52)的feature map进行预测。

有别于yolov2,这里作者将每个grid cell预测的边框数从yolov2的5个减为yolov3的3个。最终输出的tensor维度为N × N × [3 ∗ (4 + 1 + 80)] 。其中N为feature map的长宽,3表示3个预测的边框,4表示边框的tx,ty,tw,th,1表示预测的边框的置信度,80表示分类的类别数。

和yolov2一样,anchor的大小作者还是使用kmeans聚类得出。在coco数据集上的9个anchor大小分别为:(10× 13); (16× 30); (33× 23); (30× 61); (62× 45); (59×119); (116 × 90); (156 × 198); (373 × 326)

其中在yolov3中,最终有3个分支输出做预测,输出的特征图大小分别为13*13,26*26,52*52,每个特征图使用3个anchor,

13*13的特征图使用(116 × 90); (156 × 198); (373 × 326);这3个anchor

26*26的特征图使用(30× 61); (62× 45); (59×119);这3个anchor

52*52的特征图使用(10× 13); (16× 30); (33× 23);这3个anchor

而在yolov3-tiny中,一共有6个anchor,(10,14), ( 23,27),  (37,58),  (81,82),  (135,169),  (344,319),

yolov3-tiny最终有2给分支输出作预测,特征图大小分别为13*13,26*26。每个特征图使用3个anchor做预测。

13*13的特征图使用(81,82),  (135,169),  (344,319)这3个anchor

26*26的特征图使用( 23,27),  (37,58),  (81,82)这3个anchor


2、  每个Convolutional是什么结构? 

  • 与YOLO V2相同,每个Conv后面是Batch Normalization和Leaky ReLU操作,具体如图:

什么是Batch Normalization? 

什么是Leaky ReLU?

 

2、YOLO V3和YOLO V2的 backbone有什么区别和相同点?

  •  整个v3结构里面,是没有池化层和全连接层的。
  • 前向传播过程中,张量的尺寸变换是通过改变卷积核的步长来实现的,比如stride=(2, 2),这就等于将图像边长缩小了一半(即面积缩小到原来的1/4)。在yolo_v2中,要经历5次缩小,会将特征图缩小到原输入尺寸的1/32。若输入为416x416,则输出为13x13(416/32=13)。
  • yolo_v3也和v2一样,backbone都会将输出特征图缩小到输入的1/32。所以,通常都要求输入图片是32的倍数。

可以对比v2和v3的backbone看看:(DarkNet-19 与 DarkNet-53)


    分析上图发现:

  • yolo_v2中对于前向过程中张量尺寸变换,都是通过最大池化来进行,一共有5次。而v3是通过卷积核增大步长来进行,也是5次。(darknet-53最后面有一个全局平均池化,在yolo-v3里面没有这一层,所以张量维度变化只考虑前面那5次)。这也是416x416输入得到13x13输出的原因。
  • darknet-19是不存在残差结构(resblock,从resnet上借鉴过来)的,和VGG是同类型的backbone(属于上一代CNN结构),而darknet-53是可以和resnet-152正面刚的backbone。

3、YOLO V1误差函数图更改

有些博客YOLO V1误差函数图有误,在此更改并强调!


若加微信请备注下姓名_公司/学校,相遇即缘分,感谢您的支持,愿真诚交流,共同进步,谢谢~ 

 


https://blog.csdn.net/qq_33869371/article/details/87706617 

https://blog.csdn.net/qq_33869371/article/details/90438256

https://blog.csdn.net/qq_33869371/article/details/89416062


参考:

https://blog.csdn.net/leviopku/article/details/82660381#commentBox

https://blog.csdn.net/chandanyan8568/article/details/81089083 

https://www.cnblogs.com/CJT-blog/p/10457438.html

https://blog.csdn.net/qq_27825451/article/details/88971395 

https://www.jianshu.com/p/86b8208f634f

  • 7
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明宇朗心

你的鼓励将是我创作的最大动力♥

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值