【Demo】基于TensorFlow和CNN卷积神经网络实现人脸性别检测
本文主要是实现了根据人脸识别性别的卷积神经网络,并对卷积过程中的提取特征进行了可视化. 卷积神经网络 卷积神经网络最早是为了解决图像识别的问题,现在也用在时间序列数据和文本数据处理当中,卷积神经网络对于数据特征的提取不用额外进行,在对网络的训练的过程当中,网络会自动提取主要的特征. 卷积神经网络直接用原始图像的全部像素作为输入,但是内部为非全连接结构.因为图像数据在空间上是有组织结构的,每一个像素在空间上和周围的像素是有关系的,和相距很远的像素基本上是没什么联系的,每个神经元只需要接受局部的像素作为输入,再将局部信息汇总就能得到全局信息. 权值共享和池化两个操作使网络模型的参数大幅的减少,提高了模型的训练效率. 卷积神经网络主要特点 权值共享: 在卷积层中可以有多个卷积核,每个卷积核与原始图像进行卷积运算后会映射出一个新的2D图像,新图像的每个像素都来自同一个卷积核.这就是权值共享. 池化: 降采样,对卷积(滤波)后,经过激活函数处理后的图像,保留像素块中灰度值最高的像素点(保留最主要的特征),比如进行 2X2的最大池化,把一个2x2的像素块降为1x1的像素块。 卷积网络的训练数据(112×92×3图形) 从data目录读取数据,famale存放女性图片,male存放男性图片 重新打乱 训练集与测试集比例 8:2 训练参数 网络结构 辅助函数 Padding 训练 第一层卷积+池化 第二层卷积+池化 第三层卷积+池化 全连接第一层 全连接第二层 全连接输出层 损失函数 计算准确率&损失 启动会话开始训练 测试集验证 验证通过,保存模型 使用已训练好的模型参考:gender_model_use.py 结果: 迭代3000次,模型的准确率达到93% 训练交叉熵代价 训练的准确率 训练数据中的一个样本 第一层卷积提取的特征 2x2池化后特征 第二层卷积提取的特征 2x2池化后特征 第三层卷积提取的特征 2x2池化后特征 来源https://github.com/chenlinzhong/gender-recognition