目标检测算法综述:
1.引言
1)目标检测可理解为物体识别和物体定位的总和,即要识别物体属于哪个分类以及得到物体在图片中的具体位置;
2)目标检测模型分为两类:一类为two-stage,将物体识别与物体定位分两个步骤(典型代表:R-CNN、fast R-CNN、faster-RCNN);另一类为one-stage,典型代表有Yolo、SSD、YoloV2等.
2.传统的和基于深度学习的目标检测方法对比:
- 传统的目标检测方法
- 手动设计特征
- 滑动窗口
- 传统分类器
- 多步骤
- 准确度和实时性差
- 基于深度学习的目标检测方法
- 深度网络学习特征
- Proposal或者直接回归
- 深度网络
- 端到端
- 准确度高和实时性好
3.解释一些名词与算法
two-stage:
主要通过一个卷积神经网络来完成目标检测过程,提取的是CNN卷积特征。
训练网络主要训练两个部分:第一步训练RPN网络(详情可见下方);第二步训练目标区域检测的网络。
其优缺点在于:网络的准确度高、速度相对one-stage慢。
-
Two-stage目标检测网络基本流程:(借鉴博客:https://blog.csdn.net/gaoyu1253401563/article/details/86485851)
-
流程分析:
1)输入一张图片后,经过卷积神经网络,对图片进行深度特征提取(此卷积神经网络为主干网络,可以使用VGGNet、ResNet、Zenet等经典的神经网络结构);
2)通过RPN网络来完成候选区域产生的操作,同时完成区域的分类(将图片分为背景和目标两种类别),并对目标的位置进行初步预测;
3)通过Roi_pooling层对候选区域中的位置进行精确定位于修正(可理解成抠图的操作);
4)将抠图所得到的候选目标对应到特征图(feature map)上相应的特征区域,再经过全连接层(fc),得到相应的特征向量;
5)最后通过分类与回归两个分支实现候选目标类别的判定和目标位置的确定,即最后矩形框的四个点的坐标(x,y,w,h),该坐标中(x,y)为左上角顶点的坐标,w,h对应的是矩形框的长和宽。
one-stage:
直接回归出目标框的位置,即不用产生候选框,直接将目标边框定位的问题转化成回归问题。
来自博客的图片 :https://blog.csdn.net/gaoyu1253401563/article/details/86477942
RPN网络:
——区域生成网络(Faster R-CNN核心)
RPN的本质是 “ 基于滑窗的无类别obejct检测器 ”
参考链接有:https://blog.csdn.net/JNingWei/article/details/78847696
https://blog.csdn.net/u012426298/article/details/81517609
https://blog.csdn.net/emiedon/article/details/79669303(通俗理解)
里面涉及到anchor,对于anchor的理解可以参考链接:https://blog.csdn.net/as472780551/article/details/81227408
NMS(非极大值抑制算法)
——对目标框(候选框)的合并
为了消除多余的检测框,找到最佳的物体检测的位置。
https://blog.csdn.net/gaoyu1253401563/article/details/86483446(讲得很详细)