当前位置:首页 >> 信息与通信 >>

基于卷积神经网络的裸体图片识别


基于卷积神经网络的裸体图片识别
摘要
卷积神经网络是近年来广泛应用于模式识别、 图像处理等领域的一种高效识 别算法,它具有结构简单、训练参数少和适应性强等特点。本文从卷积神经网络 的发展历史开始, 详细阐述了卷积神经网络的网络结构、 神经元模型和训练算法。 在此基础上以卷积神经网络在裸体图片识别和形状识别方面的应用为例, 简单介 绍了卷积神经网络在工程上的应用

,并给出了设计思路和网络结构。 关键字:模型;结构;训练算法;裸体图片识别;形状识别

Abstract
Convolution neural network is an efficient recognition algorithm which is widely used in pattern recognition, image processing and other fields recent years.It has a simple structure, few training parameters and good adaptability and other advantages. In this paper, begin with the history of convolutional neural networks,describes the structure of convolutional neural network,neuron models and training algorithms in detail. On this basis,uses the applications of convolutional neural network in face detection and shape recognition as examples, introduces the applications of convolution neural network in engineering, and gives design ideas and network structure. Keywords : Model; Training Algorithm; Advantage; Face detection; Shape recognition





摘要 .................................................................................................................................................. 1 Abstract ............................................................................................................................................. 2 1 引言............................................................................................................................................. 4 1.1 卷积神经网络的发展历史 ................................................................................................ 4 2 卷积神经网络............................................................................................................................... 5 2.1 网络结构............................................................................................................................ 5 2.2 神经元模型........................................................................................................................ 6 2.3 卷积网络的训练过程 ........................................................................................................ 9 2.4 卷积神经网络的优点 ...................................................................................................... 11 3 卷积神经网络的应用................................................................................................................. 11 3.1 基于卷积网络的形状识别 ............................................................................................... 11 3.2 基于卷积网络的裸体图片识别 ....................................................................................... 13 3.2.1 遮挡灵敏度 ............................................................................................................ 15 3.2.2 去卷积网络模型 .................................................................................................... 16 4 总结........................................................................................................................................... 20 参考文献......................................................................................................................................... 21 附录 ................................................................................................................................................ 23

1

引言

卷积神经网络是人工神经网络的一种已成为当前语音分析和图像识别领域 的研究热点, 它的权值共享网络结构使之更类似于生物神经网络,降低了网络模 型的复杂度, 减少了权值的数量。该优点在网络的输入是多维图像时表现的更为 明显, 使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取 和数据重建过程。 卷积网络是为识别二维形状而特殊设计的一个多层感知器,这 种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。 1.1 卷积神经网络的发展历史 1962 年 Hubel 和 Wiesel 通过对猫视觉皮层细胞的研究,提出了感受野 (receptive field)的概念,1984 年日本学者 Fukushima 基于感受野概念提出的神经 认知机(neocognitron)可以看作是卷积神经网络的第一个实现网络, 也是感受野概 念在人工神经网络领域的首次应用。 神经认知机将一个视觉模式分解成许多子模 式(特征),然后进入分层递阶式相连的特征平面进行处理,它试图将视觉系统模 型化,使其能够在即使物体有位移或轻微变形的时候,也能完成识别。神经认知 机能够利用位移恒定能力从激励模式中学习,并且可识别这些模式的变化形,在 其后的应用研究中,Fukushima 将神经认知机主要用于手写数字的识别。随后, 国内外的研究人员提出多种卷积神经网络形式, 在邮政编码识别和人脸识别方面 得到了大规模的应用。 通常神经认知机包含两类神经元, 即承担特征抽取的 S-元和抗变形的 C-元。 S-元中涉及两个重要参数,即感受野与阈值参数,前者确定输入连接的数目,后 者则控制对特征子模式的反应程度。 许多学者一直致力于提高神经认知机的性能 的研究:在传统的神经认知机中,每个 S-元的感光区中由 C-元带来的视觉模糊 量呈正态分布。如果感光区的边缘所产生的模糊效果要比中央来得大,S-元将会 接受这种非正态模糊所导致的更大的变形容忍性。我们希望得到的是,训练模式 与变形刺激模式在感受野的边缘与其中心所产生的效果之间的差异变 得越来越大。为了有效地形成这种非正态模糊,Fukushima 提出了带双 C-元层的 改进型神经认知机。 Trotin 等人提出了动态构造神经认知机并自动降低闭值的方法[1],初始态的 神经认知机各层的神经元数目设为零, 然后会对于给定的应用找到合适的网络规 模。在构造网络过程中,利用一个反馈信号来预测降低阈值的效果,再基于这种 预测来调节阈值。 他们指出这种自动阈值调节后的识别率与手工设置阈值的识别 率相若,然而,上述反馈信号的具体机制并未给出,并且在他们后来的研究中承 认这种自动阈值调节是很困难的【8】。 Hildebrandt 将神经认知机看作是一种线性相关分类器, 也通过修改阈值以使 神经认知机成为最优的分类器。Lovell 应用 Hildebrandt 的训练方法却没有成功。 对此,Hildebrandt 解释的是,该方法只能应用于输出层,而不能应用于网络的每 一层。事实上,Hildebrandt 没有考虑信息在网络传播中会逐层丢失。 Van Ooyen 和 Niehuis 为提高神经认知机的区别能力引入了一个新的参数。 事实上,该参数作为一种抑制信号,抑制了神经元对重复激励特征的激励。多数 神经网络在权值中记忆训练信息。根据 Hebb 学习规则,某种特征训练的次数越 多, 在以后的识别过程中就越容易被检测。也有学者将进化计算理论与神经认知 机结合【9】,通过减弱对重复性激励特征的训练学习,而使得网络注意那些不同

