手把手教你用深度学习做物体检测(七):YOLOv3介绍
YOLOv3
论文:《 YOLOv3: An Incremental Improvement 》
地址: https://arxiv.org/pdf/1804.02767.pdfyolov3
相比之前版本的改进
网络的特征提取部分
由 Darknet-19改成了 Darknet-53,更深了,速度确有下降,但是相比ResNet来说仍然高很多。跨尺度预测
yolov3网络在3个不同尺寸的特征图下,每个尺寸的特征图预测出3个boxes,anchor box还是采用聚类的方法得到9个anchor box,然后3个不同的尺寸特征图各得到3个anchor box。 这样就得到了N ×N ×[3∗(4+1+80)] ,N为格子大小(13*13、26*26、52*52),3为每个格子得到的边界框数量, 4是边界框参数数量(x,y,w,h),1是置信度(包含类别和边界框位置),80是类别数量(这里coco数据集是80类)。yolo3会利用第82、94、106层的特征图来进行不同尺寸的目标检测。
82层的图像小(分辨率低),感受野大,可以到检测图像中较大的目标;
94层的图像中等,感受野中等,可以检测到图像中不大也不小的目标;
106层的图像大(分辨率高),但感受野相对最小,可以检测到图像中较小的目标。
所以如果训练过程中,发现某层的输出值是非数,这只是说明在这层没有检测到目标对象,只要三层中至少有一层能输出正常的数字,就是正常的。
从图上也可以看到,为了能同时学到浅层和深层的特征,上面的82、94层特征图自身经过上采样后还会和早期层的特征图做一些拼接(concat)操作。用论文原话说就是:这样的方法让我们从上采样特征中得到更多有意义的语义信息;从更早期的特征中得到纹理信息(finer-grained information)。类别预测
因为每个边界框都采用多标签分类器来预测包含的类别,所以作者 没有使用softmax,而是为每个类别的预测使用了相互独立的逻辑回归分类器。该方法使得yolov3可以训练类像Open Images数据集那么复杂的数据,该数据集有许多包含属性的标签,比如(比如对图像中的一个人进行标注,可以有“女人”和“人”等多个标签)。
yolov3性能对比图表:
总结一下:
- YOLOv1提出了一个端到端的目标检测模型,输入图片,仅跑一个网络,即可识别出图片中的目标类型和目标的位置。
- YOLOv1相比其他模型,更快,已经可以达到实时检测的水品;泛化能力更强,即使在自然图片上训练,然后在艺术图片上测试也能有很好的表现。
- YOLOv1的缺点也很明显:在目标位置的预测上还不够准确;很难检测小目标(比如鸟群);很难泛化到新的或不常见的纵横比图片上;
- YOLOv2在学习速度、准确度、对小目标的检测、对不同尺度图片的检测上都有提升;
- YOLOv3采用了更深的网络来提取特征,准确度提升了2%以上,速度下降了,但是仍然比其他模型要高很多;
- YOLOv3采用了跨尺度预测和FPN( feature pyramid networks)的结构,综合考虑了浅层的特征和深层的特征,使得位置信息和语义信息都能更准确的预测;
- YOLOv3可以训练类像Open Images那样复杂的数据集,因为作者 没有使用softmax,而是为每个类别的预测使用了相互独立的逻辑回归分类器。
ok,yolo的原理和各版本差异就介绍到这里啦,还想了解更多细节的朋友建议亲自读一读原论文,然后结合之前笔者写的几篇目标检测系列的文章亲自上手操作一下,会有更深的理解。
参考文献:
https://arxiv.org/pdf/1506.02640.pdf
https://arxiv.org/pdf/1612.08242v1.pdf
https://arxiv.org/pdf/1804.02767.pdfyolov3
https://towardsdatascience.com/yolo-v3-object-detection-53fb7d3bfe6b

