深度学习中目标检测Object Detection的基础概念及常用方法
What is detection?
- detection的任务就是classification+localization

cs231n 课程截图
从左到右:语义分割semantic segmentation,图片分类classification,目标检测detection,实例分割instance segmentation
关键术语
ROI Region Of Interest 感兴趣区域,通常可以理解成图片中可能是物体的区域。 输入图片可以预先做一些标记找到候选框 proposal
- bounding box 在localization任务里的概念, 即给出物体在图片中的定位区域
- 一般表示为 (top, left, bottom, right) or (left, top, right, bottom). (left, top)为bbox左上角的坐标,(right, bottom)为右下角的坐标
IoU Intersection of Union 定义两个bbox的重叠程度 = (A交B) / (A并B) ,用于评价算法结果和人工标注(ground-truth)的差别

方法
two stage
将问题分两个阶段解决:首先从原图选出一系列候选框(object proposal)作为图中各个物体可能的bbox;然后将这些候选框输入到网络中,得出框的分类结果(多分类,是哪一类物体or背景?)和框的回归结果(坐标定位的准确值)
R-CNN
在第一阶段使用selective search这类region proposal method来得出一系列proposal;阶段二将每个region proposal分别输入到CNN网络中,提取出特征向量,然后交给SVM分类器。
因为是将proposal分别输入到网络,也就是针对各个region进行分类和回归,因此称为Region-based CNN
局限在于涉及很多重复计算(选出来的region很可能一大部分都是互相重叠的);而且selective research的效率不高
Fast R-CNN
在阶段二,针对R-CNN将每个proposal分别输入到网络带来的许多重复计算做出改进,提出直接将整张图输入到网络,只是在分类之前添加ROI pooling层,将阶段一提取出来的proposal(也就是ROI)映射到特征图中【注意阶段一提出来的proposal坐标是在原图坐标系下,因此还包括一个从原图尺度到当前特征图尺度的转换,一般是乘上缩放倍数】。
另一方面,Fast R-CNN也简化了整体的训练过程,不同于R-CNN将提取特征的网络、SVM分类、bbox回归看做三个独立的训练阶段,Fast R-CNN通过在网络中添加分类损失softmax loss和回归损失regression loss,结合两个损失(一般是加权求和),得到multi-task的loss,用其训练网络,使训练过程简化为只有一个阶段。
Faster R-CNN
Fast R-CNN提高了效率,但在阶段一仍然使用的是selective search之类的方法,阶段一和阶段二之间是分离的,这意味着训练的时候并不能做到端到端(end to end)的训练,换句话说,如果阶段一出现了错误导致阶段二表现不好,这个不好的结果无法在训练的时候回传到阶段一去使其做出调整。
因此Faster R-CNN提出了RPN(Region Proposal Network),将阶段一提取proposal的任务也用一个网络来解决,并且让阶段一和阶段二的网络共享一部分权值,从而节省了许多算力。

