![13bc98655d2bbe1dbc5ce3970c5f4574.png](https://i-blog.csdnimg.cn/blog_migrate/2bff726b0ac9c8e1a01f35f44b531c7b.jpeg)
这是一个深度学习的练习项目,目的:
- 使用 TensorFlow 2 + Keras API 实现 multi-output 任务。
- 实操一个相对完整的深度学习任务,从数据清洗到模型训练出结果。
- 训练一个有一定实际意义(人种、性别预测)的人脸识别项目。
基本信息
- 源码 & 运行结果:Github link
- Kaggle: https://www.kaggle.com/jangedoo/utkface-new
- dataset: https://susanqq.github.io/UTKFace/ 2 万张单人脸图片,覆盖 5 个人种,0-116 岁区间。原始数据 1.3GB,cropped 后 107MB。本文使用 cropped 后的数据集。
- 参考论文:Multi-digit Number Recognition from Street View Imagery using Deep Convolutional Neural Networks https://arxiv.org/abs/1312.6082 来自 Google 2013.12 月
- 代码基于 https://sanjayasubedi.com.np/deeplearning/multioutput-keras/ 修改而来
- 开发环境:Ubuntu 18.04 搭建 cuda10.1+tensorflow2.1+python3.7 https://zhuanlan.zhihu.com/p/45041445
模型原理
在 Google 的论文 中,介绍了核心原理:
- 前面的卷积层保持不变,与单 output 一样。因为,卷积层是对图片做预处理 & 基本特征自动提取,泛化性好的模型,不应该与识别目标强相关。
- 最后的全连接层,根据目标的数量,增加纬度。最终的模型输出纬度和训练目标数一致。
原始论文对方法的介绍,也非常的简明扼要,只有半页纸。完整截图如下: