目标检测 (Object Detection) 算法汇集

基于深度学习的目标检测综述(一)(2018年03月16日
图像分类,检测及分割是计算机视觉领域的三大任务。图像分类模型(详情见这里)是将图像划分为单个类别,通常对应于图像中最突出的物体。但是现实世界的很多图片通常包含不只一个物体,此时如果使用图像分类模型为图像分配一个单一标签其实是非常粗糙的,并不准确。对于这样的情况,就需要目标检测模型,目标检测模型可以识别一张图片的多个物体,并可以定位出不同物体(给出边界框)。目标检测在很多场景有用,如无人驾驶和安防系统。 
这里写图片描述

Google在2017年开源了TensorFlow Object Detection API,并对主流的Faster R-CNN,R-FCN及SSD三个算法在MS COCO数据集上的性能做了细致对比(见Huang et al. 2017),如下图所示。 
Faster R-CNN,R-FCN及SSD算法在MS COCO数据集上的性能对比

对于一张图片,R-CNN基于selective search方法大约生成2000个候选区域,然后每个候选区域被resize成固定大小(227×227227×227)并送入一个CNN模型中,最后得到一个4096-d的特征向量。然后这个特征向量被送入一个多类别SVM分类器中,预测出候选区域中所含物体的属于每个类的概率值。每个类别训练一个SVM分类器,从特征向量中推断其属于该类别的概率大小。为了提升定位准确性,R-CNN最后又训练了一个边界框回归模型。训练样本为(P,G)(P,G),其中P=(Px,Py,Pw,Ph)P=(Px,Py,Pw,Ph)为候选区域,而G=(Gx,Gy,Gw,Gh)G=(Gx,Gy,Gw,Gh)为真实框,GG是与PP的IoU最大的真实框(只使用IoU大于0.6的样本),回归器的目标值定义为: 
这里写图片描述 
在做预测时,利用上述公式可以反求出预测框的修正位置。R-CNN对每个类别都训练了单独的回归器,采用最小均方差损失函数进行训练

R-CNN模型的训练是多管道的,CNN模型首先使用2012 ImageNet中的图像分类竞赛数据集进行预训练。然后在检测数据集上对CNN模型进行finetuning,其中那些与真实框的IoU大于0.5的候选区域作为正样本,剩余的候选区域是负样本(背景)。共训练两个版本,第一版本使用2012 PASCAL VOC数据集,第二个版本使用2013 ImageNet中的目标检测数据集。最后,对数据集中的各个类别训练SVM分类器(注意SVM训练样本与CNN模型的funetuning不太一样,只有IoU小于0.3的才被看成负样本)。

总体来看,R-CNN是非常直观的,就是把检测问题转化为了分类问题,并且采用了CNN模型进行分类,但是效果却很好。最好的R-CNN模型在2012 PASCAL VOC数据集的mAP为62.4%(比第二名高出了22个百分点),在2013 ImageNet上的mAP为31.4%(比第二名高出7.1个百分点)。 
R-CNN模型结构图

综述:深度学习时代的目标检测算法(2018-03-05
目前目标检测领域的深度学习方法主要分为两类:two stage的目标检测算法;one stage的目标检测算法。前者是先由算法生成一系列作为样本的候选框,再通过卷积神经网络进行样本分类;后者则不用产生候选框,直接将目标边框定位的问题转化为回归问题处理。正是由于两种方法的差异,在性能上也有不同,前者在检测准确率和定位精度上占优,后者在算法速度上占优。 
目标检测算法脉络

部分目标检测算法精度和速度对比

基于深度学习的图像目标检测(上)(2018-01-02
一个效果评估mAP(mean average precision)

借用了文档检索里面的标准, 假设目标物体的预测在所有的图像中都进行预测, 在每个图像上计算准确和召回。 但是最后计算每个目标物体的AP的时候, 仅仅选用相关的图像,进行平均average, 最后计算mAP的时候再求平均mean。 是一个奇怪的名字,却是一个蛮直观的评价! 
这里写图片描述

2013年之前, 基本由RBG和他导师的DPM主导, 当然离不开SS和SVM的应用,和后续Box Regression的修正。 
这里写图片描述

这样,我们就得到了最后RNN的框架,我们看到区域推荐、SVM和Bound Box Regression都是成熟的技术的整合: 
这里写图片描述

基于深度学习的图像目标检测(下)(2018-01-08)

这里写图片描述

基于深度学习的「目标检测」算法综述 
云计算时代来临后,「目标检测」算法大家族主要划分为两大派系,一个是 R-CNN 系两刀流,另一个则是以 YOLO 为代表的一刀流派。下面分别解释一下 两刀流 和 一刀流。 
两刀流的天平主要倾向准, 
一刀流的天平主要倾向快。

基于深度学习的目标检测研究进展(2016-06-27) 
传统目标检测的方法一般分为三个阶段:区域选择; 特征提取;分类器 
传统目标检测方法

总结:传统目标检测存在的两个主要问题:一个是基于滑动窗口的区域选择策略没有针对性,时间复杂度高,窗口冗余;二是手工设计的特征对于多样性的变化并没有很好的鲁棒性。

对于图像分类,不得不提的是2012年ImageNet大规模视觉识别挑战赛(ILSVRC)上,机器学习泰斗Geoffrey Hinton教授带领学生Krizhevsky使用卷积神经网络将ILSVRC分类任务的Top-5 error降低到了15.3%,而使用传统方法的第二名top-5 error高达 26.2%。

1)R-CNN (CVPR2014, TPAMI2015) 
这里写图片描述 
上面的框架图清晰的给出了R-CNN的目标检测流程: 
(1) 输入测试图像

(2) 利用selective search算法在图像中提取2000个左右的region proposal。

(3) 将每个region proposal缩放(warp)成227x227的大小并输入到CNN,将CNN的fc7层的输出作为特征。

(4) 将每个region proposal提取到的CNN特征输入到SVM进行分类。

针对上面的框架给出几点解释:

  • 上面的框架图是测试的流程图,要进行测试我们首先要训练好提取特征的CNN模型以及用于分类的SVM:使用在ImageNet上预训练的模型(AlexNet/VGG16)进行微调得到用于特征提取的CNN模型,然后利用CNN模型对训练集提特征训练SVM。

  • 对每个region proposal缩放到同一尺度是因为CNN全连接层输入需要保证维度固定。

  • 上图少画了一个过程——对于SVM分好类的region proposal做边框回归(bounding-box regression),边框回归是对region proposal进行纠正的线性回归算法,为了让region proposal提取到的窗口跟目标真实窗口更吻合。因为region proposal提取到的窗口不可能跟人手工标记那么准,如果region proposal跟目标位置偏移较大,即便是分类正确了,但是由于IoU(region proposal与Ground Truth的窗口的交集比并集的比值)低于0.5,那么相当于目标还是没有检测到。

小结:R-CNN在PASCAL VOC2007上的检测结果从DPM HSC的34.3%直接提升到了66%(mAP)。如此大的提升使我们看到了region proposal+CNN的巨大优势。

但是R-CNN框架也存在着很多问题:

(1) 训练分为多个阶段,步骤繁琐: 微调网络+训练SVM+训练边框回归器

(2) 训练耗时,占用磁盘空间大:5000张图像产生几百G的特征文件

(3) 速度慢: 使用GPU, VGG16模型处理一张图像需要47s。

针对速度慢的这个问题,SPP-NET给出了很好的解决方案。

深度学习 + OpenCV,Python实现实时视频目标检测

yolo 目标检测算法个人总结(yolov1)

Paper Reading | 解读端到端的物体检测算法YOLO及YOLOv2(2018-03-21
该文为Momenta Paper Reading 第一季第二期回顾,始发于2017年3月4日。 
论文链接: 
1.You Only Look Once 
2.YOLO9000:Better, Faster, Stronger 
PPT下载链接:https://pan.baidu.com/s/1bJK-fTT-q5JjW-kYjmDMQA 密码: 4kie 
分享视频回放链接:undefined_腾讯视频

一个神经网络模型包含了3个重要的特征:1)参数;2)计算准则;3)判定规则。如果我们的任务是判断一个3x3的图像(像素值只有0或者1)是数字1还是数字0,那么我们可以给出这样一个模型,参数的规模也是3x3,和图像一致: 
这里写图片描述