的特征以助于提高区分能力。 上述都是神经认知机的发展过程,而卷积神经网络 可看作是神经认知机的推广形式,神经认知机是卷积神经网络的一种特例。 卷积神经网络本身可采用不同的神经元和学习规则的组合形式。 其中一种方 法是采用 M-P 神经元和 BP 学习规则的组合,常用于邮政编码识别中。还有一种 是先归一化卷积神经网络, 然后神经元计算出用输入信号将权值和归一化处理后 的值,再单独训练每个隐层得到权值,最后获胜的神经元输出活性,这个方法在 处理二值数字图像时比较可行, 但没有在大数据库中得到验证。第三种方法综合 前两种方法的优势,即采用 McCulloch-Pitts 神经元代替复杂的基于神经认知机 的神经元。在该方法中,网络的隐层和神经认知机一样,是一层一 层训练的, 但是回避了耗时的误差反向传播算法。这种神经网络被称为改进的神 经认知机。 随后神经认知机和改进的神经认知机作为卷积神经网络的例子,广泛 用于各种识别任务中, 比如大数据库的人脸识别和数字识别。下面详细介绍卷积 神经网络的原理、网络结构及训练算法。

2 卷积神经网络
2.1 网络结构 卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平 面由多个独立神经元组成。网络中包含一些简单元和复杂元,分别记为 S-元和 C-元。S-元聚合在一起组成 S-面,S-面聚合在一起组成 S-层,用 Us 表示。C-元、 C-面和 C-层(Us)之间存在类似的关系。网络的任一中间级由 S-层与 C-层串接而 成,而输入级只含一层,它直接接受二维视觉模式,样本特征提取步骤已嵌入到 卷积神经网络模型的互联结构中。一般地,Us 为特征提取层,每个神经元的输 入与前一层的局部感受野相连, 并提取该局部的特征, 一旦该局部特征被提取后, 它与其他特征间的位置关系也随之确定下来;Uc 是特征映射层,网络的每个计 算层由多个特征映射组成, 每个特征映射为一个平面,平面上所有神经元的权值 相等。 特征映射结构采用影响函数核小的 sigmoid 函数作为卷积网络的激活函数, 使得特征映射具有位移不变性。此外,由于一个映射面上的神经元共享权值,因 而减少了网络自由参数的个数, 降低了网络参数选择的复杂度。卷积神经网络中 的每一个特征提取层 (S-层 )都紧跟着一个用来求局部平均与二次提取的计算层 (C-层),这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变 容忍能力【10】。 网络中神经元的输出连接值符合“最大值检出假说”【15】,即在某一小区 域内存在的一个神经元集合中, 只有输出最大的神经元才强化输出连接值。所以 若神经元近旁存在有输出比其更强的神经元时,其输出连接值将不被强化。根据 上述假说,就限定了只有一个神经元会发生强化。卷积神经网络的种元就是某 S-面上最大输出的 S-元, 它不仅可以使其自身强化, 而且还控制了邻近元的强化 结果。因而,所有的 S-元渐渐提取了几乎所有位置上相同的特征。在卷积神经 网络早期研究中占主导的无监督学习中, 训练一种模式时需花费相当长的时间去 自动搜索一层上所有元中具有最大输出的种元,而现在的有监督学习方式中,训 练模式同它们的种元皆由教师设定。 图 1 是文献[12]中卷积神经网络的典型结构图。将原始图像直接输入到输入 层(Uc1),原始图像的大小决定了输入向量的尺寸,神经元提取图像的局部特征, 因此每个神经元都与前一层的局部感受野相连。文中使用了 4 层网络结构,隐层

由 S-层和 C-层组成。每层均包含多个平面,输入层直接映射到 Us2 层包含的多 个平面上。 每层中各平面的神经元提取图像中特定区域的局部特征, 如边缘特征, 方向特征等,在训练时不断修正 S-层神经元的权值。同一平面上的神经元权值 相同,这样可以有相同程度的位移、旋转不变性。S-层中每个神经元局部输入窗 口的大小均为 5x5,由于同一个平面上的神经元共享一个权值向量,所以从一个 平面到下一个平面的映射可以看作是作卷积运算,S-层可看作是模糊滤波器,起 到二次特征提取的作用。 隐层与隐层之间空间分辨率递减,而每层所含的平面数 递增,这样可用于检测更多的特征信息。

图 2.1

卷积神经网络结构图

2.2 神经元模型 在卷积神经网络中,只有 S-元间的输入连接是可变的,而其他元的输入连 接是固定的。用 Usl(kl,n)表示第 l 级,第 kl 个 S-面上,一个 S-元的输出, 用 Ucl(kl,n)表示在该级第 kl 个 C-面上一个 C-元的输出。其中,n 是一个二维坐 标,代表输入层中神经元的感受野所在位置,在第一级,感受野的面积较小,随 后随着 l 的增大而增加。

? Kl ?1 ? ? ? ? ? 1 ? a v , k , k u k , n ? v ?? l l ?1 cl ?1 l ?1 ? ? kl ?1 v?Al ? usl ?k , n ? ? rl ?k ?? ? 1? rl ?k ? ? ? ? ? ? ? 1 ? b k u n 1 vl ? ? rl ?k ? ? 1 ? ?

(2.1)

