目标检测笔记

使用两个全连接层,一个作为类别的输出,一个作为物体位置数值的输出。(4个位置)

  • 对于分类的概率,使用交叉熵损失

  • 位置信息具体的数值,使用MSE均方误差损失(L2损失)

在目标检测当中,对bbox主要由两种类别。

  • Grounding-truth bounding box:图片当中真实标记的框

  • Predicted bounding box:预测的时候标记的框

对于一张图片当中多个目标,多个类别的时候。前面的输出结果是不定的,有可能是以下有四个类别的输出这种情况。或者N个结果,这样的话,网络模型输出结构不定

对于多个目标的情况,就不能以固定个数输出物体的位置值

目标检测-Overfeat模型

  • 滑动窗口

目标检测的暴力方法是从左到右、从上到下滑动窗口,利用分类识别目标。但是滑动窗口需要初始设定一个固定大小的窗口,这就遇到了一个问题,有些物体适应的框不一样

所以需要提前设定K个窗口,每个窗口滑动提取M次,总共K×M个图片,通常会直接将图像变形转换成固定大小的图像,变形图像块被输入CNN分类器中,提取特征后,我们使用一些分类器识别类别和该边界框的另一个线性回归器。

目标检测R-CNN模型

候选区域方法(region propousal method):提供了物体检查测的一种重要思路。

  • 步骤(AlexNet为例)

  1. 对于一张图片,找出默认2000个候选区域

  1. 2000个候选区域做大小变换,输入到AlexNet当中,得到特征向量

  1. 2000×4096

  1. 经过20个类别的SVM分类器,对于2000个候选区域做判断,得到[2000,20]得分矩阵

  1. 2000个候选区域做NMS,取出不好的,重叠度高的一些候选区域,得到剩下分数高,结果好的框

  1. 修正候选框,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→输出

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>