目标检测算法(YOLOv3)

YOLOv3在YOLOv2的基础上,改良了网络的主干,利用多尺度特征图进行检测,改进了多个独立的Logistic regression分类器来取代softmax来预测类别分类.

论文题目:YOLOv3: An Incremental Improvement

主干网络

YOLOv3提出了新的主干网络: Darknet-53 ,从第0层到第74层,一共有53层卷积层,其余均为Resnet层.

和Darknet-19相比,Darknet-53去除了所有的maxpooling层,增加了更多的1X1和3X3的卷积层,但因为加深网络层数很容易导致梯度消失或爆炸,所以Darknet-53加入了ResNet中的Residual 块来解决梯度的问题.

由下图的Darknet-53架构可以看到共加入了23个Residual block.

由于加深了网络层数,Darknet-53相比Darknet-19慢了许多,但是Darknet-53处理速度78fps,还是比同精度的ResNet快很多,YOLO3依然保持了高性能.

多尺度预测

YOLOv3借鉴了FPN的方法,采用多尺度的特征图对不同大小的物体进行检测,以提升小物体的预测能力.

YOLOv3通过下采样32倍 16倍和8倍得到3个不同尺度的特征图,例如输入416X416的图像,则会得到13X13(416/32),26X26(416/16) 以及52X52(416/8),这3个尺度的特征图.如下所示:

每个尺度的特征图会预测出3个Anchor prior, 而Anchor prior的大小则采用K-means进行聚类分析(YOLOv3延续了YOLOv2的作法). 在COCO数据集上,按照输入图像的尺寸为416X416,得到9种聚类结果(Anchor prior的wxh): (10X13),(16X30),(33X23),(30X61),(62X45),(59X119),(116X90),(156X198),(373X326)

不同大小特征图对应不同的Anchor prior

  • 13X13的特征图(有较大的感受野)用于预测大物体,所以用较大的Anchor prior 即(116X90),(156X198),(373X326)
  • 26X26的特征图(中等的感受野)用于预测中等大小物体,所以用中等的Anchor prior 即(30X61),(62X45),(59X119)
  • 52X52的特征图(较小的感受野)用于预测小物体,所以用较小的Anchor prior 即(10X13),(16X30),(33X23)

网络结构

我们先来看YOLOv3的网络结构如下所示:

  • 若输入416X416的图像,在79层卷积后,会先经过32倍的下采样,在通过3X3,1X1的卷积层后,得到13X13的特征图(第82层)
  • 为了实现能够检测小物体,借鉴了FPN的方法,将第79层13X13的特征图进行上采样,与第61层的特征图进行合并(concat),在经过16倍的下采样以及3X3,1X1的卷积后,得到26X26的特征图(第94层)
  • 接着第91层26X26的特征图再次上采样,并与第36层26X26的特征图进行合并(concat),在经过8倍下采样以及3X3,1X1的卷积层后,得到52X52的特征图(第106层)

YOLOv2 VS YOLOv3

  • YOLOv2采用passthrough结构来检测小物体的特征,而YOLOv3采用3个不同尺度的特征图来进行检测
  • YOLOv2预测输出的bounding box共有13X13X5=845个, 而YOLOv3有13X13X3+26X26X3+52X52X3=10647个

YOLOv1 VS YOLOv2 VS YOLOv3

  • YOLOv1在特征图(7X7)的每一个网格里预测出2个bounding box以及分类概率值,每个bounding box预测5个值
  • YOLOv1总输出为 7X7X(2X5+20)
  • YOLOv2在特征图(13X13)的每一个网格里预测5个bounding box(对应5个Anchor Box),每个bounding box预测出5个值以及分类概率值
  • YOLOv2总输出为 13X13X5X(5+20)
  • YOLOV3在3个特征图的每一个网格中预测出3个bounding box(对应3个Anchor prior),每个bounding box预测5个值以及分类概率值(YOLOv3采用的为COCO数据集,共有80类)
  • YOLOv3总输出为13X13X3X(5+80)+26X26X3X(5+80)+52X52X3X(5+80)

框的预测