式(2.1)中 al(v,kl-1,k)和 bl(k)分别表示兴奋性输入和抑制性输入的连 接系数;rl(k)控制特征提取的选择性,其值越大,对噪音和特征畸变的容错性 越差,它是一常量,它控制着位于每一 S-层处的单个抑制子平面中每个神经元 的输入: rl(k)的值越大,与抑制性成比例的兴奋性就得越大,以便能产生一个 非零输出,换句话说就是相当好的匹配才一能激活神经元,然而因为 rl(k)还需 乘以φ (),所以 rl 值越大就能产生越大的输出,相反,小的 rl(k)值允许不太匹 配的神经元兴奋,但它只能产生一个比较小的输出;φ (x)为非线性函数。v 是 一个矢量,表示处于 n 感受野中的前层神经元 n 的相对位置,Al 确定 S 神经元要 提取特征的大小, 代表 n 的感受野。所以式中对 v 的求和也就包含了指定区域当 中所有的神经元;外面对于勺 kl-1 的求和,也就包含了前一级的所有子平面,因 此在分子中的求和项有时也被称作兴奋项,实际上为乘积的和,输入到 n 的神经 元的输出都乘上它们相应的权值然后再输出到 nc。

? x, x ? 0 ? ?x ? ? ? ?0, x ? 0

(2.2)

式(2.2)表示的是指定某级(第 l 级)、某层(S-层)、某面(第 kl 个 S-面)、某 元(向量为 n 处)的一个输出。对于一个 S-元的作用函数可分为两部分,即兴奋 性作用函数和抑制性作用函数。 兴奋性作用使得膜电位上升,而抑制性作用起分 流作用。 兴奋性作用为: Kl ?1

?? a ?v, k
kl ?1 v?Al l

l ?1

, k ?ucl?1 ?kl ?1 , n ? v ?

(2.3)

S-元与其前一级 C-层的所有 C-面均有连接,所连接的 C-元个数由该 S-级的 参数感受野 Al 唯一确定。 网络中另一个重要的神经元是假设存在的抑制性神经元 V-元 Uvl (n),它位 于 S-面上满足以下三个条件:环元的抑制作用影响整个网络的运作;C-元与 V元间存在着固定的连接;V-元的输出事先设为多个 C-元输出的平均值。可以用 它来表示网络的抑制性作用,发送一个抑制信号给 Usl(kl,n)神经元,从与 Usl (kl,n)类似的元接收它的输入连接值,并输出:

? Kl ?1 ? 2 ? ? ? ? ? u vl ?n ? ? ? c v u k , n ? v ? l cl ?1 l ?1 ?? ? ? kl ?1 v?Al ?

1

2

(2.4)

权 cl(v)是位于 V—元感受野中的 v 处的神经元相连的权值,不需要训练这些

值,但它们应随着│v│的增加而单调减小。因此,选择式 2.5 的归一化权值。

cl ?

'

cl Cr

(2.5)

式 2.5 中的归一化常量 C 由式 2.6 给出,其中:r(v)是从 v 处到感受野中心的 归一化距离:

C (l ) ? ? ? al
Kl ?1 v?A j

Kl ?1

r (v)

(2.6)

C 神经元的输出由式 2.7 给出:
Kt ? ? 1 ? j ( k , k ) d ( v ) u ( k , n ? v ) ? ? l l l ?1 l st l ? ? K l ?1 ?1 v?Dt ? u d ( k l , n) ? ? ? 1? ? ? 1 ? Vsl (n) ? ? ? ?

(2.7)

上式中ψ (x)为:

? x ,x ? 0 ? ? ( x) ? ? ? ? x ?0, x ? 0 ?

(2.8)

式中β 为一常量。 kl 是第 l 级中的 S 子平面的数量。Dl 是 C—元的感受野。因此,它和特征的大小 相对应。dl(v)是固定兴奋连接权的权值,它是│v│的单调递减函数。如果第 kl 个 S 神经元子平面从第 kl-1 子平面处收到信号, 那么 jl(kl,kl-1)的值为, 1 否则为 0。 最后,S_层的 Vs 神经元的输出为

1 Vst ? Kl

Kl ?1 ?1 v?Vt

? ? dl(v)u

Kl ?1

sl

( k j , n ? v)

(2.9)

图 2.2 为卷积神经网络中不同神经元之间的连接关系图,从图中可以很清楚地看 出各种不同神经元之间的连接关系。

图 2.2

卷积神经网络中不同神经元间的连接

