技术开发 频道

基于GPU的部分神经连接神经网络

  3) 数据结构

  考虑 CUDA 架构的特性[7][8],当全局内存访问能够合并时,内存带宽将达到最大,因此我们设计了如图 1 所示的数据结构。CMatrix中的每一列,是一个神经元的连接哈希表,而矩阵的宽度,则取为?单个网络中神经元个数16,不小于神经元个数的 16 的最小倍数, 以满足全局内存合并访问的要求。

  同时,在通常的可进化神经网络模型 Parcone 的数据结构中,为了随机变异连接权重因子时只改变权重因子的一个二进制位,防止突变过大,链接的权重因子通常需要使用一个二进制字符串来保存,不仅浪费空间,而且每次变异后还得重新计算 WeightValue 值,而在本数据结构中,我们充分利用位运算操作,实现了直接利用 WeightValue(float 型数据)进行单二进制位变异。不仅大大节省了空间,而且提高了速度。

  通过对数据结构的创新,相较于 Parcone 节约了 50%的空间,缓解了 GPU 与 CPU 之间缓慢的 PCIE 总线(理论值 4.2G/S,实际值通常不超过 3G/s)带来的传输瓶颈。

  4.实验及分析

  实验从 Color FERET 数据库中随机选择了 530 张人脸图片,进行简单的预处理后,随机选择一部分作为CuParcone 部分连接神经网络模型的输入, 经过遗传算法一定代数的演化后得到目标网络,再将目标作用于测试组图片进行性别识别。 实验对 CuParcone 与 Parcone 在运行时间进行比较, 并考察在不同参数下, CuParcone 模型的识别率。

  4.1.实验平台

  CUDA 计算平台硬件部分由主机端(host 端)和设备端(device 端)组成。其中主机端为普通 PC工作站,主要配置为 Intel Exon E3520 CPU,8G DDR2 RAM,300GHDD;设备端为一片 Tesla C1060 计算卡,其带有 4G DDR3 板载显存,GPU 内部有 240 个流处理器,达到 CUDA 1.3 计算能力。设备端和主机端通过 PCIE-X16 接口连接,理论带宽 4.2G/S。软件部分主要包括 Windows XP sp3, CUDA Toolkit 2.2,CUDA SDK 2.2,OpenCV 1.0 以及必要的系统驱动程序。

  4.2 图片预处理

  我们从Color FERET数据库中随机选择了530张人脸图片(265 张男性,265 张女性) ,这些图片既包含有正面的人脸 (如图 3-A,B,C) , 也有在-40°~40°之间的侧脸 (如图 3-D,E,F) 。随机选取 90 张男性图片,顺序编号 1-90,作为训练样本集正例。90 张女性图片,顺序编号 1-90,作为训练样本集反例。其余的 175 张男性图片以及 175 张女性图片构成测试样本集。首先,我们先从彩色图中剪切出人脸部分,然后采用以下方法分别获得图像 A、B、C

  1)进行锐化去色并压缩成 100 像素×100 像素,得到图像A,D(如图 3-A,D) ;

  2) 进行锐化并压缩成 50 像素×50 像素, 得到图像 B,E (如图 3-B,E) ;

  3) 进行锐化去色并压缩成 50 像素×50 像素, 得到图像 C,F(如图 3-C,F) 。

  在以下实验中,约定:若使用 N 张图片,则 N 张图片为对应集合中编号为 1-N 的图片

  4.3 实验设计与分析

  在我们的模型中,每个神经网络的输出值(Op)是介于-1~1 之间的实数。

  当男性测试样本输入到神经网络中时,若网络的输出Op>0.1,认为网络判断正确;当-0.1为网络无法判断此输入样本;当 Op<-0.1 时,认为网络判断错误。

  当以女性测试样本输入到神经网络时,若网络的输出Op<-0.1,认为网络判断正确;当-0.1为网络无法判断此输入样本;当 Op>0.1 时,认为网络判断错误。

  实验1 CuParcone 与Parcone 性能对比实验

  为了比较CuParcone 与Parcone 性能,以50px×50px图片作为训练样本和测试样本。 训练样本中包含 60 张作为正例的男性图片,60 张作为反例的女性图片;测试样本中则包含测试样本集中全部 175 张男性图片以及 175 张女性图片。在CuParcone 和Parcone 中同时演化40 代,对运行时间及识别率进行比较。

  神经网络结构为三层,如图 1,输入层神经元 I=2500;中间层神经个数 M=767,输出层神经元 O=1,每个神经元连接数 K=100. 演化参数为种群大小 Popsize=64,GPU 同时计算基因数 16。

  实验结果如表 1 所示。从中可以看出 CuParcone 相比Parcone 在速度上有了很大的提升。运行时间由原来的 33小时 48 分 52 秒减少至 376.65 秒,性能超过 2 个数量级,达到323.19 倍,使得 CuParcone 更能适应大数据量,多代数的演化。

  实验 2 CuParcone 在不同图片参数条件下识别率对比试验

  本实验以不同尺寸,不同色度,不同数量的图片作为训练样本,以测试样本集中相同的全部的 175 张男性图片以及 175 张女性图片作为测试样本。网络演化 500 代,重复实验 8 次,平均后得出对应的结果,实验结果见表 2,从中可以看出:

  1. 在使用灰度图的情况下,分辨率从 50×50 提高至 100×100 并不能带来识别率的提升。 而在课题组之前的研究中,当图片尺寸从 30×30 提升至 50×50 时识别率明显上升。这说明了对于性别识别,50×50 的分辨率已经足以让CuParcone 模型区分出相应特征。

  2. 在相同分辨率情况下,使用彩色图片,对于男性,能明显提升识别率,从 83.07%上升至88.97%。而对于女性则略有下降,从 93.71%下降至92.71%,其原因可能是彩色图片中女性首饰颜色样式,头发颜色等较灰度图明显,使得样本聚合度下降。总体上来说,使用彩色图片对平均识别率的提高有帮助。

  3. 在相同图片尺寸下,当训练样本数增加时,识别率上升明显, 尤其是男性识别率, 从75.64%上升到83.07%。这是因为训练样本中信息量的增加使得网络能更好的区分出性别特征

  4. 使用 50×50 彩图,90 训练正例 90 反例时,训练效果优秀,500 代后网络的平均识别率可达到90.84%。

 实验及分析

  5.结论

  本文针对 Parcone 模型运行速度慢的缺点,提出了基于 CUDA 并行计算技术的 CuParcone 模型, 并将其应用到人脸性别检测中。利用 CuParcone 模型进行模式识别,既保留了 Parcone 不需进行特征抽取的优点,又大幅提高了演化训练的速度,克服了 Parcone 训练时间过长,难以适应大数据量演化的缺点。进一步的研究工作将把 CuParcone应用到更广泛的模式识别领域, 此外, 还将通过宏观多 GPU并行,微观 GPU 内部 CUDA多线程并行的多级并行体系,进一步提高CuParcone 模型的性能。

0
相关文章