待更新补充…
放在最前——MARK入门阅读学习资料
(一)目标检测基本概念
(1)名词含义
目标检测
获得图像or视频中目标的位置信息和类别信息,通常图像中有多个目标需要检测
- 类别任务:输出N个类别的标签,评估指标是准确度Accuracy
- 定位任务:输出物体的位置坐标,评估指标IOU
物体位置放入boundingbox(bbox)里,有两种格式:xywh格式(中心点以及点距两边的高宽)&xmin,ymin,xmax,ymax(选框的左上角右下角坐标)
目标检测方法的分类
- TwoStage(两步走Region Proposal)先做区域划分(候选区)再做目标分类
- OneStage(端到端End to End)用同一个网络一步实现区域划分和分类
Bounding box
- Ground-truth Bounding box真实框
- Predicted Bounding box预测框
滑动窗口
原理: 利用滑窗从左到右从上到下遍历图像寻找概率最大的位置
不同物体适合不同大小和高宽比的窗口→定义K个若干大小的窗口,每个窗口滑动M次,获得K*M张图片输入进入分类网络中
R-CNN步骤详解
-
1 标定候选区域Region of Interest(ROI),选择性搜索Selective Search(SS)
选择性搜索Selective Search在一张图片上提取出来约2000个侯选区域
由于长宽不定,不能直接输入alexNet
2000个候选区域做大小变换
-
2 提取特征向量:输入AlexNet网络
-
3 用特征向量训练分类器
R-CNN选用SVM进行二分类。假设检测20个类别,那么会提供20个不同类别的SVM分类器,每个分类器都会对2000个候选区域的1特征向量分别判断一次,这样得出[2000, 20]的得分矩阵
20个分类器每个都会对2000个候选区域的特征向量分别进行打分,获得2000×20的得分矩阵,利用得分矩阵再进行下一步的迭代筛选
-
4 剔除重叠建议框:非极大抑制Non-maximum Suppression(NMS)
筛选候选区域,目标是一个物体只保留一个最优的框,来抑制那些冗余的候选框
迭代过程
1、对于所有的2000个候选区域得分进行概率筛选, 0.5
2、剩余的候选框,每个候选框找到各自的GT(Ground Truth)
- 假设图片真实物体个数为2(N) ,筛选之后候选框为5(P),计算N中每个物体位置与所有P的交并比loU计算,得到P中每个候选框对应loU最高的N中一个
- 如下图, A、C候选框对应左边车辆, B、D、E对应右边车辆
假设在滑动窗口有:A、B、C、D、E5个候选框,
- 第一轮:对于右边车辆,假设B是得分最高的,与B的lou>0.5删除。现在与B计算loU, DE结果>0.5,剔除DE, B作为一个预测结果
- 第二轮:对于左边车辆, AC中, A的得分最高,与A计算loU, c的结果>0.5,剔除C, A作为一个结果
最后算法输出A,B;框的位置在上一步的选择性搜索就已经获得
最终输出:(理想)每个GroundTruth都有一个候选框预测结果
“但是SS获得的候选框位置未必特别准确,可能区域过大”——>要进行第五步,候选框bbox的修正
- **5 修正候选框:得到bbox regressor **
回归用于修正筛选后的候选区域,使之回归于ground-truth;默认认为这两个框之间是线性关系,因为在最后筛选出来的候选区域和ground-truth很接近了
A是候选框,G是目标GT框,让A与G做回归训练,得到四个参数
获得最终R-CNN的输出:比如对于坐标x,x*w_x=x_locate
交并比Interest over Union(IoU)
两个区域的重叠程度overlap:侯选区域和标定区域的loU值(取值:0~1)
通常门限threshold设定为:类别正确即IoU>0.5,门限threshold=0.5,IoU越靠近1说明越准确
平均精确率Mean Average Precision(MAP)
这个地方教程讲得不如这里详尽:睿智的目标检测2——mAP的概念
对于目标检测而言任务,每一个类都可以计算出其Precision和Recall,通过合理的计算,每个类都可以得到一条P-R曲线,曲线下的面积就是AP的值。
- 假设存在M张图片,对于其中一张图片而言,其具有N个检测目标,其具有K个检测类,使用检测器得到了S个Bounding Box(BB),每个BB里包含BB所在的位置以及对于K个类的得分C。
- 利用BB所在的位置可以得到与其对应的GroundTruth的IOU值。
- 然后对其进行mAP的计算
(二)目标检测基本原理
基本思路
-
输出:
初步思路:对于单个物体,在做分类问题回归时增加一个定位信息的全连接输出层,即:FC1+FC2
但是由于图像中目标的数量不一定,所以模型的输出结构也不定
1.暴力穷举思路:Overfeat模型
2.候选区域思路:Region Proposal method——R-CNN模型
*这些具体可以参照上一部分内容
R-CNN的缺点
- 训练阶段多:步骤繁琐:微调网络+训练SVM+训练边框回归器。
- 训练耗时:占用磁盘空间大: 5000张图像产生几百G的特征文件。(VOC数据集的检测结果,因为SVM的存在)
- 处理速度慢:使用GPU, VGG16模型处理一张图像需要47s
- 图片形状变化:候选区域要经过crop/warp进行固定大小,无法保证图片不变形
R-CNN慢的主要原因就在于CNN特征提取(第三步)过于耗时
- 基于回归分析的思路
One-Stage方法
网络评估指标
分别对分类&定位两个任务分别评估
-
IoU交并比
主要是位置准确率的考量
-
MAP平均精确率
对于分类准确率的考量
模型MAP
- 双阶段Two-Stage算法
- Overfeat
- R-CNN
- SPP-Net
- Fast R-CNN
- Faster R-CNN
- R-FCN
- Mask R-CNN
- 单阶段One-Stage算法
YOLO系列&SSD系列&others
- YOLO
- YOLOv2
- YOLOv3
- YOLOv4
- YOLOv5
- SSD
- DSSD
- R-SSD
- F-SSD
- DSOD
- RetinaNet
(三)LabelImg学习