1. YOLOv3理论篇
  2. YOLOv3实践篇

背景介绍:

YOLOv3的基本思想与YOLOv2大致相同,过程如下:

  • 将输入图像分成S*S个格子,每个格子负责预测中心在此格子中的物体;
  • 每个格子预测B个bounding box及其置信度(confidence score),以及C个类别概率;
  • bbox信息(x,y,w,h)为物体的中心位置相对格子位置的偏移及宽度和高度,均被归一化;
  • 置信度反映是否包含物体,以及包含物体情况下位置的准确性。定义为Pr(Object)×IoU,其中Pr(Object)∈{0,1}

v3版本融合多种先进方法,尤其在小目标检测上效果有一定的提升,是一个速度和精度均衡的目标检测网络。

网络模型:

  • 在Backbone特征提取模块中YOLOv3采用Darknet53作为特征提取部分,参考ResNet模型引入残差模块(将一组特征图与它经过两个卷积层后的特征图相加)其中1,2,8,8,4代表有几个重复的残差模块在整个v3结构里面将池化换成了卷积,下采样是通过设置卷积的stride为2来达到的,每当通过这个卷积层之后图像的尺寸就会减小到一半。每个卷积层的实现包含Conv+BN+Leaky relu ,每个残差模块之后加上一个zero padding:
  • 为什么引入残差(Residual)模块?主要因为网络越深,梯度消失的现象就越来越明显,网络的训练效果也不会很好。残差神经网络就是为了在加深网络的情况下又解决梯度消失的问题。残差结构可以不通过卷积,直接从前面一个特征层映射到后面的特征层(跳跃连接),有助于训练,也有助于特征的提取,容易优化。
  • 在Neck特征增强模块中引入FPN结构,输入图像经过多个Stage的卷积之后,特征图的语义信息在网络更深、感受野更大时,能获取更高级的语义信息,分类效果会更好。但是对于确定bbox精准的位置信息上,在小尺寸的特征图上预测原图中目标的位置偏差较大,所以FPN模块通道先降后升再add,将不同尺度的信息融合,输出多个新的特征图。利用经过top-down模型后的那些上下文信息(高层语义信息),对于小目标而言FPN增加了特征映射的分辨率(即在更大的feature map上面进行操作,这样可以获得更多关于小目标的有用信息):
  • 在Head检测阶段采用了3个不同尺度的特征图来进行对象检测,能够检测的到更加细粒度的特征,如下图所示:对于一个416x416的输入图像,经过5个步长为2的卷积来进行降采样(416 / 2ˆ5 = 13,y1输出(13×13)。从y1的倒数第二层的卷积层上采样(x2,up sampling)再与最后一个26×26大小的特征图张量连接,y2输出(26×26)。从y2的倒数第二层的卷积层上采样(x2,up sampling)再与最后一个52×52大小的特征图张量连接,y3输出(52×52)。在每个尺度的特征图的每个网格设置3个先验框,总共有 13x13x3 + 26x26x3 + 52x52x3 = 10647 个预测。每一个预测是一个(4+1+80)=85维向量,这个85维向量包含边框坐标(4个数值),边框置信度(1个数值),对象类别的概率(对于COCO数据集,有80个类)。
  • YOLOv3版本也使用kmeans聚类anchor,在COCO数据集上聚类出9个anchor,分别为(10x13),(16x30),(33x23),(30x61),(62x45),(59x119),(116x90),(156x198),(373x326)分配到输出层的3个特征图上:

损失函数:

YOLOv3使用Sigmoid函数进行中心坐标预测,这使得输出值在0和1之间。模型预测的是与预测目标的网格单元左上角相关的偏移;并且使用特征图中的grid cell大小进行归一化。当输入图像为416*416,如果中心的预测是 (0.4, 0.7),则第二个grid cell在 13 x 13 特征图上的相对坐标是 (1.4, 1.7),实际位置x坐标还需要1.4乘以grid cell的宽,y坐标为1.7乘以grid cell的高。网络预测的bw 和bh使用对数值相对于anchor宽高的偏移,所以定位损失分别对中心点x,y的网格偏移量和w,h的anchor偏移量使用MSE计算损失;

置信度损失依然采用二值交叉熵计算前景损失和背景损失之和;

分类损失采用二值交叉熵,因为Softmax不适用于多标签分类,并且可被独立的多个logistic分类器代替,且准确率不会下降二值交叉熵损失;

预测流程:

YOLOv3预测原理是分别将整幅图分为13x13、26x26、52x52的网格,每个网络点负责一个区域的检测。解码过程采用直接预测相对位置的方法,预测出bbox中心点相对于网格单元左上角的相对坐标。直接预测出(tx,ty,tw,th,to),然后通过以下坐标偏移公式计算得到bbox的位置大小和confidence:

就是模型的定位预测输出。
表示grid cell的坐标,比如某层的特征图大小是13×13,那么grid cell就有13×13个。
表示anchor box的size。
就是预测得到的bounding box的中心的坐标和尺寸。在训练这几个坐标值的时候采用了sum of squared error loss(平方和距离误差损失)。

采用逻辑回归预测每个边界框的分数。如果边界框与真实框的重叠度比之前的任何其他边界框都要好,则该值应该为1。如果边界框不是最好的但确实与真实对象的重叠超过某个阈值(假设阈值是0.5),那么就忽略这次预测。网络只为每个真实对象分配一个边界框,如果边界框与真实对象不吻合,则不会产生坐标或类别预测损失,只会产生物体预测损失。

采用多标签分类预测类别信息,因此网络结构上就将原来用于单标签多分类的softmax层换成用于多标签多分类的Logistic分类器。用多个独立的Logistic分类器替代Softmax层解决多标签分类问题,且准确率不会下降。Logistic分类器主要用到sigmoid函数,该函数可以将输入约束在0到1的范围内,因此当一张图像经过特征提取后的某一类输出经过sigmoid函数约束后如果大于0.5,就表示该边界框负责的目标属于该类。

模型缺点:

YOLOv3在目标检测领域的效果已经比较好了,目前很多工程化的网络也是基于它做的魔改;如果说它有什么不足的地方,首先网络部分偏大,如果要部署到嵌入式端,仍然需要进一步压缩;其次损失函数的定位部分仍然没有很好的结合中心点和宽高的整体性;最后相比v4版本,有很多工程化的trick可以进一步引入,比如注意力机制,PAN模块,马赛克数据增广,学习率余弦退火衰减等等手段。

YOLO系列专题——YOLOv3理论篇相关推荐

  1. YOLO系列专题——YOLOv1理论篇

    近期工作上基于YOLOv3做项目并且需要测试TI开发板对OD模型的友好程度,所以想写个YOLO系列的专题,本文就从2015年的v1版本<You Only Look Once: Unified, ...

  2. YOLO系列专题——YOLOv2理论篇

    YOLOv2理论篇 YOLOv2实践篇 背景介绍: YOLOv1和同时期的SSD属于两个单阶段检测模型,以速度快著称.但是YOLOv1的诸多缺陷导致精准度较差.召回率低.估计YOLOv2参考了SSD或 ...

  3. YOLO系列专题——YOLOv3实践篇

    YOLOv3理论篇 YOLOv3实践篇 工程框架: 本文基于YOLOv3大体结构进行实现,采用VOC2028数据集进行测试,一份安全帽和人两个类别的检测数据集,数据总共7581帧图片.工程框架结构如下 ...

  4. 【YOLO系列】YOLOv3

    ⭐ YOLOv3 参考文献:<YOLOv3: An incremental improvement(2018)> YOLO系列的第三个版本,在YOLOv2基础上做了一些小改进,文章篇幅不长 ...

  5. YOLO系列专题——Complex-YOLO

    Complex-YOLO是2018年的一篇点云目标检测的文章,发表于arXiv[cs.CV]. 文章链接:An Euler-Region-Proposal for Real-time 3D Objec ...

  6. YOLO系列专题——YOLOv2实践篇

    YOLOv2理论篇 YOLOv2实践篇 工程框架: YOLOv2引入anchor机制后,在目标的回归上比v1版本效果好了很多.下面是一些代码实现,因为自己建的工程,所以这个系列的整体代码结构会比较相似 ...

  7. YOLO系列专题——YOLOv1实践篇

    YOLOv1理论篇 YOLOv1实践篇 工程框架: 在YOLOv1理论篇中我们简要介绍了YOLO的基本原理,本篇从代码角度进一步给出解析.工程结构如下: config作为参数文件用于保存训练参数.测试 ...

  8. 时间管理专题_理论篇

    本文属非商业用途,文中借鉴他人处均已注明出处,若侵犯原作权益,请联系删除,谢谢 简介 总感觉时间不够用,一方面确实没闲着,另一方面又找不到有那方面的巨大收获.之前接触过时间管理,但是不曾认真的总结过. ...

  9. 【目标检测·yolo系列】YOLOV3目标检测论文笔记(参考 同济子豪兄的解读)

    目录 骨干网络 Darknet53 后面的论文算法架构都是在yolov3基础上更新来的 骨干网络 Darknet53 由于主要网络中是全卷积层,所以是可以输入任意大小的图片(得是×32)

最新文章

  1. 点石关键词排名优化软件_关键词点击排名优化
  2. 构建商品评价的分类器
  3. 数据库中事务并发问题
  4. 计算机专业哪家强,计算机专业哪家强?这4所大学水平一流,网友:都是“大佬”级别...
  5. 马尔可夫不等式和切比雪夫不等式
  6. office2013安装程序找不到_office2007提示“错误1706,安装程序找不到所需文件
  7. MATLAB fig文件批量转换为jpg格式
  8. 软件工程知识点总结——第一、二部分
  9. 基于数字孪生的IBV智能建筑可视化系统了解一下
  10. gps测试软件用法,gps测量仪器使用方法及教程
  11. 解决IE浏览器被2345劫持问题
  12. 软件专业学习之成长志(四)
  13. Keil5 MDK版本使用ST-LINK下载程序的方法及注意事项
  14. oracle 安装 step6,Tecnomatix16.0.1节点锁定型许可安装手册Win10
  15. 每日刷题记录 (二十七)
  16. linux 搭建snmp服务器,linux snmp安装配置
  17. 03-SQLPlus的常用命令和使用
  18. 机械键盘之黑轴、青轴、茶轴、红轴、白轴的区别
  19. 能用好小人的老板才算优秀
  20. 游戏剧情设计:如何创作好故事

热门文章

  1. poj 3268 bzoj 1631: [Usaco2007 Feb]Cow Party(最短路)
  2. opencv python 实现灰度图像和彩色图像直方图全局均衡化和自适应均衡化
  3. [Python] 更改矩阵形状:reshape(m,n)、view(m,n)和view_as(tensor)
  4. python机器学习案例系列教程——k均值聚类、k中心点聚类
  5. jQuery Mobile中文本输入域input、textarea的data-*选项
  6. matlab2c使用c++实现matlab函数系列教程-conv函数
  7. pandas重置索引的几种方法探究
  8. Python基础__函数
  9. 数据库设计经验浅谈(3,4,5)转载
  10. [转载] python下载安装教程