目标检测之YOLOV3解读

YOLOv3:An Incremental Improvement 解读,入门小白,若博文有不妥之处,望加以指点,笔者一定及时修正。
YOLOV1解读:(https://blog.csdn.net/qq_33948796/article/details/88538940)
YOLOV2解读:(https://blog.csdn.net/qq_33948796/article/details/88561542)


文章目录

  • ① 前言
  • ② YOLOV3论文翻译
    • 摘要
    • 1、引言
    • 2、YOLOV3内容
      • 2.1 Bounding Box Prediction
      • 2.2 类别预测
      • 2.3 多尺度预测
      • 2.4 网络结构
  • ③ 总结
  • ④主要参考:


YOLOV1解读:(https://blog.csdn.net/qq_33948796/article/details/88538940)
YOLOV2解读:(https://blog.csdn.net/qq_33948796/article/details/88561542)


① 前言

首先介绍一下YOLO整个系列的算法思路:通过卷积神经网络对 i n p u t   i m a g e input \ image input image 提取特征,很多层,每个层都得到一定尺寸的 f e a t u r e   m a p feature \ map feature map。比如YOLOV2输入 416x416 分辨率的时候,最后一层的输出是 416 / 32 = 13 , 13 X 13 416/32=13,13X13 416/32=1313X13。然后将输入图像分成 13x13 个网络格子。然后如果 g r o u n d   t r u t h ground \ truth ground truth中的某个目标的中心点落在哪个格子里面,该格子就负责预测这个目标。每个 g r i d   c e l l grid \ cell grid cell 预测的 b o u n d i n g   b o x e s bounding \ boxes bounding boxes的数目的一定的(YOLOV1的数目是2,YOLOV2的数目是5,YOLOV3的数目是3,但是这几个 b o u n d i n g   b o x e s bounding \ boxes bounding boxes 的初始大小不一样)。而固定数量的 b o u n d i n g   b o x e s bounding \ boxes bounding boxes里面哪一个才真正的来预测目标呢?论文中是这样处理的:这几个 b o u n d i n g   b o x e s bounding \ boxes bounding boxes 里面与 g r o u n d   t r u t h ground \ truth ground truth 的 IOU最大的那个才是真正用来预测该 o b j e c t object object。一个维度是最后的特征图,如 YOLOV2的 13x13,还有一个维度是深度,是 B ∗ ( 5 + C ) B*(5+C) B(5+C)。这边 B 是每个格子的预测框数,5 代表框的坐标和置信度,C表示预测的类别数。YOLOV1,YOLOV2,YOLOV3里面的 B 和 C是不一样的,详细可以参考我前面的博客。
这边给出三个网络结构图,主要参考:这位大牛的。
YOLOV1的网络结构图
目标检测之YOLOV3解读_第1张图片


YOLOV2的网络结构图:
目标检测之YOLOV3解读_第2张图片


YOLOV3的网络结构图
目标检测之YOLOV3解读_第3张图片


② YOLOV3论文翻译

摘要

emmmmmm…不重要,跳!


1、引言

emmmmmm…也无关重要,再跳!


2、YOLOV3内容

2.1 Bounding Box Prediction

YOLOV2使用维度聚类作为 A n c h o r   b o x e s Anchor \ boxes Anchor boxes来源来预测边界框(YOLOV2论文提及了可以人为地设定 A n c h o r   b o x e s Anchor \ boxes Anchor boxes 的面积和大小,后面介绍了聚类可以给更有效的开始,详细可以参考我的博客)。YOLOV3跟YOLOV2一样,还是使用维度聚类进行选择 A n c h o r   b o x e s Anchor \ boxes Anchor boxes。同时,YOLOV3使用 L o g i s t i c   r e g r e s s i o n Logistic \ regression Logistic regression 来预测每个边界框里面对象的分数,用来区分对象和背景。当某个 b o u n d i n g   b o x bounding \ box bounding box g r o u n d   t r u t h ground \ truth ground truth 的 IOU大于其他所有的 b o u n d i n g   b o x bounding \ box bounding box时, t a r g e t target target 值赋1;如果某个 b o u n d i n g   b o x bounding \ box bounding box 不是 IOU最大的那个,但是 IOU 也大于了某个阈值,那么忽略这个框,既不惩罚也不奖励。对每个 g r o u n d   t r u t h ground \ truth ground truth只分配一个最好的 b o u n d i n g   b o x bounding \ box bounding box 与其对应。如果某个 b o u n d i n g   b o x bounding \ box bounding box 没有与任何一个 g r o u n d   t r u t h ground \ truth ground truth 对应,那么这个框对边框位置大小的回归和类别预测没有帮助,只会惩罚他的 o b j e c t s objects objects,试图减小他的 c o n f i d e n c e confidence confidence

2.2 类别预测

YOLOV3不使用 s o f t m a x softmax softmax 对每个框进行分类,因为 s o f t m a x softmax softmax 使每个框分配一个类别(得分最高的一个)。而很多东西是重叠的标签,比如预测的是女生,也属于人这一个类别,属于多标签问题,而 s o f t m a x softmax softmax 不适合多标签分类。因为 s o f t m a x softmax softmax 强加一个假设,使得每个框只包含一个类别。逻辑回归层主要用到sigmoid函数,该函数可以将输入约束在0到1的范围内,因此当一张图像经过特征提取后的某一类输出经过sigmoid函数约束后如果大于0.5,就表示属于该类。 所以 s o f t m a x softmax softmax 可被独立的多个 L o g i s t i c Logistic Logistic 分类器代替,且准确率不会下降。分类损失使用二元交叉熵损失函数。

2.3 多尺度预测

这一部分主要参考:这位大牛的。
YOLOV2里面有一个层叫做: p a s s t h r o u g h   l a y e r passthrough \ layer passthrough layer 。最后的 f e a t u r e   m a p feature \ map feature map s i z e size size 是 13x13。这个层的作用:将前一个 p o o l i n g pooling pooling 层和本层进行 c o n c a t concat concat,类似于 R e s N e t ResNet ResNet,目的也是加强对小目标的检测。而在YOLOV3中,采用了 u p s a m p l e upsample upsample 和融合,YOLOV3里面融合了3个 s c a l e scale scale,三个尺寸为:13x13,26x26,52x52。 在多个 f e a t u r e   m a p feature \ map feature map 做检测,
目标检测之YOLOV3解读_第4张图片
结合上图看,卷积网络在79层后,经过下方几个黄色的卷积层得到一种尺度的检测结果。相比输入图像,这里用于检测的特征图有32倍的下采样。比如输入是 416x416 的话,这里的特征图就是 13x13 了。由于下采样倍数高,这里特征图的感受野比较大,因此适合检测图像中尺寸比较大的对象。 为了实现细粒度的检测,第79层的特征图又开始作上采样(从79层往右开始上采样卷积),然后与第61层特征图融合(Concatenation),这样得到第91层较细粒度的特征图,同样经过几个卷积层后得到相对输入图像16倍下采样的特征图。它具有中等尺度的感受野,适合检测中等尺度的对象。 最后,第91层特征图再次上采样,并与第36层特征图融合(Concatenation),最后得到相对输入图像8倍下采样的特征图。它的感受野最小,适合检测小尺寸的对象。

这篇博客里面网络结构图也很通俗易懂,大牛叙述的很棒,参考链接在下面:YOLOV3结构图。

YOLOV3为每个特征图聚类3种尺寸的先验框,那么一共有9个先验框。下面简单的看一下9种先验框的尺寸。
目标检测之YOLOV3解读_第5张图片 目标检测之YOLOV3解读_第6张图片目标检测之YOLOV3解读_第7张图片
红色的为格子,黄色的为真实框,蓝色的为聚类的先验框。

2.4 网络结构

D a r k n e t − 53 Darknet-53 Darknet53 ,感觉只有 D e b u g Debug Debug 时候才会理解!
余下的跳过。。。。。


③ 总结

1、网络结构使用了类似的金字塔网络;
2、用 L o g i s t i c Logistic Logistic 代替 s o f t m a x softmax softmax ;
3、网络结构;
4、有了YOLOV3,不用提YOLOV2,和YOLOV1。但是还是需要从V1,V2一步一步来理清!
5、YOLOV3的不足,当IOU > 0.5时, m a p map map后劲不足!


嘿!最近在调试YOLOV3的代码,哎,估计个把月才能弄懂源码,科研真难受!github上面见,敬请期待!


④主要参考:

1、https://zhuanlan.zhihu.com/p/47575929
2、https://zhuanlan.zhihu.com/p/46691043
3、https://blog.csdn.net/u014380165/article/details/80202337
4、https://www.jianshu.com/p/d13ae1055302
5、YOLO官网:YOLO: Real-Time Object Detection
6、论文链接:https://pjreddie.com/media/files/papers/YOLOv3.pdf
7、Youtube:https://www.youtube.com/watch?v=MPU2HistivI
8、知乎话题:如何评价YOLOv3: An Incremental Improvement?

你可能感兴趣的:(目标检测,YOLOV3,YOLOV2,YOLOV1,目标检测,Darknet)