YOLOv3

论文:《 YOLOv3: An Incremental Improvement 》
地址: https://arxiv.org/pdf/1804.02767.pdfyolov3

相比之前版本的改进

  • 网络的特征提取部分
    由 Darknet-19改成了 Darknet-53,更深了,速度确有下降,但是相比ResNet来说仍然高很多。
    b799f7151e3a56e0c6678fdae50a3c00.png9d554116caf26a6a91d11ab2569aec06.png

  • 跨尺度预测
    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类)。
    dc15c8d08efd69014003e733f7459377.png yolo3会利用第82、94、106层的特征图来进行不同尺寸的目标检测。
    82层的图像小(分辨率低),感受野大,可以到检测图像中较大的目标;
    94层的图像中等,感受野中等,可以检测到图像中不大也不小的目标;
    106层的图像大(分辨率高),但感受野相对最小,可以检测到图像中较小的目标。
    所以如果训练过程中,发现某层的输出值是非数,这只是说明在这层没有检测到目标对象,只要三层中至少有一层能输出正常的数字,就是正常的。
    从图上也可以看到,为了能同时学到浅层和深层的特征,上面的82、94层特征图自身经过上采样后还会和早期层的特征图做一些拼接(concat)操作。用论文原话说就是:这样的方法让我们从上采样特征中得到更多有意义的语义信息;从更早期的特征中得到纹理信息(finer-grained information)。

  • 类别预测
    因为每个边界框都采用多标签分类器来预测包含的类别,所以作者 没有使用softmax,而是为每个类别的预测使用了相互独立的逻辑回归分类器。该方法使得yolov3可以训练类像Open Images数据集那么复杂的数据,该数据集有许多包含属性的标签,比如(比如对图像中的一个人进行标注,可以有“女人”和“人”等多个标签)。

yolov3性能对比图表:

02eb463917889391964e568f7b1d0deb.png

总结一下:

  • 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介绍的更多相关文章

  1. 手把手教你用深度学习做物体检测(六):YOLOv2介绍

    本文接着上一篇<手把手教你用深度学习做物体检测(五):YOLOv1介绍>文章,介绍YOLOv2在v1上的改进.有些性能度量指标术语看不懂没关系,后续会有通俗易懂的关于性能度量指标的介绍文章 ...

  2. 手把手教你用深度学习做物体检测(五):YOLOv1介绍

    "之前写物体检测系列文章的时候说过,关于YOLO算法,会在后续的文章中介绍,然而,由于YOLO历经3个版本,其论文也有3篇,想全面的讲述清楚还是太难了,本周终于能够抽出时间写一些YOLO算法 ...

  3. 手把手教你搭建深度学习平台——避坑安装theano+CUDA

    python有多混乱我就不多说了.这个混论不仅是指整个python市场混乱,更混乱的还有python的各种附加依赖包.为了一劳永逸解决python的各种依赖包对深度学习造成的影响,本文中采用pytho ...

  4. 深度学习实践-物体检测-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 ...

  5. #Deep Learning回顾#之基于深度学习的目标检测(阅读小结)

    原文链接:https://www.52ml.net/20287.html 这篇博文主要讲了深度学习在目标检测中的发展. 博文首先介绍了传统的目标检测算法过程: 传统的目标检测一般使用滑动窗口的框架,主 ...

  6. 用深度学习做命名实体识别(二):文本标注工具brat

    本篇文章,将带你一步步的安装文本标注工具brat. brat是一个文本标注工具,可以标注实体,事件.关系.属性等,只支持在linux下安装,其使用需要webserver,官方给出的教程使用的是Apac ...

  7. 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN,Faster R-CNN

    基于深度学习的目标检测技术演进:R-CNN.Fast R-CNN,Faster R-CNN object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.obj ...

  8. 深度学习课程笔记(七):模仿学习(imitation learning)

    深度学习课程笔记(七):模仿学习(imitation learning) 2017.12.10 本文所涉及到的 模仿学习,则是从给定的展示中进行学习.机器在这个过程中,也和环境进行交互,但是,并没有显 ...

  9. 基于深度学习的病毒检测技术无需沙箱环境,直接将样本文件转换为二维图片,进而应用改造后的卷积神经网络 Inception V4 进行训练和检测

    话题 3: 基于深度学习的二进制恶意样本检测 分享主题:全球正在经历一场由科技驱动的数字化转型,传统技术已经不能适应病毒数量飞速增长的发展态势.而基于沙箱的检测方案无法满足 APT 攻击的检测需求,也 ...

随机推荐

  1. thymeleaf常用属性

    转 作者:ITPSC 出处:http://www.cnblogs.com/hjwublog/   th:action 定义后台控制器路径,类似<form>标签的action属性. 例如: ...

  2. C语言编程入门之--第三章编写第一个C语言程序

    第三章 编写第一个C语言程序 导读:一般学一门计算机语言的第一堂上机课(“上机”顾名思义,上了计算机),就是往屏幕输出“hello world”,本章也不例外. 1.1 Hello,World! 这一 ...

  3. Lombok 使用介绍(常见注解)

    目录 @Data @NonNull @Getter & @Setter @ToString @EqualsAndHashCode @NoArgsConstructor, @RequiredAr ...

  4. 【iOS】NSNotification 常用方法

    NSNotification 常用的几个方法,代码如下: // 发送通知 [[NSNotificationCenter defaultCenter] postNotificationName:@&qu ...

  5. ASP.NET Core Identity自定义数据库结构和完全使用Dapper而非EntityFramework Core

    前言 原本本节内容是不存在的,出于有几个人问到了我:我想使用ASP.NET Core Identity,但是我又不想使用默认生成的数据库表,想自定义一套,我想要使用ASP.NE Core Identi ...

  6. dubbo异常处理

    dubbo异常处理 我们的项目使用了dubbo进行不同系统之间的调用. 每个项目都有一个全局的异常处理,对于业务异常,我们会抛出自定义的业务异常(继承RuntimeException). 全局的异常处 ...

  7. 记一次使用LR测试UDP和TCP的过程

    背景 最近项目要做性能测试,要出要一份性能报告,让我出一个有关Tcp和Udp的功能模块的测试,流程大概是这样,先走TCP协议协商一下会话,协商成功后走Udp收发数据. 有点简单啊,自己写个功能模块测一 ...

  8. 对平底锅和垃圾的O奖论文的整理和学习[1](2018-02-08发布于知乎)

    今天和杉杉同志在Pacific Coffee坐了0.4天,目前两人都处于放空状态. 这种天气有暖气真的太棒了. 我今天看的论文是这两篇: MCM2013B题O奖论文MCM2016B题O奖论文 先说第一 ...

  9. linux command line learn - get the absolute path of a file

    get the absolute path of a file in linux readlink -f filenme [heshuai@login01 3_Variation_calling]$ ...

  10. Django-用户-组-权限

    前言 RBAC(Role-Based Access Control,基于角色的访问控制)就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角 ...