YOLOv3使用Logistic regression来预测每个bounding box的confidence,以bounding box与gt的IOU为判定标准,对每个gt只分配一个最好的bounding box.通过利用这种方式,在做Detect之前可以减少不必要的Anchor进而减少计算量.

  • 正样本: 将IOU最高的bounding box, confidence score设置为1
  • 忽略样本: 其他不是最高IOU的bounding box 并且IOU大于阈值(0.5),则忽略这些bounding box, 不计算loss
  • 负样本: 若bounding box 没有与任一gt对应,则减少其confidence score

为什么YOLOv3要将正例confidence score设置为1?

  • 因为confidence score是指该bounding box是否预测出一个物体的置信度,是一个二分类.并且在学习小物体时,有很大程度会影响IOU.如果像YOLOv1使用bounding box与gt的IOU作为confidence,那么confidence score始终很小,无法有效学习,导致检测的Recall不高.

为什么存在忽略样本?

  • 由于YOLOV3采用了多尺度的特征图进行检测,而不同尺度的特征图之间会有重合检测的部分.
  • 例如检测一个物体时,在训练时它被分配到的检测框是第一个特征图的第三个bounding box, IOU为0.98, 此时恰好第二个特征图的第一个bounding box与该gt的IOU为0.95,也检测到了该gt,如果此时给其confidence score强行打0,网络学习的效果会不理想.

类别的预测

YOLO之前都是使用softmax去分类每个bounding box,但softmax只适用于单目标多分类(甚至类别是互斥的假设),而预测目标里可能有重叠的标识(属于多个类并且类别之间有相互关系),比如Person和Women

因此YOLOv3改采用多个独立的Logistic regression分类器(可以对多标识进行多分类预测)替代,使用二分类交叉熵作为损失函数,并且保证准确率不会下降.

损失函数

1、bounding box中心点坐标xy与宽高

  • 一样沿用YOLOv2的offset做计算
  • (bxi,byi)(b_{xi},b_{yi})(bxi​,byi​) 为gt框的中心点坐标, (b^xi,b^yi)(\hat{b}_{xi},\hat{b}_{yi})(b^xi​,b^yi​)为预测框的中心点坐标
  • (bwi,bhi)(b_{wi},b_{hi})(bwi​,bhi​)为gt框的宽和高, (b^wi,b^hi)(\hat{b}_{wi},\hat{b}_{hi})(b^wi​,b^hi​)为预测框的宽和高
  • 1xiobj1^{obj}_{xi}1xiobj​ 为第i个网格中第j个bounding box是否为正例,若是则输出1,否则为0
  • λcoord=5\lambda_{coord}=5λcoord​=5使模型着重于物体定位能力

2、bounding box物体的置信度

  • 1xiobj1^{obj}_{xi}1xiobj​ 为第i个网格中第j个bounding box是否为负例,若是则输出1,否则为0
  • 若是忽略样例(不是正例及负例),则皆输出0 (不产生任何loss)
  • 无物体的系数λnobj=5\lambda_{nobj}=5λnobj​=5使得模型专注于有物体的识别,并降低找到没有物体的情形

YOLOv3在bounding box坐标与宽高的loss 计算时多乘了(2−bwi∗bhi)(2-b_{wi}*b_{hi})(2−bwi​∗bhi​)系数并且在confidence score跟class的损失函数中使用二分类的交叉熵,如下所示:

YOLOv2 VS YOLOv3

模型评价

由下图可以看到:若采用COCO AP做为评价标准,YOLOv3在处理608X608图像速度可以达到20FPS;若采用COCO mAP50做评估标准, YOLOv3的表现达到57.9%,与RetinaRet的结果相近,并且速度快4倍,在实现相同准确度下YOLOv3要显著地比其他检测方法快.

总结

本文介绍了YOLO V3的网络架构和相应的具体实现细节,重点介绍了利用多尺度特征图进行检测以及利用多个独立的Logistic regression分类器来取代softmax来预测类别分类.