2.3 卷积网络的训练过程 神经网络用于模式识别的主流是有指导学习网络,无指导学习网络更多的是 用于聚类分析。对于有指导的模式识别,由于任一样本的类别是已知的,样本在 空间的分布不再是依据其自然分布倾向来划分, 而是要根据同类样本在空间的分 布及不同类样本之间的分离程度找一种适当的空间划分方法, 或者找到一个分类 边界, 使得不同类样本分别位于不同的区域内。这就需要一个长时间且复杂的学 习过程, 不断调整用以划分样本空间的分类边界的位置,使尽可能少的样本被划 分到非同类区域中。 由于本文主要是检测图像中的人脸,所以可将样本空间分成 两类: 样本空间和非样本空间, 因而本文所使用的学习网络也是有指导的学习网 络。 卷积网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出 之间的映射关系, 而不需要任何输入和输出之间的精确的数学表达式,只要用已 知的模式对卷积网络加以训练, 网络就具有输入输出对之间的映射能力。卷积网 络执行的是有导师训练,所以其样本集是由形如:(输入向量,理想输出向量) 的向量对构成的。 所有这些向量对,都应该是来源于网络即将模拟的系统的实际 “运行”结果。它们可以是从实际运行系统中采集来的。在开始训练前,所有的 权都应该用一些不同的小随机数进行初始化。 “小随机数”用来保证网络不会因 权值过大而进入饱和状态,从而导致训练失败;“不同”用来保证网络可以正常 地学习。实际上,如果用相同的数去初始化权矩阵,则网络无能力学习。 训练算法主要包括 4 步,这 4 步被分为两个阶段: 第一阶段,向前传播阶段: ①从样本集中取一个样本(X,Yp),将 X 输入网络; ②计算相应的实际输出 Op。 在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网 络 在完成训练后正常运行时执行的过程。在此过程中,网络执行的是由式(2.7) 计算: Op=Fn(?(F2(F1(XpW(1))W(2))?)W(n)) 第二阶段,向后传播阶段 ①计算实际输出 Op 与相应的理想输出 Yp 的差; ②按极小化误差的方法调整权矩阵。 这两个阶段的工作一般应受到精度要求的控制,在这里,用式(2.8)计算 Ep。 作为网络关于第 p 个样本的误差测度。 而将网络关于整个样本集的误差测度 定义为: E=∑Ep。

Ep ?

1 m ? ( y pj ? o pj ) 2 j ?1

2

(2.8)

如前所述, 之所以将此阶段称为向后传播阶段,是对应于输入信号的正常传 播而言的。因为在开始调整神经元的连接权时,只能求出输出层的误差,而其他 层的误差要通过此误差反向逐层后推才能得到。有时候也称之为误差传播阶段。 为了更清楚地说明本文所使用的卷积神经网络的训练过程,首先假设输入层、中 间层和输出层的单元数分别是 N、L 和 M。X=(x0,x1,?,xN)是加到网络的输入矢 量, H=(h0,h1,?,hL)是中间层输出矢量, Y=(y0,y1,?,yM)是网络的实际输出矢量,

并且用 D=(d0,d1,?,dM)来表示训练组中各模式的目标输出矢量输出单元 i 到隐 单元 j 的权值是 Vij,而隐单元 j 到输出单元 k 的权值是 Wjk。另外用θ k 和φ j 来 分别表示输出单元和隐含单元的阈值。 于是,中间层各单元的输出为式(2.9):
h j ? f (?Vij xi ? ? j )
i ?0 N ?1

(2.9)

而输出层各单元的输出是式(2.10):

y k ? f ?Wu h j ? ? k
j ?0

L ?1

(2.10)

其中 f(*)是激励函数采用 S 型函数式(2.11):

f ( x) ?

1 1? e
? kx

(2.11)

在上述条件下,网络的训练过程如下: 1)选定训练组。从样本集中分别随机地选取 300 个样本作为训练组。 2)将各权值 Vij,Wjk 和阈值φ j,θ k 置成小的接近于 0 的随机值,并初始 化 精度控制参数ε 和学习率α 。 3)从训练组中取一个输入模式 X 加到网络,并给定它的目标输出矢量 D。 4)利用式(2.9)计算出一个中间层输出矢量 H,再用式(2.10)计算出网络 的实际输出矢 Y。 5)将输出矢量中的元素 yk 与目标矢量中的元素 dk 进行比较,计算出 M 个 输出误差项式(2.12):

? k ? (d k ? yk ) yk (1 ? yk )
对中间层的隐单元也计算出 L 个误差项式(2.13):
M ?1 k ?0

(2.12)

? j ? h j (1 ? h j ) ? ? kW jk
6)依次计算出各权值的调整量式(2.14)和式(2.15):

(2.13)

?W jk (n) ? (? /(1 ? L)) * (?W jk (n ? 1) ? 1) *? k * h j
?Vij (n) ? (? /(1 ? N )) * (?Vij (n ? 1) ? 1) * ? k * h j

(2.14) (2.15)

和阈值的调整量式(2.16)和(2.17):

?? k (n) ? (? /(1 ? L)) * (?? k (n ? 1) ? 1) * ? k
?? j (n) ? (? /(1 ? L)) * (?? j (n ? 1) ? 1) *? j
(2.17)

(2.16)

7)调整权值式(2.18)和式(2.19):

W jk (n ? 1) ? W jk (n) ? ?W jk (n)

(2.18)

Vij (n ? 1) ? Vij (n) ? ?Vij (n)
调整阈值式(2.20)和(2.21):

(2.19)

? k (n ? 1) ? ? k (n) ? ?? k (n)

(2.20) (2.21)

? j (n ? 1) ? ? j (n) ? ?? j (n)

8)当 k 每经历 1 至 M 后,判断指标是否满足精度要求:E≤ε ,其中 E 是 总误差函数,且 E ?
1 M ?1 (d k ? y k ) 2 。如果不满足,就返回(3),继续迭代。如 ? 2 k ?0

