赞
踩
由于在学习中没能找到用一篇即能感受YOLO的全部发展和变化的文章,所以决定自己写一篇,有不当可评论指出!!
本文重点在yolov1-yolov5不同版本间进行了哪些升级和改变,因此,本文仅适用于对yolo有初步了解的同学,如果对yolo完全没有概念还请先对yolo进行系统的学习.以免在此文上浪费时间///
提出 anchor free 的想法,通过将一幅图像分成SxS个网格(grid cell),如果某个object的中心 落在这个网格中,则这个网格就负责预测这个object.
每个网络需要预测B个BBox的位置信息和confidence(置信度)信息,一个BBox对应着四个位置信息和一个confidence信息。confidence代表了所预测的box中含有object的置信度和这个box预测的有多准两重信息,举例说明: 在PASCAL VOC中, 图像输入为448x448,取S=7,B=2,一共有20个类别(C=20)。则输出就是7x7x30的一个tensor。
具体网络设计:
在test的时候,每个网格预测的class信息和bounding box预测的confidence信息相乘,就得到每个bounding box的class-specific confidence score:
4. loss的计算
这个损失函数中:
只有当某个网格中有object的时候才对classification error进行惩罚。
只有当某个box predictor对某个ground truth box负责的时候,才会对box的coordinate error进行惩罚,而对哪个ground truth box负责就看其预测值和ground truth box的IoU是不是在那个cell的所有box中最大。
损失函数设计
COCO: (0.57273, 0.677385), (1.87446, 2.06253), (3.33843, 5.47434), (7.88282, 3.52778), (9.77052, 9.16828)
VOC: (1.3221, 1.73145), (3.19275, 4.00944), (5.05587, 8.09892), (9.47112, 4.84053), (11.2364, 10.0071)
意义:
对象检测面临的一个问题是图像中对象会有大有小,输入图像经过多层网络提取特征,最后输出的特征图中(比如YOLO2中输入416416经过卷积网络下采样最后输出是1313),较小的对象可能特征已经不明显甚至被忽略掉了。为了更好的检测出一些比较小的对象,最后输出的特征图需要保留一些更细节的信息。
YOLO2引入一种称为passthrough层的方法在特征图中保留一些细节信息。具体来说,就是在最后一个pooling之前,特征图的大小是2626512,将其1拆4,直接传递(passthrough)到pooling后(并且又经过一组卷积)的特征图,两者叠加到一起作为输出的特征图。
-----------------Updating is not finished-----------
引入FPN
引入PAN, 网络csp block,
准确度更高
引入PAN, 网络csp block,YOLOv4和YOLOv5的区别还有待分析
速度更快
两者整合了大量的data argumentation,融合了现有的大部分backbone和网络融合特征
但YOLOv5基于pytorch框架,速度更快,配置文件对用户修改更加友好
参考文献:
8. https://blog.csdn.net/c20081052/article/details/80236015
9. https://zhuanlan.zhihu.com/p/136382095
10. yolov2:https://blog.csdn.net/shanlepu6038/article/details/84778770
7.yolov1 https://blog.csdn.net/c20081052/article/details/80236015
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。