手把手教你用深度学习做物体检测(七):YOLOv3介绍的更多相关文章
- 手把手教你用深度学习做物体检测(六):YOLOv2介绍
本文接着上一篇<手把手教你用深度学习做物体检测(五):YOLOv1介绍>文章,介绍YOLOv2在v1上的改进.有些性能度量指标术语看不懂没关系,后续会有通俗易懂的关于性能度量指标的介绍文章 ...
- 手把手教你用深度学习做物体检测(五):YOLOv1介绍
"之前写物体检测系列文章的时候说过,关于YOLO算法,会在后续的文章中介绍,然而,由于YOLO历经3个版本,其论文也有3篇,想全面的讲述清楚还是太难了,本周终于能够抽出时间写一些YOLO算法 ...
- 手把手教你搭建深度学习平台——避坑安装theano+CUDA
python有多混乱我就不多说了.这个混论不仅是指整个python市场混乱,更混乱的还有python的各种附加依赖包.为了一劳永逸解决python的各种依赖包对深度学习造成的影响,本文中采用pytho ...
- 深度学习实践-物体检测-faster-RCNN(原理和部分代码说明) 1.tf.image.resize_and_crop(根据比例取出特征层,进行维度变化) 2.tf.slice(数据切片) 3.x.argsort()(对数据进行排列,返回索引值) 4.np.empty(生成空矩阵) 5.np.meshgrid(生成二维数据) 6.np.where(符合条件的索引) 7.tf.gather取值
1. tf.image.resize_and_crop(net, bbox, 256, [14, 14], name) # 根据bbox的y1,x1,y2,x2获得net中的位置,将其转换为14*1 ...
- #Deep Learning回顾#之基于深度学习的目标检测(阅读小结)
原文链接:https://www.52ml.net/20287.html 这篇博文主要讲了深度学习在目标检测中的发展. 博文首先介绍了传统的目标检测算法过程: 传统的目标检测一般使用滑动窗口的框架,主 ...
- 用深度学习做命名实体识别(二):文本标注工具brat
本篇文章,将带你一步步的安装文本标注工具brat. brat是一个文本标注工具,可以标注实体,事件.关系.属性等,只支持在linux下安装,其使用需要webserver,官方给出的教程使用的是Apac ...
- 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN,Faster R-CNN
基于深度学习的目标检测技术演进:R-CNN.Fast R-CNN,Faster R-CNN object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.obj ...
- 深度学习课程笔记(七):模仿学习(imitation learning)
深度学习课程笔记(七):模仿学习(imitation learning) 2017.12.10 本文所涉及到的 模仿学习,则是从给定的展示中进行学习.机器在这个过程中,也和环境进行交互,但是,并没有显 ...
- 基于深度学习的病毒检测技术无需沙箱环境,直接将样本文件转换为二维图片,进而应用改造后的卷积神经网络 Inception V4 进行训练和检测
话题 3: 基于深度学习的二进制恶意样本检测 分享主题:全球正在经历一场由科技驱动的数字化转型,传统技术已经不能适应病毒数量飞速增长的发展态势.而基于沙箱的检测方案无法满足 APT 攻击的检测需求,也 ...
随机推荐
- es6,@import一直报错 Can't resolve。。
最近在项目中新增了一个按钮组的组件页面,但是在其他页面引入时,一直报错 引入方式:
- dz6.0的一个sql注入漏洞
今天开始着手分析第一个漏洞,找了一上午靶机,发现一个含有成人内容的违法网站是用dz6.0搭的,今天就看看dz这个版本的洞了 问题函数位置:my.php第623行 if(is_array($descri ...
- 探秘最小生成树&&洛谷P2126题解
我在这里就讲两种方法 Prim 和 Kruscal Kruscal kruscal的本质其实是 排序+并查集 ,是生成树中避圈法的推广 算法原理如下 (1)将连通带权图G=<n,m>的各条 ...
- kube-proxy源码解析
kubernetes离线安装包,仅需三步 kube-proxy源码解析 ipvs相对于iptables模式具备较高的性能与稳定性, 本文讲以此模式的源码解析为主,如果想去了解iptables模式的原理 ...
- 用JavaScript带你体验V8引擎解析标识符过程
上一篇讲了字符串的解析过程,这一篇来讲讲标识符(IDENTIFIER)的解析. 先上知识点,标识符的扫描分为快解析和慢解析,一旦出现Ascii值大于128的字符或者转义字符,会进入慢解析,略微影响性能 ...
- MySQL数据库基本知识(理论总结)
定义:数据库就是一个文件系统,通过sql语句来获取数据 关系型数据库:关系型数据库存放的是实体时间的关系,在数据库层面来看就是存放的是表和表之间的关联关系 常见的关系型数据库 MySQL D ...
- template.demo.js
<!DOCTYPE html><html><head> <title>index</title> <meta charset=&quo ...
- Promise 学习心得
当了这么久码农到今天没事才开始去深究 Promise 这个对象 什么是 Promise, Promise 有什么用? 在写代码的时候多多少少都有遇见过地狱式的回调 代码看起来没问题就是有点乱,Prom ...
- 利用DoHome APP和音箱控制LED灯实验参考步骤
准备材料: Arduino Uno 一块 Arduino 扩展板 购买链接 DT-06模块一个 购买链接 安卓手机一个 小度音箱一个 小灯珠一个 杜邦线若干 1.DT-06固 ...
- Java连载16-++传参&关系运算符
一.++再举例 int a = 10; System.out.print(a++);//这里会打印出10,因为他们内部这个print函数有参数相当于参数x=a++ System.out.println ...