【CS231n笔记】08 Spatial Localization and Detection

1.分类+定位
2.物体检测

计算机视觉任务一般可分为下列四类:
— 分类
— 分类+定位
— 检测
— 实例分割
这里写图片描述

1.分类+定位
分类:C个类别
输入:图像
输出:类别标签
评价指标:准确率
这里写图片描述
定位:
输入:图像
输出:边框(x,y,w,h)
评价指标:IoU(Intersection over Union)
这里写图片描述
分类+定位即同时完成上述两个任务

ImageNet数据集的分类+定位(CLS-LOC)任务:
共1000类(同分类任务一样)
每张图像中有一类物体,并且最少有一个位置边框
每类约有800训练图像
算法每次生成5个预测,包括类别标签及位置边框,即top-5预测
预测正确的条件是,在5个预测中分类正确且位置边框>=0.5 IoU
这里写图片描述

思路#1:将定位视为回归问题
图像经过神经网络后输出位置边框坐标,将其与正确坐标的L2距离作为损失函数。
这里写图片描述
基本流程如下:
Step1:训练一个分类模型(如AlexNet, VGGNet, GoogLeNet等)
这里写图片描述
Step2:附加一个新的全连接层“regression head”到网络上
这里写图片描述
Step3:利用SGD和L2损失单独训练“regression head”
这里写图片描述
Step4:在测试时同时使用两个全连接层完成两个任务
这里写图片描述

分类后定位 vs. 未分类定位
这里写图片描述

在何处附加“regression head”?
这里写图片描述

另:定位多个目标,即在每张图像
这里写图片描述

另:人体姿态估计(Human Pose Estimation)
这里写图片描述

思路#2 滑动窗口(Sliding Window)
— 高分辨率、多目标定位,应用分类+回归网络
— 将全连接层替换为卷积层以提高运算效率
— 在所有尺寸中结合分类+回归的预测作为最终预测

Overfeat
ILSVRC2013定位任务冠军
这里写图片描述
使用滑动窗口在整个图像滑动,并进行评分
这里写图片描述

在实际应用中会使用很多不同位置不同尺寸的滑动窗口
这里写图片描述

将全连接层替换为卷积层
这里写图片描述

在测试阶段只增加扩大区域运算量
这里写图片描述

ImageNet分类+定位任务历年冠军
这里写图片描述

2.物体检测
— 物体检测任务中目标数量不定,使用回归的方法已不再适合
— 将检测看作分类,需要测试多个位置和尺寸,如果分类器够快,挨个试就好:)

传统方法:HoG、DPM
这里写图片描述

将检测视作分类并且使用深度学习方法时,需要在不同位置和尺寸上使用对计算要求极高的卷积神经网络,那么只能处理可能位置集合中极小的子类。

候选区域(Region Proposals)
— 在图像中寻找可能包含物体的“blobby”区域
— 未知类别(class-agnostic)物体检测器
— 寻找块状区域
这里写图片描述

Selective Search算法
这里写图片描述

提取候选区域方法汇总
这里写图片描述
相比较最优的是EdgeBoxes

R-CNN
这里写图片描述
候选区域提取(Selective Search)+特征提取(CNN)+分类(SVM)&定位(Bounding-box Regression)

训练流程如下:
Step1:利用ImageNet数据集训练一个分类模型
这里写图片描述
Step2:微调(fine-tune)模型用于检测
— 不同于ImageNet的1000类,这里只关心20类物体,背景也算一类
— 去掉最后一个全连接层,根据实际类别数量设置全连接层神经元数量,重新初始化
— 从检测图像中选取正/负样本区域对模型进行训练
这里写图片描述
Step3:提取特征
— 从所有图像中提取候选区域
— 对每个区域:缩放到和CNN模型输入尺寸相同大小,进行前向传播,将pool5层特征保存下来
— 需要一个大容量硬盘,因为从PASCAL数据集中提取的特征大约200GB
这里写图片描述
Step4:针对每个类别训练一个二分类SVM来对区域特征进行分类
这里写图片描述
这里写图片描述
Step5:bbox regression
针对每一类训练一个线性回归模型,将区域特征映射到边框坐标,对候选框进行调整
这里写图片描述

物体检测相关数据集
这里写图片描述