果满足就进入下一步。 9)训练结束,将权值和阈值保存在文件中。这时可以认为各个权值已经达稳 定,分类器形成。再一次进行训练时,直接从文件导出权值和阈值进行训练,不 需要进行初始化。 2.4 卷积神经网络的优点 卷积神经网络 CNN 主要用来识别位移、缩放及其他形式扭曲不变性的二维图 形。由于 CNN 的特征检测层通过训练数据进行学习,所以在使用 CNN 时,避免了 显示的特征抽取, 而隐式地从训练数据中进行学习;再者由于同一特征映射面上 的神经元权值相同, 所以网络可以并行学习,这也是卷积网络相对于神经元彼此 相连网络的一大优势。 卷积神经网络以其局部权值共享的特殊结构在语音识别和 图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共 享降低了网络的复杂性, 特别是多维输入向量的图像可以直接输入网络这一特点 避免了特征提取和分类过程中数据重建的复杂度。 流的分类方式几乎都是基于统计特征的, 这就意味着在进行分辨前必须提取 某些特征。然而,显式的特征提取并不容易,在一些应用问题中也并非总是可靠 的。卷积神经网络,它避免了显式的特征取样,隐式地从训练数据中进行学习。 这使得卷积神经网络明显有别于其他基于神经网络的分类器, 通过结构重组和减 少权值将特征提取功能融合进多层感知器。它可以直接处理灰度图片,能够直接 用于处理基于图像的分类。 卷积网络较一般神经网络在图像处理方面有如下优点: a) 输入图像和网络 的拓扑结构能很好的吻合;b) 特征提取和模式分类同时进行,并同时在训练中 产生;c)权重共享可以减少网络的训练参数,使神经网络结构变得更简单, 适 应性更强。

3 卷积神经网络的应用
3.1 基于卷积网络的形状识别 物体的形状是人的视觉系统分析和识别物体的基础,几何形状是物体的本质 特征的表现,并具有平移、缩放和旋转不变等特点,所以在模式识别领域,对于 形状的分析和识别具有十分重要的意义, 而二维图像作为三维图像的特例以及组 成部分, 因此二维图像的识别是三维图像识别的基础。物体形状的识别方法可以 归纳为如下两类,其中,第一类是基于物体边界形状的识别,这种边界的特征主

要有周长、角、弯曲度、宽度、高度、直径等,第二类是基于物体所覆盖区域的 形状识别,这种区域的特征主要有面积、圆度、矩特征等,上述两类方法都适用 于物体形状的结构或区域的识别。 卷积神经网络也是一种基于物体边界形状的识 别,它既可以识别封闭形状同时对不封闭形状也有较高的识别率。

图 3.1 试验用卷积神经网络的结构图

图 3.1 是所用的网络结构,U0 是输入层,Uc4 是识别层。Us 为特征提取层, Us1 的输入是光感受器的像素位图,该层只是提取一些相对简单的像素特征,随 后几层的 S-元提取一些更为复杂的像素特征,随着层数的增加,提取的特征也 相应递增;Uc 是特征映射层,提取高阶特征,提取这些高阶特征时不需要提取 像简单特征那样的精确位置信息。 网络中 S-元的闭值是预先设定值,训练时权值的更新基于 Fukushima 提出 的增强型学习规则,如式(2.10)所示,网络的训练方式采用的是无监督学习方式。 图 3.2 与图 3.3 是部分实验样本图

图 3.2 部分训练样本图

图 3.3 部分测试样本图

样本分为三角形,四边形,八边形,圆形四类,每类 10 个共 80 个样本,实 验训练时采用 40 个样本,测试时采用剩余的 40 个样本,最终的识别结果如表 2 所示。

表 1 训练后网络参数 级数 第一级 第二级 第三级 第四级 S-层包含的 S-面数 16 19 15 7 表 2 识别结果 待识别形状 三角形 四边形 八边形 圆形 识别结果 10 个全对 10 个全对 10 个全对 对 9 个,另一个错识成四边形 S-元数 32 290 272 89

识别错误样本如图 3.4 所示:

图 3.4 测试出错样本

识别错误的原因是由于训练所用样本模式较少,不能覆盖所有的圆形模式, 以至于该测试模式输入网络时, 与之相近的四边形模式获胜,最终得到错误的输 出结果。 这里采用卷积神经网络进行形状识别目的主要是为了验证卷积神经网络 的模式识别能力,所以虽然采用的样本图片较少,但已经能够说明卷积网。络在 形状识别时有较高的识别率和抗畸变性,而识别前的车牌字符由于前期处理(定 位、分割)能力的局限性,具有一定的噪声和变形,因此可以将卷积神经网络应 用于车牌识别系统。 3.2 基于卷积网络的裸体图片识别 过去二十年里, 裸体图片的自动检测一直是计算机视觉领域的焦点问题,由 于其丰富的研究历史和明确的目标,该问题是了解整个领域发展变化的极好例 子。在本文中,我将用裸体检测问题来展示训练现代版的卷积神经网络模型 。 早在 1996 年:此领域的一项开创性工作是 Fleck 等人完成的一个项目,戏 称为“寻找裸体人”。论文在 90 年代中期发表,它反映了计算机视觉研究者们 在使用卷积神经网络之前所做的典型工作。 在论文中, 他们采用的算法是: 首先, 筛选出含有大量肤色区域的图片;其次,在这些区域内寻找长条状区域,按照人 体结构的信息用专用组合器把它们组合成可能的肢体部位, 并且连接这些肢体部 位。 皮肤检测是通过对色彩空间过滤来实现, 组合皮肤区域是通过对人体建模来 实现,它将人体建模成“由相邻圆柱体组合而成的物体,每个独立部分的几何形 状和各个部分之间的比例都符合人体骨架”。为了更好地理解实现这类算法的工 程技术,我们来看图 3.5,作者展示了一部分他们人为构造的组合规则:

图 3.5

