人脸性别和年龄识别

本文是对age-gender-estimation项目的详细讲解,它给出了使用keras进行性别和年龄识别的完整流程。

数据

采用的数据集为imdb-wiki,这是一个包含 20,284名人的460,723张以及维基百科上imdb的 62,328张共计523,051 张人脸图像的数据集,是目前开源的数据集中量级最大的,它给出了图像中人物的性别和出生时间、照片的拍摄时间等信息。原始的图片很大,分成了9个部分共计100多G,而裁剪出人脸的图片比较小,只有3G多,因此大家使用的基本都是wiki.tar.gz,不需要注册,直接就可以下载,这点很良心,省去了很多下载的时间。

解压后的目录为100个子文件夹,每个子文件夹再存储图片文件,这也是分类任务里最常见的做法

不过由于标注是采用matlab的mat格式文件存储的,实际用起来还要做一些转化。里面还含有一些噪声,比如性别标记为NAN,年龄算出来不对等,我写了一些代码来对这些信息进行过滤和统计

import os
import numpy as np
from scipy.io import loadmat
from datetime import datetime
from tqdm import tqdm
import matplotlib.pyplot as pltdef calc_age(taken, dob):birth = datetime.fromordinal(max(int(dob) - 366, 1))# assume the photo was taken in the middle of the yearif birth.month < 7:return taken - birth.yearelse:return taken - birth.year - 1def get_meta(mat_path, db):meta = loadmat(mat_path)full_path = meta[db][0, 0]["full_path"][0]dob = meta[db][0, 0]["dob"][0]  # Matlab serial date numbergender = meta[db][0, 0]["gender"][0]photo_taken = meta[db][0, 0]["photo_taken"][0]  # yearface_score = meta[db][0, 0]["face_score"][0]second_face_score = meta[db][0, 0]["second_face_score"][0]age = [calc_age(photo_taken[i], dob[i]) for i in range(len(dob))]return full_path, dob, gender, photo_taken, face_score, second_face_score, agedef load_data(mat_path):d = loadmat(mat_path)return d["image"], d["gender"][0], d["age"][0], d["db"][0], d["img_size"][0, 0], d["min_score"][0, 0]def convert2txt(mat_path="imdb.mat",db="imdb"):lines=[]min_score=1.0full_path, dob, gender, photo_taken, face_score, second_face_score, age = get_meta(mat_path,db)genders=[0,0]ages=[]for i in range(101):ages.append(0)for i in tqdm(range(len(full_path))):#if face_score[i] < min_score:#continue#if (~np.isnan(second_face_score[i])) and second_face_score[i] > 0.0:#continueif ~(0 <= age[i] <= 100):continueif np.isnan(gender[i]):continueg=int(gender[i])genders[g]+=1ag=int(age[i])ages[ag]+=1#print(i,gender[i],age[i])line=full_path[i][0]+" "+str(g)+" "+str(ag)lines.append(line)with open("gt.txt","w")as f:for line in lines:f.write(line+"\n")print("genders",genders[0],genders[1])print("age:")for i in range(101):print(i,ages[i])plt.plot(np.linspace(0, 101,101),ages)plt.savefig("plot.png")plt.show()if __name__=="__main__":convert2txt()

结果如下:

性别比(男:女)=188746:262834

年龄分布画成图如下:

不难看出30-50岁之间的图片最多 ,这也是主流的分布。

具体到age-gender-estimation项目,可以简单的通过

./download.sh

下载,然后使用

python3 create_db.py --output data/imdb_db.mat --db imdb --img_size 64

将数据集转换为需要的格式,这个格式主要是清理无效标签,省的每次都再重复做,代码和我上面给出的差不多,不再赘述。

模型

使用的模型为WiderResnet,可以通过Netron可视化,是由6个残差模型拼起来的,不过输出部分有两个输出,一个是性别的2,另一个是年龄的101

训练

训练部分也比较简单,生成了数据文件后直接使用

python3 train.py --input data/imdb_db.mat

就可以了,如果还想使用数据增强,可以加上--aug

