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

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

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数据集上的性能对比git

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

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

整体来看,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。 是一个奇怪的名字,倒是一个蛮直观的评价!
这里写图片描述app

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通道的特征图输出也能够优化