首页 > 代码库 > 『cs231n』图像定位与检测

『cs231n』图像定位与检测

图像处理任务

分类,定位,检测,图像分割辨析:

技术分享

定位:

每张图片只有单个对象(可以有多个类),后面有提到,一般只要是固定个对象即可,不一定是一个(人体姿势判断部分)由于实现相对简单,所以能划分为定位任务时尽量划分为定位任务

检测:

每张图片可以有多个对象和多个类

分割:

不是简单的画框,而是围出轮廓,本节不予讨论

图像分类&定位

定位任务引入

技术分享

和分类任务输出一个代表类标签的向量不同,定位任务输出的是描述框的四个数字,而网络评估不使用准确率而使用IOU。【注】IOU定义如下:

 

技术分享

 

 

 

矩形框A、B的一个重合度IOU计算公式为:

IOU=(A∩B)/(A∪B)

 定位任务idea:回归任务

技术分享

 

 像训练回归任务一样训练定位任务:

  • 神经网络输出4个值
  • 标准值也有四个(样本)
  • 计算L2损失(平方和损失)
  • 反向传播优化神经网络。

 

定位任务实践:

 技术分享

首先训练&下载一个分类模型(使用迁移学习的概念)

 

技术分享

修改全链接层的结构:使N分类的最后一层输出改为输出4个数字。

 

技术分享

使用数据集训练新的网络。

 

 技术分享

在测试时同时经过两个网络,实现分类&定位。

 

定位任务思考

回归层输出值修改:

 技术分享

不同的回归层,假设是C分类问题:

  • 分类网络输出C个数字
  • 定位网络输出4个数字,即训练不针对特定类别
  • 定位网络输出C*4个数字,即每个类对应一个框(损失计算有修改,但是老师没有说明)

 

回归层位置修改:

 技术分享

两种思路:

  • 卷积层之后直接加回归层
  • 全链接层之后再加回归层(去掉输出层后修改,和前面介绍类似)

 

定位任务拓展

 技术分享

多目标定位:定位一个对象和他的子对象(个人理解是因为一个特定类对象的子对象种类数目是确定的,可以使用简单的定位网络完成,也是定位的思考一的成果)

 人体姿势判断

技术分享

Google的一篇论文,其思想就是使用CNN得到人体各个关节的位置后,对人体的姿势进行判断。

 

定位任务idea:滑动窗口

 技术分享


技术思路:

  • 通过滑窗多次使用分类&多目标定位网络实现目标
  • 使用卷积层取代全连接层提升效率

 

滑窗实例:Overfeat

技术分享

Overfeat网络,使用AlexNet的架构,添加一个定位网络后实现定位功能


经典滑窗定位小猫示意:

技术分享

技术分享

 

 技术分享

 

 

 

 

技术分享

 

 

 技术分享

技术分享

技术分享

注意到有的框都画到滑窗外面去了,老师给出的解释是因为是回归,所以输出值理论可以是任何值,感觉虽然回归的确是这么个道理,但用在这里做解释始终不太信服。

 

技术分享

论文示意图:

  • 滑窗位置+得分图
  • 每个滑窗给出的定位+得分图
  • 最终结果

     

效率提升

技术分享

将全连接层替换为卷积层可以大大减少参数量,提升网络效率

 

替换原理

技术分享

 

定位网络成果统计

 技术分享

 

『cs231n』图像定位与检测