有了这些基础,想必我们理解YOLO会非常的容易。与YOLO的第一次邂逅是在2015年6月,当时以Fast R-CNN, Faster R-CNN引领的proposal + classification的两阶段检测方法已非常成熟,YOLO的横空出世打破了这一架构,将detection的任务统一在端到端的网络之中。它的pipeline异常简单: 
这里写图片描述

这里写图片描述

这里写图片描述 
在2016年年底,YOLOv2问世。在全新的YOLOv2中引入了奥林匹克精神:更高、更快、更强。同样,加强版的YOLOv2以傲人的速度和极高的性能吸引了大量围观群众。作者高调release了一个007的检测视频,网络上都可以搜索到。总的来看,性能相当不错,很多细小、遮挡的对象都能很鲁棒地检测出来。

5分钟学会AI - How to use YOLO with python(2017-12-21
YOLO 是时下最流行(state of the art)的物体检测(Object Detection) AI 模型之一,流行的原因是因为好用,好用的标准归纳为3条:

检测范围广:YOLO9000 覆盖了9000种常用分类,YOLOv2 覆盖了PASCAL VOC和COCO数据集分类。(说人话:就是可以检测出9000种常见物体) 
检测准确率高 
检测速度快:平民玩家用普通CPU就能运行低配乞丐版(Tiny YOLO),人民币玩家用GPU运行高配豪华版 (YOLOv2)。作者大神给出的参考值是 Tiny YOLO 可以达到200FPS,YOLOv2 达到40FPS,当然这是用 NVIDIA Titan X 传奇装备跑出来的分数。

《论文三部曲》Yolo- SSD-Yolo v2 (2018-01-24
yolo :之前处理目标检测的算法都归为了分类问题,然而作者将物体检测任务当做一个regression问题来处理,使用一个神经网络,直接从一整张图像来预测出bounding box 的坐标、box中包含物体的置信度和物体的probabilities。整个检测流程都在一个网络中,实现了end-to-end来优化目标检测。与之前的网络对比图如下: 
这里写图片描述

详解YOLO 2与YOLO 9000目标检测系统 | 分享总结(2017-09-30
训练YOLO 2的第一步是在ImageNet上预先学习darknet-19,在224x224图像上,它仅需5.58个G-ops。此外,YOLO 2在VOC2007,VOC2012和COCO检测数据集上有很好的表现。 
在YOLO 2的基础上,论文中进一步提出了YOLO 9000,可以产生9418个类别的目标检测。首先是需要建立一个基于wordNet结构的wordTree。这个树包含imagenet上最流行的9000个分类,还有COCO的80个大类。YOLO 9000的最后一层采用层次分类的方法,来计算400多个条件概率,用它来产生目标的最终分类。 
这里写图片描述 
Darknet-19计算量 
Darknet-19计算量

YOLO,一种简易快捷的目标检测算法(2018-03-16)

YOLO升级版:YOLOv2和YOLO9000解析(狗头山人七, 2017-01-31
YOLO:实时快速目标检测(狗头山人七,2017-04-19
这里写图片描述 
这里写图片描述 
这里写图片描述 
这里写图片描述

目标检测相关的资源列表(2017-05-24)

使用Detectron进行目标检测(2018-03-24
上个月的时候(2018年1月),Facebook终于开源了他们的目标检测平台Detectron: facebookresearch/Detectron。这一平台是在老旧的py-faster-rcnn停止维护2年后才开源出来的,所以直觉上变化会很大。本文Gemfield将介绍Detectron的使用步骤,注意一点,Detectron是基于Caffe2的,而Caffe2只有GPU版本。

目标检测研究综述+LocNet(2018-01-18)

如何评价 Face++ 旷视科技最新的论文 Light-Head R-CNN ?(2017-11-25
作者:陈泰红 
链接:https://www.zhihu.com/question/68483928/answer/265406107 
来源:知乎 
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Object detection分为两大经典路线,一个是基于RPN的two-stage,一类是基于SSD和YOLO的one-stage,前者检测精度高,后者检测速度快。本论文研究two-stage慢于one-stage的原因,发现 Faster R-CNN 和 R-FCN 会在 RoI warping 之前或之后进行高强度的计算。Faster R-CNN 包含两个全连接层用于 RoI 识别,而 R-FCN 会生成一个大型得分图(classes × p × p,class是类别,p是pool size)。这些网络的速度会被架构的 heavy-head(头重脚轻)设计拖慢速度(本论文是在R-FCN基础上的优化,body是主干网络,截止到2048通道特征图,RoI及之后部分为head)。

旷视科技和清华大学联合推出的这篇论文,主要在简化第二个阶段,提出Light-Head R-CNN,通过使用一个稀疏的特征图(RoI之前,使用可分卷积内核缩小特征图维度到((α × p × p, α ≤ 10))和一个轻量的 R-CNN 子网络(池化和单全连接层)(全连接层是否也可以被取代?分类必须用全连层?,这也是paper的一个方向?),把网络的头部尽可能轻量化(说白了,就是把特征图的通道数从class降低到α ≤ 10)。基于轻量头部的结构,检测器可以在speed和accuracy取得平衡。

另外一个trick就是降低特征图通道的手段就是通过separable convolution。separable convolution可分离卷积说白了就是在inception v3模型提出的k ×k卷积分离成 k×1和1 ×k,这样可以显著降低卷积核的参数以及特征图的维度。计算复杂度可以通过 C_mid 和 C_out 进一步进行控制。

使用ResNet101为主干网络,精确度优于Mask R-CNN/Faster R-CNN等;使用基于Xception的为主干网的模型速度优于SSD和YOLO等。但是Light-Head R-CNN是否在可以在同一个主干网上达到精确度和速度两个方面都是最优的?如果本论文不能实现,是否还可以继续优化达到两个方面都是state-of-the-art?

个人感觉,主干网络可以更优化,2048通道的特征图输出也可以优化

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值