July深度学习笔记之图像检测、NeuralStyle
2016-12-24 23:01
363 查看
July深度学习笔记之图像检测、NeuralStyle
一、图像识别与定位
我们首先看看图像识别与定位如何实现。首先,对于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层的后面,也可以加在最后一个卷积层的后面。
而如果把我们想要解决的问题再细致一下,我们想要对于猫区分不同的部位,那么如何实现?类似地,我们可以对于一张图片预测多个矩形,即对每个区分的部分分别做回归。
2、第二个思路:取图像窗口
还是刚才的classification + regression思路,咱们取不同的大小的“框”,让框出现在不同的位置,判定得分,取得分最高的那个。实际上,这个过程很像卷积的过程,我们让图像窗口从左上角滑动到右下角,然后分别计算每个窗口的分类得分。
实际上,这会产生很多滑动窗口(包括不同窗口size),而且滑动窗口会有很多重叠的区域。然后综合得分较高的几个部分形成框框。
二、物体识别(Object Detection)
物体识别能否再次看成回归问题?其实你不知道一张图片上有多少个物体,更何况要预测每个物体的(x,y,w,h)…那么能否再次看成分类问题呢?
如果这样的话:
你需要找出很多位置,给很多不同大小的框
你还需要对框内的图像进行分类
当然,你不嫌麻烦的话,并且GPU强大的话,do it吧。
这里提出一种方法:
选择性搜索
即先根据比如颜色,分成很小很小的部分,然后做merge。这样在一张图片上我们可以得到2000张region proposal(候选区域)。
这里给出Rcnn:
讲解RCNN的步骤:
从model-zoo里面扒下来一个分类模型,比如AlexNet。
对该模型进行fine-tuning,比如你现在想分的类别个数为20,那么就把最后一层的1000类改成20类;扔掉最后一次全连接层的参数,重新初始化。
抽取特征。对于2000张region proposal,每一张跑一遍前向运算,然后保存con5层的特征到硬盘上。
对于每一个类别,训练一个SVM分类器。这里如果想要速度快一些的话,使用线性kernel(linear SVM),每一个SVM是一个二分类的分类器,用来判断是否是边缘特征。
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
fast-RCNN就解决了RCNN的瓶颈,不用重复地计算候选区域。而是通过将候选区域和con5的特征做了一个映射。同时,fast-rcnn还是一个完整的end-to-end的系统,一个完整的流水线。
这里有一个过程是roi-pooling的过程,实际上,直接将候选区域和con5的特征做映射,与后面的FC层是不匹配的,所以需要这样的一个过程。
fast-rcnn比rcnn速度要快好多~
实际上,fast-rcnn只是解决了不用重复计算候选区域,而找region proposals的过程并没有优化,所以,速度更快的faster-rcnn应运而生。
faster-rcnn提出了Region Proposal Network,就是在最后一个卷积层后面加上这一个RPN层,用神经网络来选择region proposals,不需要先前选择。在这一层中,滑动一个小的窗口在特征map上作出选择,做物体分类,是否是背景,并且做bbox回归等等。
三、NeuralStyle艺术化图片
相关文章推荐
- 七月算法深度学习笔记6--CNN推展案例:图像检测、NeuralStyle
- 深度学习在图像识别中的应用--学习笔记3
- kinect 学习笔记二(深度图像的利用--抠取用户躯体)
- Matlab图像处理学习笔记(四):多边形检测
- 【深度学习笔记】深度学习用于图片的分类和检测总结
- 七月算法(julyedu.com)5 月深度学习班学习笔记-第一节数学基础
- 图像局部特征学习(笔记1之SUSAN角点检测)
- 深度学习的图像分类、检测领域:2010-2016年被引用次数最多的论文
- 图像局部特征学习(笔记1之Canny边缘检测算子)
- C# Roberts 算法图像边缘检测-学习笔记
- Matlab图像处理学习笔记(四):多边形检测
- 深度学习在图像识别中的应用--学习笔记6
- 深度学习在图像识别中的应用--学习笔记2
- 深度学习在图像识别中的应用--学习笔记4
- 【深度学习笔记】深度学习用于图片的分类和检测总结
- 我的OpenCV学习笔记(18):使用Sobel变化和拉普拉斯变换检测图像边沿
- 深度学习在图像识别中的应用--学习笔记5
- 图像局部特征学习(笔记1之斑点检测)
- 深度学习论文笔记 [图像处理] Deep Residual Learning for Image Recognition
- 【OpenCV学习笔记 004】 图像的缩放、Canny边缘检测和图像的二值化