前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >目标检测算法YOLO-V3结构详解

目标检测算法YOLO-V3结构详解

作者头像
智能算法
发布2020-08-13 10:49:25
1.2K0
发布2020-08-13 10:49:25
举报
文章被收录于专栏:智能算法智能算法

❝上期我们一起学了YOLO-V2的算法结构以及跟YOLO-V1比起来有哪些优缺点,如下: 目标检测算法YOLO-V2详解 今天我们看下在YOLO-V2版本上改进的YOLO-V3算法,到底做了哪些优化?❞

今天我们主要从以下几个方面来学习YOLO-V3YOLO-V2做了哪些改进。

  • Darknet-53结构
  • YOLO-V3结构
  • 先验框设置
  • 损失函数
  • 模型性能

YOLO-V3模型框架

YOLO-V3模型框架,我们主要从它的基础网络Darknet-53以及YOLO-V3的结构方面学习,首先看下Darknet-53结构。

Darknet-53结构

Darknet-53是专门为YOLO-V3设计的一个深度学习框架,有着非常好的图像识别的效果,如下图:

Darknet-53模型结构

整个网络主要包括5组残差块,如下:

  1. 256x256输入为例,首先经过一个3x3x32的卷积层输出为256x256x32;
  2. 接着经过一个3x3x64 stride=2的卷积层输出为128x128x64;
  3. 接着经过一个残差块(前面学习残差网络的时候学过),输出为128x128x64
  4. 再经过一个3x3x128 stride=2的卷积层输出为64x64x128;
  5. 经过2个残差块后输出为64x64x128;
  6. 接着经过一个3x3x256 stride=2的卷积层输出为32x32x256;
  7. 接着经过8个残差块,输出为32x32x256
  8. 再经过一个3x3x512 stride=2的卷积层输出为16x16x512;
  9. 接着经过8个残差块后输出为16x16x512;
  10. 接着经过一个3x3x1024 stride=2的卷积层输出为8x8x1024;
  11. 接着经过4个残差块后输出为8x8x1024;
  12. 最后经过池化全连接层以及softmax输出.

这就是Darknet-53网络的具体框架,接下来我们看下YOLO-V3算法是怎么嫁接上去的。

YOLO-V3结构

YOLO-V3借鉴了前面学的SSD算法的思想,采用从不同尺度特征图上下手的检测方式,如下:

YOLO-V3结构

我们看下这个残差块,如上图右上小块,简单的说就是一组特征图与它经过两个卷积层后的特征图相加。

YOLO-V3分别从Darknet-53框架的第7步,第9步和第11步的特征图下手进行多尺度检测。首先,一起从Darknet-53最后输出的8x8x1024的特征图看如何检测的。这里将8x8x1024的特征图经过5个卷积层进行二次提取特征后拿去检测目标。而后再将提取后的特征图上采样与第9步的特征图合并经过5个卷积层进行二次提取特征后拿去检测目标。再将第9步的二次提取特征图上采样与第7步的特征图合并进行二次特征提取检测目标。

YOLO-V3一般使用416x416大小的图片作为输入,根据上面结构图,最后得到的特征图为13x13Scale2的特征图为26x26Scale3的特征图为52x52. YOLO-V3使用的是COCO数据集训练,COCO数据集目标检测有80个类别,而YOLO-V3中每个cell3box,每个box还有(x,y,w,h,confidence)五个基本参数,也就是说一个cell对应的输出维度为3x(5+80)=255(这里不明白为什么这样计算的请参考YOLO-V2算法). 所以YOLO-V33个不同特征尺度的输出,分别为13x13x255,26x26x25552x52x255的检测结果。对于416x416的输入图片,YOLO-V2中的bounding boxes13x13x5=845个,而YOLO-V3则有(13x13+26x26+52x52)x3=10467个.

模型的训练及性能

明白了YOLO-V3算法的结构,我们一起看下训练方面的东西,首先先验框该怎么设?

先验框设置

前面学的YOLO-V2算法已经开始采用K-means聚类得到先验框的尺寸,YOLO-V3延续了这种方法,为每种下采样尺度设定3中先验框,总共聚类出9中尺寸的先验框。在COCO数据集上,这9个先验框是(10x13),(16x30),(33x23),(30x61),(62x45),(59x119),(116x90),(156x198),(373x326). 分配上,在最小的13x13特征图上(有最大的感受野)应用较大的先验框(116x90),(156x198),(373x326)适合检测较大的对象。 中等的26x26特征图上(中等感受野)应用中等大小的先验框(30x61),(62x45),(59x119),适合检测中等大小的对象。 较大的52x52特征图上(较小的感受野)应用较小的先验框(10x13),(16x30),(33x23),适合检测较小的对象。如下表:

损失函数

YOLO-V3对类别预测的代价函数进行了修改,并且没有用softmax。那为什么没有用softmax呢?在原来的分类网络中softmax层都是假设一张图片或者一个object只属于一个类别,但是在一些复杂场景下,一个object可能属于多个类,比如,我们的类别中有womanperson这两类,那么如果一张图像中有一个woman,那么我们检测的结果中类别标签就要同时有womanperson这两类,这就是多标签分类。也就是一个object属于多个类别。

所以在YOLO-V3中,用了逻辑回归层来对每个类别做二分类。逻辑回归层主要用到sigmoid函数,该函数可以将输入约束在0~1的范围内,因此当一张图像经过特征提取后的某一类输出经过sigmoid函数约束后如果大于0.5,就表示属于该类,这样一个框就可以预测多个类别,代价函数用的是sigmoid的交叉熵。

模型性能

YOLO-V3在速度和准确率上都是很不错的,从下图中,我们可以看到在跟其他算法进行对比的图中,YOLO-V3inference time上处于领先地位,其中YOLOV3-320由于输入图片为320x320,所以inference time最小为22ms,而YOLOV3-608由于输入图片较大,inference time51ms,也是领先于其他算法的。虽然mAP最高的算法为FPN-FRCN,但是运行时间却要172ms。而YOLOV3-608mAP也达到了57.9

目标检测算法对比

从下面各算法在COCO数据集上的性能图中,我们也可以清楚的看到YOLO-V3算法的强大性能。

各算法在COCO数据集上的性能

好了,至此,我们今天从Darknet-53结构,YOLO-V3结构,先验框设置,损失函数,模型性能的角度对YOLO-V3做了详细的介绍,以及跟YOLO-V2对比做了哪些改进,希望对大家有些帮助。下期,我们将一起学习目标检测算法YOLO-V4

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 智能算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • YOLO-V3模型框架
    • Darknet-53结构
      • YOLO-V3结构
      • 模型的训练及性能
        • 先验框设置
          • 损失函数
            • 模型性能
            相关产品与服务
            图像识别
            腾讯云图像识别基于深度学习等人工智能技术,提供车辆,物体及场景等检测和识别服务, 已上线产品子功能包含车辆识别,商品识别,宠物识别,文件封识别等,更多功能接口敬请期待。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档