深度学习-对象定位和检测
在本章中,我们将学习使用卷积神经网络来定位和检测图像上的对象。
• RCNN
• Fast RCNN
• Faster RCNN
• Yolo
• SSD
使用回归本地化对象
回归是关于返回一个数字而不是一个类,在我们的例子中,我们将返回与边界框相关的4个数字(x0,y0,width,height)。 使用图像和地面实况边界框训练该系统,并使用L2距离来计算预测的边界框和地面实况之间的损失。
通常,要做的是在最后一个卷积层上附加另一个完全连接的层:
一次仅适用于一个对象。
有些人在最后一个卷积(Overfeat)层之后附加回归部分,而另一些人在完全连接层(RCNN)之后附加。 两者都可以。
比较边界框预测精度
基本上,我们需要比较预测和地面真实情况之间的“相交相交”(ioU)是否大于某个阈值(例如> 0.5)
神经网络
RCNN(区域+ CNN)是一种依赖外部区域建议系统的方法。RCNN的问题在于它永远不会变得很快,例如,训练网络的步骤如下:
1、接受预先训练的imagenet cnn(例如Alexnet)
2、用需要检测的对象+“ no-object”类重新训练最后一个完全连接的层
3、获取所有投标(=〜2000 p / image),调整它们的大小以匹配cnn输入,然后保存到磁盘。
4、训练SVM在对象和背景之间进行分类(每个类一个二进制SVM)
5、BB回归:训练线性回归分类器,该分类器将输出一些校正因子
快速RCNN
快速RCNN方法从某些外部系统(选择性搜索)接收区域提议。 这些建议将发送到一个图层(Roi Pooling),该图层会将所有区域的数据大小调整为固定大小。 因为完全连接的层期望所有矢量的大小相同,所以需要执行此步骤:
更快的RCNN:
主要思想是使用最后(或更深)的转换层来推断区域提议。
Faster-RCNN由两个模块组成。
RPN(区域提案):基于深度卷积层给出一组矩形
Fast-RCNN Roi池化层:对每个提案进行分类,并完善提案位置。
区域提案网
在这里,我们以框图的方式介绍Faster RCNN的工作原理。
1、获得训练有素的(即imagenet)卷积神经网络
2、从最后一个(或深层)卷积层获取特征图
3、训练区域提议网络,该网络将确定图像上是否存在物体,并提议盒子位置
4、将结果提供给自定义(python)层
5、向ROI池化层(如Fast RCNN)提出建议
6、将所有投标调整为固定大小后,发送到完全连接的层以继续分类
推荐阅读
-
Python面向对象编程中关于类和方法的学习笔记
-
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
-
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
-
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
-
Python面向对象编程中关于类和方法的学习笔记
-
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
-
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
-
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
-
js圣杯模式,枚举,如何区分数组和对象,callee(代码学习)
-
Java 学习笔记 二维数组和对象数组