【深度学习】④--卷积神经网络与迁移学习

1. 图像识别与定位

图像的相关任务可以分成以下两大类和四小类: 图像识别,图像识别+定位,物体检测,图像分割。

图像的定位就是指在这个图片中不但识别出有只猫,还把猫在图片中的位置给精确地抠出来今天我们来讲一讲如何神经网络来做图像识别与定位。

图像的识别: 可以看成是图像的分类》C个类别 输入:整个图片 输出:类别标签(每个类别会有一个概率,选出概率最大的标签) 评估标准:准确率

图形的定位: 输入:整个图像 输出:物体边界框(x,y,w,h)。x,y是物体边界框的左上定点的横纵坐标;w,h是这个图片的长和高。通过这4个指标就可以定位出图中的物体的位置。 评估标准:交并准则

所以图像的识别与定位就是以上两个任务组成。

下面介绍2中思路去实现图像的识别与定位。

1.1 思路1:视作回归

对于图像定位来说只要求出了(x,y,w,h)这四个值就得到了定位,因为这四个值是连续性,所以不能用分类的方法来做,这里考虑用回归来做。

与之前分类问题不同的是,现在我们使用L2loss也就是欧氏距离来求损失函数。

步骤1: 首先得搭一个图像识别的神经网络,可以在VGG,GoogleLenet这些优秀的模型上fine-tuning一下。

步骤2: 接下来在上述神经网络的尾部展开成两个部分:成为classification + regression的模式。前者是为了识别,后者是为了定位。一般这个展开会放在卷积层后面,也有时候放在全连接层后面。

步骤3: 在regression回归部分使用欧氏距离计算损失,然后运用SGD来训练,在classification部分和以前一样不变。

步骤4: 在预测阶段,将classification和regression两个模块拼上,让他们各自去实现自己不同的功能。

regression模块加在什么位置呢? 可以放在卷积层后,如VGG 也可以放在全连接层后, 如DeepPose

能否对主体有更细致的识别? 神经网络能够对图形进行定位,那么能否识别出这个物体在干啥子在做什么动作呢? 这也可以,需要提前把规定好K个组成部分,然后分别去做k个部分的回归就行了。 比如识别人的姿势,每个人的组成部分是固定的,可以将人分成K个首尾相接的线段,然后对这些线段分别求回归。

1.2 思路2:借助图像窗口

另一个思路是来自于2014年发表的一篇论文。它的逻辑是这样的:取不同大小的“框”,让框出现在不同位置,判定每个框在每个为上的得分,按照得分高低对结果宽工作抽取与合并。

如下图,取一个3*221*221的一个框,让它在图像的4个位置走一遍,然后得出每个位置的得分,右下角的框得分最高,识别出猫的概率为0.8.

这个方法存在最大的问题是:“参数多”,“计算慢”。因为要去尝试不同大小的框并放在不同位置。但是论文中提到了解决这两个缺陷的方案。 下图是神经网络最初的形式,从卷积层出来或分成了两个模块,每个模块中分别有及几层的全连接。如果FC层中的神经元有4096个,那么这个过程会产生4096*4096个参数。

论文作者提出了这样的方案,从卷积层出来后的两个模块中,将FC层乘以一个1*1的conv卷积层,那么参数的数量就下降到了4069*1了。

论文里的东东拿出来讲的要十分庞大,有兴趣的童鞋直接看原文论,哈哈。

2. 物体识别

2.1 背景

在衣服图中可能有多个物体,此时就需要去把每个物体都识别出来。比如下图中有4个物体,两个猫星人,一个汪星人,一个小鸭子。如果用回归,要去识别四个物体就需要预测4*4 = 16 个连续值了。

用回归来做物体识别需要先确定物体的个数K。但是通常情况下,我们并不知道图像中有多少个物体,就像下图这样。

于是我们又回到了分类问题,让不同大小的框去移动然后做分类,就像下图这样。

