用于年龄估算的紧凑型软件阶段回归网络
文件列表(压缩包大小 33.40M)
免费
概述
[IJCAI18] SSR-Net:用于年龄估算的紧凑型软件阶段回归网络
作者:Tsun-Yi Yang, Yi-Husan Huang, Yen-Yu Lin, Pi-Cheng Hsiu, and Yung-Yu Chuang
本文提出了一种新颖的CNN模型,称为“软分段回归网络(SSR-Net)”,用于从具有紧凑模型尺寸的单个图像进行年龄估算。受DEX启发,本项目通过执行多类别分类然后通过计算期望值将分类结果转换为回归来解决年龄估计问题。SSR-Net采用从粗到精的策略,并执行多个阶段的多类分类。每个阶段仅负责完善前一阶段的决策。因此,每个阶段执行的任务很少,而且所需的神经元也很少,从而大大减小了模型的大小。为了解决将年龄分组到类别中引入的量化问题,SSR-Net通过允许根据输入的面部图像进行移动和缩放来为每个年龄类别分配动态范围。多阶段策略和动态范围都被纳入到软阶段回归的公式中。提出了一种新颖的网络架构来进行软件的逐步回归。生成的SSR-Net模型非常紧凑,仅需0.32 MB。尽管具有紧凑的尺寸,但SSR-Net的性能仍能与模型尺寸大1500倍的最新方法相媲美。
A guide for most dependencies. (in Chinese) http://shamangary.logdown.com/posts/3009851
Anaconda
OpenCV
dlib
MTCNN for demo
pip install mtcnn
MobileNet (already in the codes) https://github.com/fchollet/keras/blob/master/keras/applications/mobilenet.py
DenseNet (already in the codes) https://github.com/titu1994/DenseNet
Face alignment (already in the codes) https://github.com/xyfeng/average_portrait
Others
conda install -c conda-forge moviepy
conda install -c cogsci pygame
conda install -c conda-forge requests
conda install -c conda-forge pytables
该项目分为三个不同的部分。
该存储库适用于IMDB,WIKI和Morph2数据集。
cd ./data
python TYY_IMDBWIKI_create_db.py --db imdb --output imdb.npz
python TYY_IMDBWIKI_create_db.py --db wiki --output wiki.npz
python TYY_MORPH_create_db.py --output morph_db_align.npz
通过随机选择80%的数据集作为训练和20%的数据集作为验证(或测试)来完成实验。本文中每个数据集中的设置详细信息。
对于MobileNet和DenseNet:
cd ./training_and_testing
sh run_all.sh
对于SSR-Net:
cd ./training_and_testing
sh run_ssrnet.sh
请注意,在此代码中提供了几种不同的超参数组合。如果只需要单个超参数集,请在“ run_ssrnet.sh”中更改命令。
绘制结果: 例如,在训练IMDB数据集之后,想要绘制曲线和结果。将“ plot.sh”,“ ssrnet_plot.sh”和“ plot_reg.py”复制到“ ./imdb_models”中。以下命令应标出训练过程的结果。
sh plot.sh
sh ssrnet_plot.sh
纯CPU演示命令:
cd ./demo
KERAS_BACKEND=tensorflow CUDA_VISIBLE_DEVICES='' python TYY_demo_mtcnn.py TGOP.mp4
# Or you can use
KERAS_BACKEND=tensorflow CUDA_VISIBLE_DEVICES='' python TYY_demo_mtcnn.py TGOP.mp4 '3'
注意:你可以选择其他预先训练的模型。但是,morph2数据集处于良好控制的环境中,并且比IMDB和WIKI小得多,来自morph2的预训练模型可能在野外图像上表现出色。因此,对于野外图像或视频演示,建议使用IMDB或WIKI预训练模型。
由于面部数据井井有条,因此本项目在上一个实验部分中使用了dlib检测和面部对齐。但是,dlib无法为野生视频提供令人满意的人脸检测。因此,在演示部分中,本项目将mtcnn用作检测过程。
考虑到人脸检测过程(MTCNN或Dlib)还不够快,无法进行实时演示。本项目通过使用lbp人脸检测器显示实时网络摄像头版本。
cd ./demo
KERAS_BACKEND=tensorflow CUDA_VISIBLE_DEVICES='' python TYY_demo_ssrnet_lbp_webcam.py
可以将二进制分类问题重新构造为回归问题,并且可以使用SSR-Net来预测置信度。例如,本项目在扩展代码中提供了性别回归和演示。
训练性别网络:
cd ./training_and_testing
sh run_ssrnet_gender.sh
分数可以在[0,1]之间,并且对于一般提议回归,可以将SSR-Net内部的'V'更改为1。
MXNET: https://github.com/wayen820/gender_age_estimation_mxnet
pytorch: https://github.com/oukohou/SSR_Net_Pytorch
Pytorch: https://github.com/CrazySummerday/SSR-Net
如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈
评论(0)