图 3.5 左图:组合规则(箭头)说明了如何合并简单的组合(如躯干)形成 复杂的组合(如四肢和身体的连接)。这些规则受限于它们在 2 维空间的相对位 置, 这是由于它们在 3 维空间有特定的组合分布。虚线表示了还未实现的组合规 则。中图:组合器拒绝将大腿和脊椎(虚线表示的是盆骨)组合在一起,因为如 果人在这种姿势下大腿会遮盖躯干,使得躯干不容易被检测到。右图:这个臀部 连接也被拒绝了。髋骨连接的限制阻止了人的大腿如此摆放。 论文中提到“在 138 张无限制裸体照片的测试集上,准确率达到了 60%,召 回率达到 52%”。他们还给出了一些真阳性和假阳性的图片例子,并标明算法检 测到的相关特征:

图 3.6

图 3.6 成功检测出裸体人物的典型图片。皮肤过滤器的输出结果如图所示, 脊椎用红线表示,肢体连接用蓝线表示,肢体与躯干连接用绿线表示。

图 3.7

图 3.7 错误地识别出裸体人物的典型对照图片。这些图片含有与皮肤色彩接 近的材料(动物皮肤、木材、面包、褪色的墙面)和容易误判为脊椎或者腰带的 结构。组合器经常将平行线组合搞混。 人工构造特征的一个主要问题是特征的复杂性受到了研究院的耐心和想象 力的限制。 在下一节里, 我们将会看到如何训练卷积神经网络来完成同样的任务, 更精细地表征相同的数据集。 到了 2014 年之后:深度学习研究员不再发明各种规则来表征输入的数据, 而是设计网络模型结构和数据集, 使得人工智能系统能从数据中直接学到表征的 方法。 然而, 由于深度学习研究员并没有明确指定网络模型该如何处理给定的数 据集,新的问题就产生了:我们如何理解卷积神经网络的行为? 理解卷积神经网络模型的操作就需要解释各层网络的特征行为。 我们将在本 文中介绍一个 NSFW 模型的早期版本,从模型顶层反推到原始输入的像素空间。 这样能使我们明白原始输入的什么模式能够导致特征空间的某种特定激活 (即为 何一张图片被标记为“NSFW”)。 3.2.1 遮挡灵敏度 图 3.8 是我们在经过裁剪的 Lena Soderberg 图像上使用 NSFW 模型,用 64 ×64 的平滑窗口,3 像素移窗处理而成。

图 3.8

我们把每个窗口覆盖的像素点传入卷积模型,计算每个像素点的平均 “NSFW”得分,得到左侧的热度图。当卷积模型发现某一块裁剪的区域都属于 皮肤,它就预测为“NSFW”,在图片中 Lena 身上相应的位置显示出一大片红 色区域。生成右侧的热度图时,我们故意遮挡一部分原始图片,输出 1 减去平均 “NSFW”得分之后的差值(即“SFW”得分)。当 NSFW 得分最高的区域被 遮挡时,“SFW”得分随之上升,我们在热度图中看到了颜色更红的区域。图 3.9 的两个图片例子分别表示在上述两种实验中传入卷积模型的两类图片示例:

图 3.9

这些遮挡实验的一个优点就是当分类器完全是一个黑盒的情况下照样能够 进行实验。调用接口复现上述结果的代码片段见附件。 尽管这类实验以非常直接的方式呈现了分类器的输出结果, 但缺点是输出的 结果很模糊。 这使得我们不能完全深入了解模型的工作状态以及发现训练过程中 的错误。 3.2.2 去卷积网络模型 当我们用指定数据集训练得到一个模型后, 往往希望给出一张图片和某个类 别, 然后想从模型中得到诸如 “我们该如何改变这张图片使其看起来更像是属于 那个类别的” 之类的答案。 针对这类问题, 我们使用去卷积网络模型 (deconvnet) , Zeiler 和 Fergus014 年论文的第二节:

图 3.10 展示的是我们用去卷积模型对 Lena 照片的处理结果,显示了我们该 如何修饰 Lena 图片使其更像一张色情图片(作者注:这类使用的去卷积模型需 要传入一张正方形的图片 —— 我们将 Lena 的完整图片填补成合适的尺寸):

图 3.10

Barbara 是 Lena 的 G 级(无限制级)版本。根据我们的去卷积模型,我们 给她加上红唇后看起来更像 PG 级(可能不适宜儿童)图片。

图 3.11

这张图片是 Ursula Andress 在电影《007 之诺博士》中饰演 Honey Rider 的 剧照,2003 年被英国调查评选为“银幕上 100 个性感瞬间”的第一位:

图 3.12

上述实验的一个显著特点就是卷积模型学习到了红唇和肚脐是“NSFW”得 分的指标。这似乎意味着我们“SFW”训练数据集中所包含的红唇和肚脐图片还 不够。如果我们只是用准确率/召回率和 ROC 曲线(如下所示 – 测试集大小为 428,271)来评价我们的模型,我们永远也无法发现这个问题,因为我们的测试 数据集有着同样的缺陷。 这里就是训练基于规则的分类器与现代人工智能研究的

本质差别之一。 相对于重新人工构造特征,我们重新设计训练数据集直到挖掘出 更优质的特征。

最后, 我们机智地在确定是色情图片的数据集上运行去卷积模型,确保模型 学到的特征真的和明显的 nsfw 所对应:

图 3.13

这里, 我们能清楚地看到卷积模型正确地学到了男女生殖器等器官 —— 我 们模型应该标识的部位。 而且, 模型发现的特征远比研究员人工构造的特征更细 化和复杂,有助于我们理解使用卷积模型识别 NSFW 图片的主要提升点。

