July深度学习笔记之图像检测、NeuralStyle

来源:互联网 发布:nginx https 二级域名 编辑:程序博客网 时间:2024/06/03 16:40

July深度学习笔记之图像检测、NeuralStyle

image

一、图像识别与定位

我们首先看看图像识别与定位如何实现。

首先,对于CNN来说,做图像分类已经能够有很好的效果。输入一张图片,会输出类的标签。而定位Locatization呢?

实际上,Locatization要求我们找到在这张图片上某个物体的位置(用方框圈出),即可以看成输出四个值(x,y,w,h),其中(x,y)是矩形左上角的位置坐标,w表示矩形的宽度,h表示矩形的高度。这样,一个方框就可以被表示出来。

1、首先看看其中的一个思路:

我们可以把预测这样的四个数看成是回归问题,并用欧氏距离去衡量损失。

步骤为:
1. 先解决简单问题,搭一个识别图像的神经网络。可以在AlexNet VGG GoogleLenet上fine-tuning一下。
2. 在上述神经网络的尾部展开,成为classification + regression模式。即头部固定(参数和网络结构fix住),只改变FC层后面部分。
3. Regression那个部分用欧氏距离损失,使用SGD训练。
4. 预测阶段把2个头部拼上,完成不同的功能(分类和定位)。

而回归的部分加在哪?可以加在FC层的后面,也可以加在最后一个卷积层的后面。

而如果把我们想要解决的问题再细致一下,我们想要对于猫区分不同的部位,那么如何实现?类似地,我们可以对于一张图片预测多个矩形,即对每个区分的部分分别做回归。

image

2、第二个思路:取图像窗口

还是刚才的classification + regression思路,咱们取不同的大小的“框”,让框出现在不同的位置,判定得分,取得分最高的那个。

实际上,这个过程很像卷积的过程,我们让图像窗口从左上角滑动到右下角,然后分别计算每个窗口的分类得分。

image

实际上,这会产生很多滑动窗口(包括不同窗口size),而且滑动窗口会有很多重叠的区域。然后综合得分较高的几个部分形成框框。

二、物体识别(Object Detection)

物体识别能否再次看成回归问题?其实你不知道一张图片上有多少个物体,更何况要预测每个物体的(x,y,w,h)…

那么能否再次看成分类问题呢?
如果这样的话:

  • 你需要找出很多位置,给很多不同大小的框
  • 你还需要对框内的图像进行分类

当然,你不嫌麻烦的话,并且GPU强大的话,do it吧。

这里提出一种方法:
选择性搜索

image

即先根据比如颜色,分成很小很小的部分,然后做merge。这样在一张图片上我们可以得到2000张region proposal(候选区域)。

这里给出Rcnn:

image

讲解RCNN的步骤:

  1. 从model-zoo里面扒下来一个分类模型,比如AlexNet。
  2. 对该模型进行fine-tuning,比如你现在想分的类别个数为20,那么就把最后一层的1000类改成20类;扔掉最后一次全连接层的参数,重新初始化。
  3. 抽取特征。对于2000张region proposal,每一张跑一遍前向运算,然后保存con5层的特征到硬盘上。
  4. 对于每一个类别,训练一个SVM分类器。这里如果想要速度快一些的话,使用线性kernel(linear SVM),每一个SVM是一个二分类的分类器,用来判断是否是边缘特征。
  5. Bbox regression,这一步骤是做一些优化,训练一个回归模型来调整proposals。比如,如果框框正好圈中物体,则回归结果为(0,0,0,0),如果圈的有一些偏,则输出(0.5,0,0,0)。

下面总结一些RCNN:

2000个regions丢到CNN中只是为了拿到con5的特征,(这里不要过于纠结为什么要拿con5这一层的特征),拿到这些特征之后保存到硬盘上,然后利用这些特质去做SVM,判断哪些是物体的边缘。

实际上,通过卷积(共享权值)和池化(下采样)会使图像失真,而FC全连接层则会把信息还原一部分,所以一般来说,FC层的表现能力很强。

总体来说,RCNN就是将一张图片的每一个框框过一遍CNN,非常耗时。所以,在RCNN的基础上,提出了fast-RCNN。

fast-RCNN

image

fast-RCNN就解决了RCNN的瓶颈,不用重复地计算候选区域。而是通过将候选区域和con5的特征做了一个映射。同时,fast-rcnn还是一个完整的end-to-end的系统,一个完整的流水线。

image

这里有一个过程是roi-pooling的过程,实际上,直接将候选区域和con5的特征做映射,与后面的FC层是不匹配的,所以需要这样的一个过程。

fast-rcnn比rcnn速度要快好多~

实际上,fast-rcnn只是解决了不用重复计算候选区域,而找region proposals的过程并没有优化,所以,速度更快的faster-rcnn应运而生。

image

faster-rcnn提出了Region Proposal Network,就是在最后一个卷积层后面加上这一个RPN层,用神经网络来选择region proposals,不需要先前选择。在这一层中,滑动一个小的窗口在特征map上作出选择,做物体分类,是否是背景,并且做bbox回归等等。

image

三、NeuralStyle艺术化图片

image

image

image

image

0 0
原创粉丝点击