python3 train.py --input data/imdb_db.mat --aug

demo

想看训练好的效果可以运行

python3 demo.py

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/42624.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:Python如何计算年龄?

Python如何计算年龄&#xff1f; 计算年龄是一项常见的任务&#xff0c;尤其在与生物、医学或保险有关的领域。在Python中&#xff0c;计算年龄可以通过各种方式实现。在本文中&#xff0c;我们将探讨如何使用Python计算年龄。 Date函数 Python具有内置的Date函数&#xff0…

输入年龄,判断年龄阶段

#include<stdio.h> int main() { int age; printf("age:"); scanf("%d",&age); if(age>12&&age<18) printf("青少年"); else if(age>18&&age<60) printf("壮年");…

年龄识别之AgeNet

论文&#xff1a;AgeNet: Deeply Learned Regressor and Classifier for Robust Apparent Age Estimation ICCV2015 论文提出了一种基于人脸的年龄识别网络AgeNet。该网络同时基于分类和回归对年龄进行预测&#xff0c;然后将2个分支的特征进行融合&#xff0c;得到更好的预测…

chatgpt赋能python:Python年龄换算:如何根据Python版本算出“年龄”?

Python年龄换算&#xff1a;如何根据Python版本算出“年龄”&#xff1f; Python是一种高级编程语言&#xff0c;享有强大、易读、易用和可扩展性等各种优点。它是许多开发者使用的首选语言&#xff0c;尤其在数据科学和机器学习领域中备受推崇。 但是&#xff0c;Python几乎…

音视频技术开发周刊 | 301

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 微软、谷歌、亚马逊&#xff0c;打响大模型时代的云战争 过去数月&#xff0c;云巨头们砸下真金白银&#xff0c;研发大模型、战略投资、自研 AI 芯片……大模型的时代方兴…

chatgpt如何引入本地知识?我们来看下emnlp 2022如何将本地图谱知识引入到任务型对话系统中

一、概述 title&#xff1a;Injecting Domain Knowledge in Language Models for Task-Oriented Dialogue Systems 论文地址&#xff1a;https://arxiv.org/abs/2212.08120 代码&#xff1a;GitHub - amazon-science/domain-knowledge-injection 1.1 Motivation 如何在PLM…

SpeechSynthesisUtterance实现语音播报

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>语音播报</title></head><body>&l…

Android TTS语音播报实践

在工作中遇到了语音播报的需求&#xff0c;在收到push后&#xff0c;用语音播报push携带的播报内容。类似于微信支付宝的收款信息一样。调研后主要的语音播报方案有一下几种&#xff1a; 基于第三方的TTS SDK&#xff0c;如百度、思必驰、讯飞等&#xff1b;自研Native的TTS引…

感谢ChatGPT,救了我狗的命!

前一段时间&#xff0c;国外一位小哥哥在推特上发布了一条消息&#xff0c;声称GPT-4拯救了自家狗狗的性命。 这是怎么一回事呢&#xff1f; 这个小哥哥养了一只两岁的边境牧羊犬&#xff0c;这只牧羊犬被诊断出患有蜱传疾病&#xff0c;这属于一种细菌性传染病。 虽然小哥哥一…

ChatGPT热潮下水力模型的思考

ChatGPT横空出世&#xff0c;快速火爆全球&#xff0c;基于大数据、大算力的人工智能技术来势汹汹、势不可挡&#xff0c;似乎要革全世界打工人的命! 本人多年来一直从事供排水系统水力建模和应用相关的工作&#xff0c;在水行业里&#xff0c;算是跟数据和模型打交道比较多了。…

chatgpt赋能python:Python基础词汇解析

Python基础词汇解析 作为一门流行且易学的编程语言&#xff0c;Python在很多场合得到了广泛的应用。在学习Python编程的过程中&#xff0c;掌握各类基础词汇是非常关键的。本文将介绍Python编程中一些常见且重要的基础词汇&#xff0c;帮助大家更好地了解和掌握Python编程。 …