4 总结
本文首先阐述了卷积神经网络的原理。卷积神经网络是在神经认知机的基础 上为了处理模式识别问题而提出的网络。此网络是多层的分级神经网络,每层的 神经元都是相同类型的,或简单,或复杂,或是超复杂的神经元,在每层之间都 有非常稀少并且固定模式的连接。 介绍了基本的卷积神经网络结构及其神经元模 型,接着讨论了卷积神经网络的训练过程,当需要的特征已预先确定,那么就采 用有监督算法,网络一层一层地学习,反之则进行无监督学习。最后简要的介绍 了卷积神经网络在形状识别和裸体图片识别中的应用。 目前,卷积神经网络已经被应用于二维图像处理、模式识别、机器视觉、形 状识别、智能交通等领域,并且能够很好的解决各个领域中的问题。

参考文献
[1] 王天翼. 基于卷积网络的三位特征提取 [学位论文].吉林:吉林大学,2006. [2] 李葆青. 基于卷积神经网络的模式分类器 [J].大连大学学报,2003,24(2):19-23. [3] Simon Haykin 著,叶世伟,史忠植译.神经网络原理 [M]. 北京:机械工业出版社,2004. [4] 肖柏旭.基于卷积网络的人脸检测的研究与实现[学位论文].北京:华北电力大学, 2009. [5] 陆璐. 卷积神经网络的研究及其在车牌识别系统中的应用 [学位论文].合肥:合肥工业大 学,2006. [6] 顾佳玲 , 彭宏京 . 增长式卷积神经网络及其在人脸检测中的应用 [J]. 系统仿真学报 , 2009,21(8):2441-2445. [7] 赵志宏,杨绍普,马增强.基于卷积神经网络 LeNet-5 的车牌字符识别研究 [J].系统仿真学 报,2010,22(3):638-641. [8] T .H .Hildebrandt, Optimal Training of Thresholded Linear Correlation Classifiers, IEEE Transactions on Neural Networks Z(6),PP.577 一 588,Nov.(1991). [9] K. Fukushima,“Neocognitron:A self-organizing neural-network model for a Mechanism of Pattern recognition unaffected by shift in position,Biol. Cybern.,vol.36,pp.193 一 202,1980. [10] C.Neubauer,Shape, position and size invariant visual pattern recognition based on principles of neocognitron and perception in Artificial Neural Networks,1.AlexanderandJ.Taylor,Eds. Amsterdam the Netherlands: North 一 Holland,vol.2,1992,PP.833 一 837. [11] D. Lovell , et al. , Comments on“Optimal Training of Thresholded Linear Correlation Classifiers”,IEEE Trans .On Neural Networks 4(2),PP.367 一 369,March(1993). [12] K. Fukushima, “Analysis of the process of visual pattern recognition by the neocognitron, ” Neural Networks,vol.2,pp.413-421,1989 [13] Van Ooyen and B. Nienhuis,Pattern Recognition in the Neocognitron Is Improved 一 by Neuronal Adaption,Biological Cyberneties70,pp.47-53(1993). [14] 石大明,刘海涛,舒文豪.结合进化计算的神经认知机.计算机学报[J」,2001,24(5):468 一 473 [15] Claus Neubauer. Evaluation of’ Convolutional Neural Networks for VisualRecognition, Neural Netwoks,vol.9,no.4,pp.685-696(1998) [16] K.Fukushima and M.Tanigawa,“Use of different thresholds in learning and recognition,”NeuroeomPuting,vol.11,pp.1-17,1996. [17] G. W. Cottrell, “EMPATH: Face, emotion, and gender recognition using holons, ”in Advances in Neural Information Processing Sys [18] H. Bourlard and Y. Kamp,“Autoassoziation by multilayerperceptrons and singular value decomposition,”Biol. Cybern.,vol.59,pp.291-294,1988. [19]洪家荣,李星原. Neocognitron 学习算法分析. 软件学报 [J],1994,5,(4):35-39 [20]Fukushima K. A hierarchical neural network capable of visual pattern recognition . Neural Networks,1989:2:413-420 [21] Y.Bengio.YLeCun, and D.Henderson, “Globally Trained Handwritten Word Recognizer using Spatial Representation, Convolutional Neural Networks and Hidden Markov Models in Advances in Neural Information Processing Systems, Jack D.Cowan, Gerald Tesauro, and Joshua AlsPector, Eds.1994,vol.6,PP.937 一 944,Morgan Kaufmann Publishers,Inc. [22] 张 佳 康 , 陈 庆 奎 . 基 于 CUDA 技 术 的 卷 积 网 络 识 别 算 法 . 计 算 机 工 程 [J],2010,36(51):179-181.

[23] 肖 柏 旭 , 张 丽 静 . 基 于 分 流 抑 制 机 制 的 卷 积 神 经 网 络 人 脸 检 测 法 . 计 算 机 应 用 [J],2006,26:46-48. [24]苏松志.复杂背景下的行人检测技术研究[学位论文].厦门:厦门大学,2008.

附录
# NSFW occlusion experiment from StringIO import StringIO import matplotlib.pyplot as plt import numpy as np from PIL import Image, ImageDraw import requests import scipy.sparse as sp from clarifai.client import ClarifaiApi CLARIFAI_APP_ID = '...' CLARIFAI_APP_SECRET = '...' clarifai = ClarifaiApi(app_id=CLARIFAI_APP_ID, app_secret=CLARIFAI_APP_SECRET, base_url='https://api.clarifai.com') def batch_request(imgs, bboxes): """use the API to tag a batch of occulded images""" assert len(bboxes) < 128 #convert to image bytes stringios = [] for img in imgs: stringio = StringIO() img.save(stringio, format='JPEG') stringios.append(stringio) #call api and parse response output = [] response = clarifai.tag_images(stringios, model='nsfw-v1.0') for result,bbox in zip(response['results'], bboxes): nsfw_idx = result['result']['tag']['classes'].index("sfw") nsfw_score = result['result']['tag']['probs'][nsfw_idx] output.append((nsfw_score, bbox)) return output def build_bboxes(img, boxsize=72, stride=25): """Generate all the bboxes used in the experiment""" width = boxsize height = boxsize bboxes = [] for top in range(0, img.size[1], stride):

for left in range(0, img.size[0], stride): bboxes.append((left, top, left+width, top+height)) return bboxes def draw_occulsions(img, bboxes): """Overlay bboxes on the test image""" images = [] for bbox in bboxes: img2 = img.copy() draw = ImageDraw.Draw(img2) draw.rectangle(bbox, fill=True) images.append(img2) return images def alpha_composite(img, heatmap): """Blend a PIL image and a numpy array corresponding to a heatmap in a nice way""" if img.mode == 'RBG': img.putalpha(100) cmap = plt.get_cmap('jet') rgba_img = cmap(heatmap) rgba_img[:,:,:][:] = 0.7 #alpha overlay rgba_img = Image.fromarray(np.uint8(cmap(heatmap)*255)) return Image.blend(img, rgba_img, 0.8) def get_nsfw_occlude_mask(img, boxsize=64, stride=25): """generate bboxes and occluded images, call the API, blend the results together""" bboxes = build_bboxes(img, boxsize=boxsize, stride=stride) print 'api calls needed:{}'.format(len(bboxes)) scored_bboxes = [] batch_size = 125 for i in range(0, len(bboxes), batch_size): bbox_batch = bboxes[i:i + batch_size] occluded_images = draw_occulsions(img, bbox_batch) results = batch_request(occluded_images, bbox_batch) scored_bboxes.extend(results) heatmap = np.zeros(img.size) sparse_masks = [] for idx, (nsfw_score, bbox) in enumerate(scored_bboxes): mask = np.zeros(img.size) mask[bbox[0]:bbox[2], bbox[1]:bbox[3]] = nsfw_score Asp = sp.csr_matrix(mask) sparse_masks.append(Asp) heatmap = heatmap + (mask - heatmap)/(idx+1) return alpha_composite(img, 80*np.transpose(heatmap)), np.stack(sparse_masks)

#Download full Lena image r = requests.get('https://clarifai-img.s3.amazonaws.com/blog/len_full.jpeg') stringio = StringIO(r.content) img = Image.open(stringio, 'r') img.putalpha(1000) #set boxsize and stride (warning! a low stride will lead to thousands of API calls) boxsize= 64 stride= 48 blended, masks = get_nsfw_occlude_mask(img, boxsize=boxsize, stride=stride) #viz blended.show()


相关文章:
基于卷积神经网络的裸体图片识别
本文从卷积神经网络 的发展历史开始, 详细阐述了卷积神经网络的网络结构、 神经元模型和训练算法。 在此基础上以卷积神经网络在裸体图片识别和形状识别方面的应用为...
基于深度卷积神经网络的乳腺细胞图像分类研究
基于深度卷积神经网络的乳腺细胞图像分类研究_职业规划_求职/职场_实用文档。基于...6 结论 基于深度学习的特征提取方法在目标识别图像分类等领域都远远超过了传统...
卷积神经网络 论文版
卷积神经网络 论文版_数学_自然科学_专业资料。卷积神经网络摘要:卷积神经网络是近年来广泛应用于模式识别图像处理等领域的一种高效识别算法,它具有结构简 单、...
基于3D卷积神经网络的人体行为理解
另外,对于怎么去训练也没有具体的介绍,不知道和普通的用于二维 图像的卷积神经网络有什么差别。另外,下面的总结是翻译加自己的理解组成的,学识 有限,如有错误,还...
一文读懂卷积神经网络
卷积神经网络以其局部权值共享的特殊结构在语音识别图像处理方面有着 独特的优越性, 其布局更接近于实际的生物神经网络, 权值共享降低了网络的 复 杂性, 特别是...
卷积神经网络在字符识别方面的应用
9.5、Convolutional Neural Networks 卷积神经网络 卷积神经网络是人工神经网络的一种, 已成为当前语音分析和图像 识别领域的研究热点。 它的权值共享网络结构使之更...
卷积神经网络全面解析(2)
卷积神经网络全面解析(2) 一、介绍 这个文档讨论的是 CNNs 的推导和实现。CNN...一个比较好和快速的方法是用一个全一的卷积 核来卷积图像,然后简单的通过标准...
卷积神经网络
二、 卷积神经网络卷积神经网络是人工神经网络的一种, 已成为当前语音分析和图像识别领域的研究热点。 它的权值共享网络结构使之更类似于生物神经网络, 降低了网络...
卷积神经网络全面解析之代码详解
二、CNN 卷积神经网络代码详细解读(基于 python+theano) 代码来自于深度学习教程...张图,第一个 LeNetConvPoolLayer 层有 nkerns[0]个卷积核, #故 layer0 ...
更多相关标签:
卷积神经网络图像识别 | 卷积神经网络人脸识别 | 卷积神经网络 识别 | 卷积神经网络语音识别 | 卷积神经网络识别图片 | 卷积神经网络 | cnn 卷积神经网络 | 卷积神经网络 公开课 |