ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

深度学习中目标检测Object Detection的基础概念及常用方法

2019-09-21 22:07:17  阅读:371  来源: 互联网

标签:原图 候选框 Object Detection bbox 深度 CNN proposal anchor


目录

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)的差别

img

方法

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,bbox,深度,CNN,proposal,anchor
来源: https://www.cnblogs.com/notesbyY/p/10986930.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有