全网最全的AI绘画提示词网站,看这一篇就够了!

要说2023年什么最火&#xff0c;绝对是以ChatGPT为代表的AI工具了&#xff0c;特别是AI绘画&#xff0c;而用好AI的关键&#xff0c;就是要学会使用关键词&#xff0c;也叫提示词&#xff0c;提示词是AI绘画的核心&#xff0c;本次就给大家分享几个AI绘画关键词网站&#xff0c…

ChatGPT+markmap,1分钟帮我写完了一份测试用例

近段时间&#xff0c;我相信没有人不知道AI吧&#xff0c;今天&#xff0c;我尝试了下&#xff0c;用ChatGPT来写测试用例&#xff0c;而且顺带在markmap生成了脑图&#xff0c;整个过程非常丝滑&#xff0c;下面分享给大家&#xff0c;希望对大家有所启发。 1、使用ChatGPT提问…

【ChatGPT|AI 应用】如何用 ChatGPT 快速制作思维导图

应用背景 ChatGPT 应用越来越广&#xff0c;前面的文章有介绍【如何用 ChatPDF 秒读论文】&#xff0c;它能帮助我们更快的提炼 PDF 文献的重点&#xff0c;帮助我们快速阅读&#xff01;接下来&#xff0c;我们将进一步使用 ChatGPT 生成思维导图&#xff0c;建立记忆链接。本…

OpenAI发布AGI路线图,AGI或成为人类的巨大力量增幅器!网友:适应or死亡

编&#xff5c;桃子 昕朋源&#xff5c;新智元 ChatGPT爆火出圈让人们开始重新思考人工智能的未来在哪&#xff1f;恰在昨日&#xff0c;OpenAI发布了通用人工智能路线图&#xff0c;分享了其对AGI的短期和长期规划。 继ChatGPT成当红炸子鸡后&#xff0c;微软、谷歌、Meta等大…

“释放你内心的艺术家:用我们的革命性API接口探索绘画世界“(免费API绘画接口)

接口调用介绍 文章目录 接口调用介绍前言一、在线文档地址二、使用步骤1.请求方式2.注意事项3.header4.请求参数5.请求示例6.返回结果&#xff1a;7.返回示例8.效果图集合 总结 前言 绘画是一种充满创造力和想象力的艺术形式&#xff0c;许多人喜欢通过绘画来表达自己的情感和…

推荐一款 IntelliJ IDEA 神级插件,由 ChatGPT 团队开发,堪称辅助神器!

点击关注 &#x1f449; JAVA日知录 2023-04-28 08:32 发表于安徽 收录于合集#开发工具14个 什么是Bito&#xff1f; Bito是一款在IntelliJ IDEA编辑器中的插件&#xff0c;Bito插件是由ChatGPT团队开发的&#xff0c;它是ChatGPT团队为了提高开发效率而开发的一款工具。Bit…

文心一言是中文版的ChatGPT?多角度分析猜测文心一言到底是什么?

文心一言是中文版的ChatGPT&#xff1f;多角度分析/猜测文心一言到底是什么&#xff01; ChatGPT爆火网络&#xff0c;一时间风靡不断。 AI替代人类工作的传言四起 宣布ChatGPT类似产品的公司股价大涨&#xff0c;这到底是什么&#xff1f; 国产的类似产品到底到了什么程度…

chatgpt赋能python:Python中数字相乘的简介和应用

Python中数字相乘的简介和应用 什么是Python数字相乘 在Python编程语言中&#xff0c;数字相乘是一个很常见的计算操作&#xff0c;它用于将两个数字相乘&#xff0c;结果是乘积。Python的数字类型可以是整数、浮点数或复数。Python支持三种基本算术运算符&#xff1a;加号&a…

李永乐团队2021数学基础过关660题勘误表

李永乐团队2021数学基础过关660题勘误表 附&#xff1a;各大高校专业课资料整理可以看一下我的博客主页上传的资源哦&#xff01;感谢关注&#xff0c;评论♥点个赞再白嫖呗☞2333