前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >yolo系列检测模型回顾

yolo系列检测模型回顾

原创
作者头像
用户7680342
修改2020-10-13 10:00:52
6240
修改2020-10-13 10:00:52
举报
文章被收录于专栏:人工智能基础人工智能基础

前言

前面一篇文章写了如何使用yolov3进行检测的上手文章https://cloud.tencent.com/developer/article/1703521,其中简单介绍了下yolo的历史,很不过瘾,这里开一篇,再详细介绍下,yolo系列(v1, v2 , v3)的主要技术特点。希望对大家能够有所帮助。

本文先对yolo系列的历史进行稍微的梳理,之后着重对yolov1,v2,v3进行技术细节解读。

历史

传统目标检测算法,是将整个目标检测分为两个阶段:1 候选区域选择;2 候选区域目标分类。即研究者首先根据经验或者特征提取的方法从图片中圈出待检测的目标框,之后使用分类算法对该区域进行分类得到检测结果。显然这种两阶段的方法步骤冗长,训练困难。经过科研先辈的努力,整个检测流程不断被简化,目标区域从select search 转为 rpn,两阶段的训练变成end2end模式。例如rcnn系列。然而这些两阶段算法的准确度虽然很高,fps却一直上不去。为了解决算法效率问题,yolo被提出了(you only look once),顾名思义,yolo表示的是单阶段的检测算法,它推理速度极快,可以达到几十甚至上百的fps(voc 精度 52.7, 155fps)。yolov1虽好,也存在这一些缺陷,例如小目标的检测效果不过,分辨率固定等。为了解决这些问题,进一步提高精度,yolov2被提出。在对yolov1和yolov2进行整理和总结后,yolov3被发明出来了,该网络整体和它的前辈类似,区别在于使用了逻辑回归代替了softmax,以及更深的darknet-53作为骨干网络。在这之后,另外一位作者使用很多的trick对yolov3进行了进一步的优化,诞生了yolov4(yolov5不是很了解,这里暂时不提). 百度的pp-yolo就是基于yolov3+trick实现的。

yolov1

正如之前提过的两阶段的检测方法,是首先通过选择出目标区域,之后对目标区域进行分类来解决目标检测的问题,例如rcnn通过滑窗遍历所有位置之后进行使用cnn进行分类解决问题。·这类方法的问题很明显,就是分类的区域越多,结果精度就越高,但是性能也就越低,推理时间越长。yolo的作者从这点开始考虑:是否可以直接对目标区域进行回归,直接预测出物体的边框呢?即是否可以直接预测边框(x,y,w,h)作为回归值呢?答案是可以的。这就是yolov1的基线算法。将回归head直接接到骨感网络的cnn结尾处,直接回归对象边框。

当然这里自然就出现一个问题,那图片中有多个对象,需要预测多个对象边框怎么办呢?我们不妨假设,对象不会重叠,那么在图片的多个不同区域预测不同的边框不就解决上面的问题了吗(将图片分为多个区域:s * s个网格,就是用对应网格的anchor进行预测)?如果对象会重叠?这种情况下,不同对象的边框长宽比一定是不同的,我们可以在不同区域使用不同长宽比的框来进行预测。如果不同预测框重叠到一起了呢?我们可以使用最大值抑制,只留下那些置信度高的框。

好了,现在我们已经可以回归对象的边框了,那么如果要通过想知道对象属于哪个分类呢?我们这里通过扩展上面预测的5元组,如果类别数目为c,那么上面5元组扩展成c+5 ,这里的c就是类别的one-hot表示。

最终我们完成了单阶段的目标检测。怎么样,感觉也没有那么难对吧~

yolov2

·yolov1很棒了,但也存在着问题:精度不够,很多物体检测不到。经过作者研究,发现v1的一个问题是,直接预测(x,y,w,h)的话,数据取值可能会很大,导致神经网络不稳定,鉴于此,作者转而使用基于网格/anchor框的偏移量来进行预测(location prediction,并通过归一化和log平滑),使网络进行更快的收敛,提高了精度。·同时这里的anchor使用kmeans对训练集的对象边框进行预先处理,是的anchor 与真实的边框更加接近。并且每个区域使用anchor比例不同的5类(coco数据集)anchor同时进行预测,来保证减少因为·对象大小不同导致的漏检。

在网络结构方面yolov2使用了全卷积网络+bn的结构,骨干网络也编程更深的darknet19,图片输入精度增加了4倍。

下面是yolov1和yolov2的对比,使用不同特性对应的精度提升:

另外值得一提的是,在yolov2的论文中,作者还提出可以使用分类数据集协助训练检测网络,即如果当前是数据有检测标签,则网络进行整体的反向传播。如果当前数据只有分类标签,则只反向传播分类损失。

yolov3

·yolov2又很棒,还剩下小对象召回率不高的问题,相互靠近的对象效果也不好,作者再接再厉,首先上了更深的骨干网络:darknet53.对于多尺度问题,直接把检测头分成三份,每份预测一个尺度的三个比例的anchor。并在检测时候,对跨尺度的特征进行融合。如下图:

到这里yolov3已经可以比ssd快3倍了。。

八卦:Joseph Redmo 觉得自己的研究被用到了军事和隐私上,所以退出cv界了。。。外国人真有性格。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 历史
  • yolov1
  • yolov2
  • yolov3
相关产品与服务
图像识别
腾讯云图像识别基于深度学习等人工智能技术,提供车辆,物体及场景等检测和识别服务, 已上线产品子功能包含车辆识别,商品识别,宠物识别,文件封识别等,更多功能接口敬请期待。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档