目标检测笔记
使用两个全连接层,一个作为类别的输出,一个作为物体位置数值的输出。(4个位置)
-
对于分类的概率,使用交叉熵损失
-
位置信息具体的数值,使用MSE均方误差损失(L2损失)
在目标检测当中,对bbox主要由两种类别。
-
Grounding-truth bounding box:图片当中真实标记的框
-
Predicted bounding box:预测的时候标记的框
对于一张图片当中多个目标,多个类别的时候。前面的输出结果是不定的,有可能是以下有四个类别的输出这种情况。或者N个结果,这样的话,网络模型输出结构不定

对于多个目标的情况,就不能以固定个数输出物体的位置值
目标检测-Overfeat模型
-
滑动窗口
目标检测的暴力方法是从左到右、从上到下滑动窗口,利用分类识别目标。但是滑动窗口需要初始设定一个固定大小的窗口,这就遇到了一个问题,有些物体适应的框不一样
所以需要提前设定K个窗口,每个窗口滑动提取M次,总共K×M个图片,通常会直接将图像变形转换成固定大小的图像,变形图像块被输入CNN分类器中,提取特征后,我们使用一些分类器识别类别和该边界框的另一个线性回归器。
目标检测R-CNN模型
候选区域方法(region propousal method):提供了物体检查测的一种重要思路。
-
步骤(AlexNet为例)
-
对于一张图片,找出默认2000个候选区域
-
2000个候选区域做大小变换,输入到AlexNet当中,得到特征向量
-
2000×4096
-
经过20个类别的SVM分类器,对于2000个候选区域做判断,得到[2000,20]得分矩阵
-
2000个候选区域做NMS,取出不好的,重叠度高的一些候选区域,得到剩下分数高,结果好的框
-
修正候选框,bbox的回归微调。

非最大抑制(NMS)
-
目的:筛选候选区域,目标是一个物体只保留一个最优的框,来抑制那些冗余的候选框
修正候选区域
为了让候选框标注更准确,去修正原来的位置。修正过程(线性回归)
检测的评价指标
-
ioU交并比
-
平均精确率(map)
改进-SPPNet

Fast R-CNN
训练会比较统一:废弃了svm以及sppnet
-
roi pooling layer+softmax
多任务损失-Multi-task loss
平均绝对误差(MAE)损失即L1损失+交叉熵损失
Faster R-CNN
-
候选区域筛选融合到网络当中
-
区域生成网络(RPN)+Fast R-CNN
-
RPN替代了SS选择性搜索算法
-
RPN网络用于生成region proposals
-
通过softmax判断anchors属于foreground或者background
-
bounding box regression修正anchors获得精确的proposals
-
得到默认300个候选区域给roi pooling继续后面fast rcnn的步骤
RPN原理
RPN网络的主要作用是得出比较准确的候选区域。
-
用m×n(默认3×3=9)的大小窗口去扫面特征图得到K个候选窗口
-
每个特征图中像素对应的9个窗口大小?
-
三种尺度(128,256,512),三种长宽比(1:1, 1:2, 2:1),3×3=9种不同大小的候选框
-
eg:feature(51*39*256) 得到51*39*9 anchors
-
窗口输出[N,256]➡分类:判断是否是背景
-
回归位置:N个候选框与自己对应目标值GT做回归,修正位置
-
得到更好的候选区域提供给ROI pooling使用
Faster R-CNN训练
-
RPN训练:
-
分类:二分类,poftmax,;logisticregression
-
候选框的调整:均方误差做修正
-
Fast RCNN部分的训练:
-
预测类别训练(softmax)还有预测位置的训练(均方差损失)
-
样本准备:正负anchors样本比例:1:3
YOLO
GoolgleNet+4个卷积+2个全连接层
网络输出大小:7×7×30
流程理解
-
单元格
-
7*7=49个像素值,理解成49个单元格
-
每个单元格负责预测一个物体类别,并且直接预测物体的概率值
-
每个单元格:两个(默认)bbox位置,两个置信度(confidence)
-
一个bbox:xmin,ymin,xmax,ymax,confidence
-
两个bbox:4+1+4+1=10个值
-
30:上面的10个+20(20代表20类的预测概率结果)
网格输出筛选
-
一个网格会预测两个bbox,在训练时我们只有一个bbox专门负责预测概率(一个object 一个bbox)
-
20个类别概率代表这个网格当中的一个bbox
-
一个confidence score
-
yolo框,概率值都直接由网络输出【7*7*30(人为给30个值赋了定义)】;faster-rcnn是人为设定一个值,然后利用RPN网络对其优化到一个更准的坐标和是否背景类别
训练
-
预测框对应的目标值标记
-
三部分损失 bbox损失+confidence损失+classfication损失
总结
-
优点:速度快
-
缺点:
-
准确率会打折扣
-
yolo对相互靠的很近的物体(挨在一起且中点都落在同一个格子上的情况),还有很小的群体检测效果不好,这是因为一个网格中只预测了两个框
SSD
-
SSD结合了YOLO中的回归思想和Faster-RCNN中的Anchor机制
-
不同尺度的特征图上采用卷积核来预测一系列Default Bounding Boxes的类别、坐标偏移
-
不同尺度feature map所有特征点上使用PriorBox层(Detector&classifier)
训练与测试
-
训练
-
样本标记:8732个候选框default boxes,得到正负样本,正:负=1:3
-
Softmax Loss(Faster R-CNN是log loss),位置回归则是采用Smooth L1 loss(与Faster R-CNN一样)
-
测试
-
输入→输出→nms→输出