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

最新文章

  1. HTTP Status
  2. Python内存数据库/引擎
  3. 关于SqlHelper的详解
  4. maven编译java代码报“非法字符: \65279 ”错误的解决方法
  5. Linux下sysstat工具学习
  6. Android跨进程通信的四种方式
  7. String类的写时拷贝
  8. GridBagLayout练习
  9. UVA 1312 Cricket Field
  10. [翻译]初识SQL Server 2005 Reporting Services Part 3
  11. HTML5周记(二)
  12. C#无限级分类递归显示示例
  13. ------ 解析因内核栈溢出导致的 “double fault” 蓝屏 ------
  14. C# if判断语句执行顺序
  15. mybatis 使用注解简化xml映射文件
  16. ORGANISING THE TEST CASES
  17. js获取url传值的方法
  18. RESTORE 无法处理数据库 'Students',因为它正由此会话使用。建议在执行此操作时使用 master 数据库。
  19. LuoguP1126 机器人搬重物(BFS)
  20. git-【九】基本常用命令

热门文章

  1. web设计_2_灵活的文字
  2. 前端插件之Select2使用
  3. Python字典排序
  4. Spark Streaming自定义Receiver
  5. Python基础总结之异常、调试代码第十二天开始(新手可相互督促)
  6. SQL和NoSQL的区别
  7. .NET----错误和异常处理机制
  8. Java一个简单的文件工具集
  9. (十一)c#Winform自定义控件-列表
  10. 普通Apache的安装与卸载