但是分类问题来做物体识别也有难处: --你需要找很多位置,还需要设定很多不同大小的框 --还要对每个框在每个位置的图像做分类 --而且你选的框的大小也不一定对啊 --.....

2.2 边缘策略

我们来换一个角度想问题,为什么要用那么多的框大海捞针呢,为什么不在图中先找到一个可能成框的东东作为候选框呢。 --也就是说,想办法找到包含内容的图框。 原理是这样的,先找到一个像素点,然后将它周围与它相近的点也包罗进来形成了一个小的候选框,这些小的候选框再向周围扩张,将颜色相似的点包含进来,如此一轮一轮候选框就会逐渐扩大了。具体过程如下图:

最后一张图中其实已经非常清晰地识别出来墙上的相框和旁边的美女了。

2.3 R-CNN

一个大牛在2014年发表了一篇物体识别的论文。 它的实验大概是这样做的: 首先对图片使用边缘策略进行物体识别,然后将每个候选框输入卷积层产出特征,接着一边让卷基层的输出进入SVM做一个“有无物体”的分类,如果有的话就进行回归计算。回归计算是去调整候选框,使其能刚好抠出一个物体。

有兴趣的童鞋还是可以去看原版论文:

原文发布于微信公众号 - Spark学习技巧(bigdatatip)

原文发表时间:2018-02-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习算法与Python学习

基础回顾 | 10幅图解释机器学习中的基本概念

1. Test and training error: 为什么低训练误差并不总是一件好的事情呢:以模型复杂度为变量的测试及训练错误函数。

800
来自专栏WD学习记录

机器学习 学习笔记(21)深度学习中的正则化

在机器学习中,许多策略被显式的设计来减少测试误差(可能会以增大训练误差为代价)。这些策略统称为正则化。

2982
来自专栏IT派

最常用的十大机器学习算法都在这了,果断收藏!

导语:本文列出了数据科学家使用的十大机器学习算法,并且介绍了这十大算法的特点,供各位机器学习的新人们更好地理解和应用。

1343
来自专栏机器之心

教程 | 经得住考验的「假图片」:用TensorFlow为神经网络生成对抗样本

选自arXiv 作者:Anish Athalye 机器之心编译 参与:李泽南 用于识别图片中物体的神经网络可以被精心设计的对抗样本欺骗,而这些在人类看起来没有什...

8099
来自专栏SIGAI学习与实践平台

人脸检测算法综述

人脸检测是目前所有目标检测子方向中被研究的最充分的问题之一,它在安防监控,人证比对,人机交互,社交和娱乐等方面有很强的应用价值,也是整个人脸识别算法的第一步。在...

6861
来自专栏LhWorld哥陪你聊算法

【深度学习篇】--神经网络中的调优二,防止过拟合

一种方式去使用TensorFlow做正则是加合适的正则项到损失函数,当一层的时候,可以如下定义:

2003
来自专栏老秦求学

[Deep-Learning-with-Python]基于Keras的房价预测

通过20世纪70年代波士顿郊区房价数据集,预测平均房价;数据集的特征包括犯罪率、税率等信息。数据集只有506条记录,划分成404的训练集和102的测试集。每个记...

1643
来自专栏云时之间

深度学习与神经网络:BP神经网络

BP神经网络现在来说是一种比较成熟的网络模型了,因为神经网络对于数字图像处理的先天优势,特别是在图像压缩方面更具有先天的优势,因此,我这一段时间在研究神经网络的...

4619
来自专栏ATYUN订阅号

【学术】卷积神经网络教你如何还原被马赛克的文本图像

对人类来说,将带有文字的图像锐化是很容易的。以图1为例。 ? 图1:被锐化的图像 把图1恢复为图2也不是件很困难的事。 ? 图2:原图 然而,我们太懒了的...

3617
来自专栏人工智能

神经网络与反向传播算法

1、前言 先简单的说下神经网络吧。 简单来说就是模拟大脑的神经元。 前端会有一大批数据输入,例如,前端输入了一张图像的所有像素点。 中间层会有成千上万个网络数据...

1976

扫码关注云+社区