Faster R-CNN architecture
Faster R-CNN = RPN + Fast R-CNN
图中可以看出RPN 与 Fast R-CNN 两个网络共享了用来提取特征的卷积层,而得出特征图之后,RPN继续生成proposal,将RPN的输出与之前提取的特征图通过ROI pooling之后,作为Fast R-CNN后续部分的输入,得到分类结果与回归结果
RPN
RPN做的事情只是先粗略地提取出一堆候选框,通过网络进行分类(二分类,是物体or背景?)以及回归,得到较为准确的候选框,然后送入Fast RCNN进行更细致的分类与回归
提出概念anchor:
anchor是在原图上的
anchor以特征图上每个像素为中心,假设RPN的最后一层特征图尺寸为 f * f,原图的尺寸为 n * n,则anchor其实就是在原图 n * n上均匀地采 f * f个候选框,该候选框的面积和长宽比例是预定义的(anchor的参数)
anchor可以理解为 从特征图上的一点 s ,对应回原图的区域 S,注意这里的对应区域并不等于感受野。
同一个中心点,可以有多种形状\面积的anchor,代表着不同形状/面积的区域。
判断anchor是否属于物体,其实就是看在原图的区域里是否包含有物体,如果只有一部分的物体,则可能说明anchor取的面积比较小
换句话说,anchor其实就是对ground-truth bbox的一个encode。一张原图上分布有多个anchor,如果某一区域有ground-truth的bbox,它的类别标签是c,则与这个区域交叠的anchor,其分类目标应该为类别c,其回归目标应该为与ground-truth bbox的offset。
one stage
直接在整张图片上采样一系列的候选框
二者的区别,两阶段的方法中,对于稀疏的候选框集进行分类;单阶段则是将分类器应用到对原图进行常规地、稠密地采样得到的候选框集。
- 什么叫单阶段是常规地采样?因为两阶段的方法中,有一些可能会使用learning的方法进行采样,而单阶段则可能直接根据预先定义好的anchor数量尺寸等参数 在原图均匀地采样
共同存在问题
多尺度
不同物体有不同种尺寸,有的网络可能比较倾向于检测出大尺寸的物体(在图像中占面积比较大),而难以应对小物体
image pyramid
将同一张输入图像resize为多种尺寸,然后分别输入到网络中,将检测结果综合起来
feature pyramid
只用一张输入图像,但使用网络中来自不同层的特征图(不同层则意味着特征图尺寸不同),分别进行分类和回归,将结果综合起来
平移不变性
样本不均衡
各个步骤可能出现的问题
输入:
输入图片可能是多尺度的
- 输入的图片可能是同一张图的不同缩放版本,有的早期网络只能接受固定尺寸的输入,因而需要对图片进行剪裁、拉伸、压缩等操作来满足尺寸要求
由于一张图片中可能有多个物体,因此大多数方法都可以理解成,将一张图片切分成多张子图,分别输入到网络中
网络:
正负样本不均衡 class imbalance between positve and negtive
训练时,正样本(物体)远少于负样本(背景)的个数,这在one-stage的方法中非常常见,因为one stage是进行稠密地采样得到候选框
解决方法:
hard negative mining,计算分类损失的时候,只用正样本和一部分的负样本来算loss,这些被选取的负样本 分类到背景的置信度较低(也就是分类正确的置信度较低),称为“难负样本”
- focal loss,认为应该让所有样本都参与到分类损失的计算中,根据分到正确类别的置信度来调整权重,也就是说,那些 易分的样本(分到正确类别的置信度较高)权重则相应调低,难分的样本(分到正确类别的置信度较低) 权重则相应调高。
...
ROI pooling,两个作用:
将ROI从原图映射到feature map上,从而只需将一整张原图输入到网络,而不是将原图中不同的ROI分别输入网络;
将不同的ROI都pooling成固定的尺寸,也就是使得不同大小的ROI通过池化输出固定尺寸的特征向量,便于后续的分类与回归
anchor
- 某类方法会使用,预先定义好候选框的尺寸和比例,训练时需要encode ground-truth bbox为anchor的形式,regression分支的target是offset between anchor and ground-truth bbox,对于输出需要decode anchor为最终预测的bbox位置(其实就是加上offset)
输出:
NMS 非极大值抑制
- 可能一个物体的实际bbox,周围有好几个候选框都被检测出来,也就是对应着好几个检测结果,这时需要根据 confidence (理解为分类得分) 抑制那些非最大值,只保留confidence高的检测结果
评判标准
TP,FP计算precision 和 recall
mAP, mean average precision,VOC的11-point方法,取不同的threshold,计算precision和recall,画出P-R curve
参考资料
2D 总结 https://zhuanlan.zhihu.com/p/34142321
https://zhuanlan.zhihu.com/p/34179420 模型的评测与训练技巧
https://blog.csdn.net/JNingWei/article/details/80039079 他人总结的 框架图的形式解释各个类别
深度学习中目标检测Object Detection的基础概念及常用方法的更多相关文章
- 基于深度学习的目标检测(object detection)—— rcnn、fast-rcnn、faster-rcnn
模型和方法: 在深度学习求解目标检测问题之前的主流 detection 方法是,DPM(Deformable parts models), 度量与评价: mAP:mean Average Precis ...
- 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN,Faster R-CNN
基于深度学习的目标检测技术演进:R-CNN.Fast R-CNN,Faster R-CNN object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.obj ...
- #Deep Learning回顾#之基于深度学习的目标检测(阅读小结)
原文链接:https://www.52ml.net/20287.html 这篇博文主要讲了深度学习在目标检测中的发展. 博文首先介绍了传统的目标检测算法过程: 传统的目标检测一般使用滑动窗口的框架,主 ...
- 关于目标检测(Object Detection)的文献整理
本文对CV中目标检测子方向的研究,整理了如下的相关笔记(持续更新中): 1. Cascade R-CNN: Delving into High Quality Object Detection 年份: ...
- 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...
- (转)基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...
- 关于目标检测 Object detection
NO1.目标检测 (分类+定位) 目标检测(Object Detection)是图像分类的延伸,除了分类任务,还要给定多个检测目标的坐标位置. NO2.目标检测的发展 R-CNN是最早基于C ...
- 【深度学习】目标检测算法总结(R-CNN、Fast R-CNN、Faster R-CNN、FPN、YOLO、SSD、RetinaNet)
目标检测是很多计算机视觉任务的基础,不论我们需要实现图像与文字的交互还是需要识别精细类别,它都提供了可靠的信息.本文对目标检测进行了整体回顾,第一部分从RCNN开始介绍基于候选区域的目标检测器,包括F ...
- 利用更快的r-cnn深度学习进行目标检测
此示例演示如何使用名为“更快r-cnn(具有卷积神经网络的区域)”的深度学习技术来训练对象探测器. 概述 此示例演示如何训练用于检测车辆的更快r-cnn对象探测器.更快的r-nnn [1]是r-cnn ...
随机推荐
- zabbix(LNMP)的企业微信告警
一.简介 KVM+虚拟机的基于LNMP平台zabbix3.0的监控系统.能通过企业微信实现服务器状态的告警功能! 二.环境 服务器:DELL 710 32G RIDA 5 系统:Linux 3. ...
- Html学习之三(列表)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- web的前台、后台、前端、后端
前台:呈现给用户的视觉和基本的操作.后台:用户浏览网页时,我们看不见的后台数据跑动.后台包括前端,后端.前端:对应我们写的html .javascript 等网页语言作用在前端网页.后端:对应jsp. ...
- jQuery中的CSS(四)
1. css(name|pro|[,val|fn]), 访问匹配元素的样式属性 jQuery 1.8中,当你使用CSS属性在css()或animate()中,我们将根据浏览器自动加上前缀(在适当的时候 ...
- windows下 go vscode编译运行方法
1:直接在终端运行go run命令编译 2.安装code runner插件,根据箭头标示顺序,可以在右侧看到它支持的语言.
- Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) E. Rock Is Push dp
E. Rock Is Push You are at the top left cell (1,1) of an n×m labyrinth. Your goal is to get to the b ...
- strcasecmp()函数
函数介绍: strcasecmp用忽略大小写比较字符串.,通过strcasecmp函数可以指定每个字符串用于比较的字符数,strncasecmp用来比较参数s1和s2字符串前n个字符,比较时会自动忽略 ...
- Java Metrics工具介绍
目录 简介 快速入门 Maven配置 MetricRegistry Gauge Meter Counter Histgram Timer Reporter 更多用法 参考资料 简介 Metric是一个 ...
- 【转】在cmd/bat脚本中获取当前脚本文件所在目录
一.关于cd的/d参数 关于cd 的/d参数,在cmd中敲入cd /?可以看到/d参数的解释如下: 使用 /D 命令行开关,除了改变驱动器的当前目录之外,还可改变当前驱动器.这句话不太好理解,我做个试 ...
- 十一、Spring之事件监听
Spring之事件监听 ApplicationListener ApplicationListener是Spring事件机制的一部分,与抽象类ApplicationEvent类配合来完成Applica ...