物体检测任务的性能评估
使用一种称为mAP(mean average precision)的度量标准
对每一类计算相应的精度均值,然后计算在所有类别上的精度均值
当检测区域与真实值区域的IoU大于某阈值(一般取0.5(mAP@0.5))时检测结果判定为正确
汇总所有测试图像的检测结果,画出每类的准确率/召回率曲线,精度均值就是曲线下方的区域面积
mAP的取值范围为0~100,越高表示性能越好

R-CNN结果
这里写图片描述
从图中可以看出,R-CNN相比之前非深度学习方法性能有了很大提升,使用bounding-box regression可以提高一些性能,使用更深层的网络架构可以提高一些性能。

R-CNN缺陷
1.测试阶段运行太慢,因为需要对所有候选区域图像进行CNN前向传播
2.SVM和回归模型都是事后处理,CNN特征无法根据SVM和回归模型的相应进行更新
3.训练流程分多个阶段,过于复杂

Fast R-CNN
这里写图片描述

针对R-CNN缺陷#1,同一张图像不同候选区域共享卷积层的计算结果
这里写图片描述

针对R-CNN缺陷#2#3,对整个系统进行端到端训练
这里写图片描述

Fast R-CNN:Region of Interest Pooling
这里写图片描述

Faster R-CNN结果(VGG-16模型,Pascal VOC 2007数据集)
这里写图片描述
但是,测试阶段的时间并没有考虑候选区域提取的耗时,加上这部分耗时之后提速幅度便小很多
这里写图片描述
解决办法,使用CNN进行候选区域提取,这就是Faster R-CNN

Faster R-CNN
在最后的卷积层后面插入一个候选区域网络RPN(Region Proposal Network),用于进行候选区域提取,提取出候选区域的后续处理同Fast R-CNN一样。
这里写图片描述

Faster R-CNN: Region Proposal Network
— 在特征图中使用滑动窗口
— 建立一个小的网络:(1)区分是不是目标物体(2)bbox regression进行定位
— 滑动窗口的位置提供了关于图像的定位信息
— box regression提供了关于该窗口的更精准的定位信息
这里写图片描述
— 在每个位置使用N个锚点框(anchor box)
— 锚点框具有平移不变性,在每个位置使用相同的一组锚点框
— 回归算法计算锚点框与真正位置的偏移量
— 分类器计算出每个锚点框(已调整)区域是否属于某物体类型的概率
这里写图片描述

Faster R-CNN: Training
论文中描述的是交替优化RPN及后续处理,比较复杂
实际应用是结合在一起进行训练,一个网络,四个损失
— RPN分类(锚点框中是否有物体)
— RPN回归(锚点框->候选框)
— Fast R-CNN分类(所属类别)
— Fast R-CNN回归(候选框->定位框)
这里写图片描述

Faster R-CNN结果
这里写图片描述

当前最先进的物体检测算法:ResNet 101 + Faster R-CNN + some extras
这里写图片描述

ImageNet Detection 2013-2015
这里写图片描述

YOLO
You Only Look Once Detection as Regression
将图像划分为S*S个网格
对于每个网格进行预测:
bbox:4个坐标+可信度
类别评分:C类
回归算法在图像中共有7 x 7 x (5 * B + C)个预测框坐标
直接使用CNN进行预测
这里写图片描述
比Faster R-CNN更快,但效果略差
这里写图片描述

源码链接:
R-CNN
(Cafffe + MATLAB): https://github.com/rbgirshick/rcnn
Fast R-CNN
(Caffe + MATLAB): https://github.com/rbgirshick/fast-rcnn
Faster R-CNN
(Caffe + MATLAB): https://github.com/ShaoqingRen/faster_rcnn
(Caffe + Python): https://github.com/rbgirshick/py-faster-rcnn
YOLO
http://pjreddie.com/darknet/yolo/

概述
定位(Localization)
— 寻找固定数量物体类型
— 使用L2回归算法将CNN特征映射为边框坐标
— 比检测更简单
— Overfeat:回归+高效滑动窗+全连接层->卷积层
— 更深的网络结构性能更好
物体检测(Object Detection)
— 在图像中寻找不定数量的物体
— 在使用CNN之前,一般使用密集多尺寸滑动窗(如HoG,DPM)
— 在后续区域提取时避免使用密集滑动窗
— R-CNN:Selective Search + CNN classification / regression
— Fast R-CNN:交换卷积层提取特征和提取候选区域的顺序
— Faster R-CNN:在CNN网络中进行候选区域提取
— 更深的网络结构性能更好

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值