目标检测算法(YOLOv3)相关推荐

  1. 论文阅读笔记 | 目标检测算法——PP-YOLO

    如有错误,恳请指出. 文章目录 1. Introduction 2. Related Work 3. PP-YOLO 3.1 Architecture 3.1.1 Backbone 3.1.2 Det ...

  2. 目标检测算法——YOLOv4

    以下内容如有错误,恳请指出. 而且查阅参考的资料也有点多,参考链接若有遗落,也恳请指出,会立刻补上 文章目录 1.YOLOv4简介 2.YOLOv4相关工作 1)对象检测模型 2)Bag of fre ...

  3. 使用PyTorch从零开始实现YOLO-V3目标检测算法 (一)

    原文:https://blog.csdn.net/u011520516/article/details/80222743 点击查看博客原文 标检测是深度学习近期发展过程中受益最多的领域.随着技术的进步 ...

  4. 使用pytorch从零开始实现YOLO-V3目标检测算法 (二)

    原文:https://blog.csdn.net/u011520516/article/details/80212960 博客翻译 这是从零开始实现YOLO v3检测器的教程的第2部分.在上一节中,我 ...

  5. 使用PyTorch从零开始实现YOLO-V3目标检测算法 (四)

    原文:https://blog.csdn.net/u011520516/article/details/80228130 点击查看博客原文 这是从零开始实现YOLO v3检测器的教程的第4部分,在上一 ...

  6. 使用PyTorch从零开始实现YOLO-V3目标检测算法 (三)

    原文:https://blog.csdn.net/u011520516/article/details/80216009 点击查看博客原文 这是从零开始实现YOLO v3检测器的教程的第3部分.第二部 ...

  7. 3目标检测的准确率_吊打YOLOv3!普林斯顿大学提出:CornerNetLite,基于关键点的实时且精度高的目标检测算法,已开源!...

    点击上方"CVer",选择"星标"和"置顶" 重磅干货,第一时间送达 前戏 最近目标检测方向,出了很多很棒的paper,CVer也立即跟进报 ...

  8. YOLOv3目标检测算法——通俗易懂的解析

    目录 YOLOv3目标检测算法 前沿 一.YOLOv3 二.损失函数 YOLOv3目标检测算法 前沿 前两篇文章我们讲了下关于YOLOv1和YOLOv2的原理,有不懂的小伙伴可以回到前面再看看: YO ...

  9. 目标检测算法模型YOLOV3原理及其实战 课程简介

    前言 在移植目标检测算法模型到海思AI引擎上运行的过程中,深切感受到理解和掌握算法模型原理的重要性. 基于此,我出了一门专门来讲目标检测算法模型原理及实战的课程.虽然讲的是YOLOV3模型,但是对理解 ...

最新文章

  1. ubuntu切换python3_Ubuntu 18.04 切换使用Python3
  2. 利用AOP实现对方法执行时间的统计
  3. git使用,Git的skil-map
  4. Netty与Spring WebSocket
  5. Spring Data JPA教程第一部分:配置
  6. JTA的含义及应用简介
  7. 基于redis(v3.2+)实现“附近的人”功能
  8. 学习设计模式系列之一:单例模式
  9. SharePoint 2013 的HTML5特性之响应式布局
  10. mac打开软件显示没有权限不能打开
  11. 屏幕录像专家 V2013 + 注册机(屏幕录像)
  12. 智能家居 (9) ——人脸识别摄像头安装实现监控功能
  13. 校园网ensp模拟搭建
  14. 用”虚短“和”虚断“分析运放电路
  15. Guns二次开发(十四):集成 ueditor 富文本编辑器
  16. BZOJ 3162 / Luogu P4895: 独钓寒江雪 树hash+DP
  17. 第一代GCN: Spectral Networks and Locally Connected Networks on Graphs
  18. php图形验证码验证,php图片验证码代码
  19. 英文字母替换加密(大小写转换+后移1位)PTA
  20. 【演武厅】表达式求值实例

热门文章

  1. 成都计算机职高学校排名,成都计算机职高排名
  2. 通过 Webhook 接收数据库变更通知
  3. 当时若爱韩公子,埋骨成灰恨未休
  4. 自动视觉锁螺丝机及其控制系统
  5. CSS小练习4——w3School导航栏
  6. 第5章 存储系统 思维导图
  7. ADI Blackfin DSP处理器-BF533的开发详解31:汉字/ASIC II 字库(含源代码)
  8. MDK中AT45DB161驱动程序
  9. H5活动页面遇到的坑+微信分享代码
  10. 飞鸽传书网因存在低俗内容致网友的道歉信