Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 基于深度学习的性别检测和年龄分类_Tensorflow_Keras_Deep Learning_Classification_Conv Neural Network - Fatal编程技术网

Tensorflow 基于深度学习的性别检测和年龄分类

Tensorflow 基于深度学习的性别检测和年龄分类,tensorflow,keras,deep-learning,classification,conv-neural-network,Tensorflow,Keras,Deep Learning,Classification,Conv Neural Network,我正在做一个项目,目标是检测性别并对图像进行分类。我做了一些研究,发现了一篇由Gil Levi和Tal Hassnar撰写的研究论文:《年龄和性别卷积神经网络分类》。我试图复制他们创建的深层网络,最初在Caffe,在Keras。但问题是,该模型的准确率高达50%(基本上是随机抛硬币)。我做错了什么。非常感谢您的帮助。 顺便说一句,我使用adience数据集作为原始文件。 PS:我已经完全移除了LRN层,因为它们在Keras中不可用。(我认为他们的缺席不应该影响模型的准确性) 这是代码 #导入 导

我正在做一个项目,目标是检测性别并对图像进行分类。我做了一些研究,发现了一篇由Gil Levi和Tal Hassnar撰写的研究论文:《年龄和性别卷积神经网络分类》。我试图复制他们创建的深层网络,最初在Caffe,在Keras。但问题是,该模型的准确率高达50%(基本上是随机抛硬币)。我做错了什么。非常感谢您的帮助。 顺便说一句,我使用adience数据集作为原始文件。 PS:我已经完全移除了LRN层,因为它们在Keras中不可用。(我认为他们的缺席不应该影响模型的准确性) 这是代码

#导入
导入操作系统
将numpy作为np导入
从PIL导入图像
进口泡菜
从keras.models导入顺序
从keras.callbacks导入模型检查点
从keras.layers导入稠密、Conv2D、展平、MaxPoolig2D、Dropout、AveragePoolig2D
从keras导入初始值设定项
来自keras导入优化器
#创建模型对象
性别_模型=顺序()
#向模型中添加图层
#第一卷积层
添加(Conv2D(96,内核大小=(7,7),激活=(relu),步幅=4,输入形状=(227,3),
内核初始化器=初始化器。随机正常(stddev=0.01),使用偏差=1,
偏差(初始值设定项='0',数据格式='channels\u last'))
添加(MaxPoolig2D(池大小=3,步幅=2))
添加(Conv2D(256,内核大小=(5,5),激活='relu',步幅=1,填充='same',输入形状=(27,27,96),
内核初始化器=初始化器。随机正常(stddev=0.01),使用偏差=1,
偏差(初始值设定项为1,数据格式为通道最后一个)
添加(MaxPoolig2D(池大小=3,步幅=2))
#第三卷积层
添加(Conv2D(384,内核大小=(3,3),激活='relu',步幅=1,填充='same',输入形状=(13,13256),
内核初始化器=初始化器。随机正常(stddev=0.01),使用偏差=1,
偏差(初始值设定项='0',数据格式='channels\u last'))
添加(MaxPoolig2D(池大小=3,步幅=2))
#现在我们将最后一个卷积层的输出展平
性别_model.add(展平())
#现在我们连接完全连接的层
性别模型。添加(密集型(512,激活=relu',使用偏差=1,内核初始化器=初始化器。随机正常(stddev=0.005),
偏差(初始值设定项('Ones'))
性别(增加)(辍学(0.5))
#连接另一个完全连接的层
性别模型。添加(密集型(512,激活=relu',使用偏差=1,内核初始化器=初始化器。随机正常(stddev=0.005),
偏差(初始值设定项('Ones'))
性别(增加)(辍学(0.5))
#连接最后一层
性别模型。添加(密集型(2,激活=softmax),使用偏差=1,内核初始化器=初始化器。随机正常(STDEV=0.01),
偏差(初始值设定项='0'))
#编译模型
sgd_optimizer=optimizers.sgd(lr=0.0001,衰减=1e-7,动量=0.0,nesterov=False)
gender_model.compile(优化器=sgd_优化器,loss='categorical_crossentropy',metrics=['accurity'])
性别模型摘要()
#对加载的数据进行分区
X=np.load(“/content/drive/My drive/X.npy”)
y=np.load(“/content/drive/My drive/y_m.npy”)
X_列车=X[:15000]
y_列车=y[:15000]
X_val=X[15000:]
y_val=y[15000:]
##创建chkpt路径
chkpt_path='weights improvement-{epoch:02d}--{val_acc:.2f}.hdf5'
checkpoint=ModelCheckpoint(chkpt\u路径,monitor='val\u acc',verbose=1,save\u best\u only=True,mode='max')
回调列表=[检查点]
#最后训练模型
性别模型。适合(X型列车、y型列车、,
批次尺寸=50,
纪元=100,
验证数据=(X值,y值),
洗牌=1,
回调=回调列表
)

我的方法有问题。我没有剪脸。因此,该模型无法理解每张图像中的随机背景。

python的deepface软件包提供了现成的年龄和性别预测功能

!pip install deepface
from deepface import DeepFace
obj = DeepFace.analyze("img1.jpg", actions = ["age", "gender", "emotion", "race"])
print(obj["age"], " years old ", obj["gender"])

它还可以分析情感和种族。您可以删除不必要的操作。

这可能发生在加权数据集中;您的数据集中是否存在严重的不平衡?没有,没有显著的权重差异。。