目标检测综述
目标检测物体检测的任务是找出图像或视频中的感兴趣物体,同时检测出它们的位置和大小。物体检测过程中有很多不确定因素,如图像中物体数量不确定,物体有不同的外观、形状、姿态,加之物体成像时会有光照、遮挡等因素的干扰,导致检测算法有一定的难度。 目标检测有两个要素:
- 分类 :分类向量 [p0, …, pn ]
- 回归 :回归边界框 [x1, y1, x2, y2]
- 目标检测的完成方法:
将 3D 张量映射到两个张量
- 分类张量: shape 为 [N, c+1]
- 边界框张量: shape 为 [N, 4]
在边界框的确定中,传统的方法是----滑动窗策略 缺点:
- 重复计算 量大
- 窗口大小难确定
目前,物体检测发展主要集中在两个方向:two stage算法(如R-CNN系列)和one stage算法(如YOLO、SSD等)。两者的主要区别在于two stage算法需要先生成proposal(一个有可能包含待检物体的预选框),然后进行细粒度的物体检测。而one stage算法会直接在网络中提取特征来预测物体分类和位置。第一类方法是准确度高一些,但是速度慢,但是第二类算法是速度快,但是准确性要低一些。
常见的目标检测算法:
- R-CNN
目标检测有两个主要任务:物体分类和定位,为了完成这两个任务,R-CNN借鉴了滑动窗口思想, 采用对区域进行识别的方案,具体是: 1、输入一张图片,通过指定算法从图片中提取 2000 个类别独立的候选区域(可能目标区域) 2、对于每个候选区域利用卷积神经网络来获取一个特征向量 3、对于每个区域相应的特征向量,利用支持向量机SVM 进行分类,并通过一个bounding box regression调整目标包围框的大小。
- Fast R-CNN
面对R-CNN的缺陷,Ross在2015年提出的Fast R-CNN进行了改进。 1、首先是采用selective search提取2000个候选框RoI 2、使用一个卷积神经网络对全图进行特征提取 3、使用一个RoI Pooling Layer在全图特征上摘取每一个RoI对应的特征 4、分别经过为21和84维的全连接层(并列的,前者是分类输出,后者是回归输出) Fast R-CNN通过CNN直接获取整张图像的特征图,再使用RoI Pooling Layer在特征图上获取对应每个候选框的特征,避免了R-CNN中的对每个候选框串行进行卷积(耗时较长)
- ResNet-FPN
多尺度检测在目标检测中变得越来越重要,对小目标的检测尤其如此。现在主流的目标检测方法很多都用到了多尺度的方法,包括最新的yolo v3。Feature Pyramid Network (FPN)则是一种精心设计的多尺度检测方法。FPN结构中包括自下而上,自上而下和横向连接三个部分,如下图所示。这种结构可以将各个层级的特征进行融合,使其同时具有强语义信息和强空间信息 - Mask R-CNN
ResNet-FPN+Fast RCNN+Mask,实际上就是Mask RCNN。
生成对抗网络
由于时间限制,先不打算在此方向花费过多时间。笔记略过
循环神经网路
同上,不打算花费过多时间。
pytorch学习总结
经过一周学习,基本把pytorch的课程观看了几遍。通过学习,已经大致了解如何用pytorch搭建一个网络结构。目前,通过整理,pytorch部分的知识点可以由以下几个实验串联。 1、线性回归 2、逻辑回归 3、加载数据 4、加载多维数据 5、多分类问题 6、卷积神经网络 学会了以上6个实验,目前的状况是能搭建稍简单的网络,能看懂CVbaseline中几个经典框架的代码。
- 缺点:
1、后期有点赶进度,大量的知识点快速略过,没有能很好的掌握 2、自己练习的少,不能完全自主搭建一个网络结构。
|