基于深度学习的人脸多任务识别(附代码)

项目说明

本项目为人脸多任务识别(单输入,多输出),可以同时输出人脸关键点、性别和年龄。

采用了两个算法进行应用的实现,人脸目标检测和人脸多任务识别。

其中人脸目标检测采用YOLOV5进行实现,主要对人脸部分进行截取,再送入多任务网络进一步处理,实际检测效果如下(支持图像、视频检测):

本项目不包含人脸目标检测的训练,人脸目标检测训练相关内容和数据集参考我另一篇文章:人脸目标检测

基于yolov5的人脸关键点检测(不含性别和年龄)可以参考文章:人脸关键点检测

目录

项目说明

项目使用说明

训练说明

数据集处理

训练

检测


项目使用说明

下载代码:

GitHub - YINYIPENG-EN/yolov5_face_multask: 本项目为人脸多任务识别(单输入,多输出),可以同时输出人脸关键点、性别和年龄

训练说明

数据集处理

数据集共计29055张图,数据集百度云:

百度云链接:百度网盘 请输入提取码 提取码:yypn

注意这里的数据集标签采用的是json格式,这在训练中数据集处理和读取中十分不便利,因此我对该部分进行了优化,采用txt的格式进行读取,使得数据加载速度比之前快了至少10倍。

下载数据集并解压,比如我的数据集放在F:/mydatasets/下,目录形如:

mydatasets/
`-- wiki_crop_face
    |-- image
    |-- label_new
    |-- wiki_crop_face.txt

接下来进行如下步骤生成最终的txt标签

步骤1:

修改tools/JSON2TXT.py的如下路径:

Json_label_path = 'F:/mydatasets/wiki_crop_face/label_new/'  # Json标签存储路径
Txt_label_path = 'F:/mydatasets/wiki_crop_face/label_txt/'   # Json转txt保存路径

然后运行该脚本,将会在wiki_crop_face/label_txt/下生成所有图像对应的标签txt文件,如下所示,命名方式为图像名称,内容为标注的信息。

|-- 3892342_1979-11-07_2009.txt
|-- 38929429_1993-02-22_2014.txt
|-- 38931826_1991-05-21_2013.txt
|-- 38932604_1982-09-28_2014.txt
|-- 3893481_1984-09-03_2011.txt
|-- 38940596_1990-02-19_2012.txt
.....

步骤2:

划分数据集,划分数据集脚本为tools/split_datasets.py,注意修改其中的步骤1得到的label_txt路径,然后运行该脚本即可,相关功能解释可看代码中注解介绍。

函数说明:

脚本中的create_dataset函数是将步骤1中得到的label_txt文件夹中所有的txt信息写入到一个txt中—datasets_list.txt。

脚本中的split_datasets函数是将上一步的datasets_list.txt划分为训练集train_list.txt和val_list.txt。

最终得到的数据集目录如下:

wiki_crop_face/
|-- datasets_list.txt  # 存储了所有数据集信息
|-- image  # 所有图像
|-- label_new  # 所有标签的json格式
|-- label_txt  # 所有标签的txt格式
|-- train_list.txt  # 训练集list
|-- val_list.txt  # 验证集list
`-- wiki_crop_face.txt  

训练

开启快速训练(其他参数可以看train.py)

python train.py --train_path 你的train_list.txt路径 --val_path 你的val_list.txt路径 --batch_size 8

ps:代码参数中的model参数是Backbone,现仅支持resnet34、resnet50(默认为resnet34)

检测

该部分有偿提供

开启快速检测

python predict.py --source img/2.jpg --yolo_weight yolo权重 --face_multask_weights 多任务权重 --draw_points

检测效果如下:

根据条件查询人脸 

2024年12月12日新更新内容

本项目新增加根据条件查询人脸。

说明如下:

在之前的“检测”部分,我们可以对视频人脸进行检测,但会存在一个问题,如果只有一个人脸还好,但如果一个视频中有保存了上百上千个人脸,想要找我们需要的目标那工作量还是太大,因此我们可以根据条件去对这些人脸进行筛选,减少一定的工作量。效果如下:

我们只需要在界面中根据年龄或性别缩小查找的范围即可,这可以大大减少我们的工作量。

【该部分内容为有偿提供~】 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃肉的鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值