开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 8164|回复: 16
收起左侧

[技术专题] OpenCV实现年龄与性别预测

[复制链接]
结帖率:89% (79/89)
发表于 2022-5-10 11:34:41 | 显示全部楼层 |阅读模式   江苏省*
前面我写了很多篇关于OpenCV DNN应用相关的文章,这里再来一篇文章,用OpenCV DNN实现一个很有趣好玩的例子,基于Caffe的预训练模型实现年龄与性别预测,这个在很多展会上都有展示,OpenCV DNN实现这里非常简洁明了,总共不到100行的代码。下面就来说一下怎么实现的,首先下载两个Caffe的预训练模型:

百度网盘下载:
链接:https://pan.baidu.com/s/1VSYkILerRQsoDiIhl-6eTQ?pwd=4ypk
提取码:4ypk
路径:OpnCV VIP>例子素材与模型>性别与年龄识别

模型一个是预测性别的,一个是预测年龄的,性别预测返回的是一个二分类结果
Male,Female
年龄预测返回的是8个年龄的阶段!

'(0-2)',

'(4-6)',

'(8-12)',

'(15-20)',

'(25-32)',

'(38-43)',

'(48-53)',

'(60-100)'

人脸检测是基于OPenCV DNN模块自带的残差网络的人脸检测算法模型!非常的强大与好用!

实现步骤:
  
窗口程序集名保 留  保 留备 注
程序集1   
变量名类 型数组备 注
inputNet网络类  
nPoints整数型  

子程序名返回值类型公开备 注
_启动子程序整数型 本子程序在程序启动后最先执行
变量名类 型静态数组备 注
人脸原型文本型 
人脸模型文本型 
年龄原型文本型 
年龄模型文本型 
性别原型文本型 
性别模型文本型 
模型平均值标量类 
年龄列表文本型8
性别列表文本型2
年龄预测网络网络类 
性别预测网络网络类 
人脸预测网络网络类 
源图多维矩阵类 
预测框集预测框0
框架脸多维矩阵类 
置信_阈值双精度小数型 
框架高整数型 
框架宽整数型 
比例因子双精度小数型 
尺寸尺寸2i类 
输出前景目标多维矩阵类 
平均值标量类 
检测多维矩阵类 
检测矩阵多维矩阵类 
i整数型 
信心小数型 
预测框预测框 
脸部区域矩形2i类 
填充整数型 
多维矩阵类 
前景目标多维矩阵类 
性别预测多维矩阵类 
年龄预测多维矩阵类 
置信度双精度小数型 
索引点2i类 
性别文本型 
年龄文本型 
人脸原型 = “D:\\Desktop\\AgeGender\\opencv_face_detector.pbtxt”
人脸模型 = “D:\\Desktop\\AgeGender\\opencv_face_detector_uint8.pb”
年龄原型 = “D:\\Desktop\\AgeGender\\age_deploy.prototxt”
年龄模型 = “D:\\Desktop\\AgeGender\\age_net.caffemodel”
性别原型 = “D:\\Desktop\\AgeGender\\gender_deploy.prototxt”
性别模型 = “D:\\Desktop\\AgeGender\\gender_net.caffemodel”
模型平均值.初始化 (78.4263377603, 87.7689143744, 114.895847746, 0)
年龄列表 = { “(0-2)”, “(4-6)”, “(8-12)”, “(15-20)”, “(25-32)”, “(38-43)”, “(48-53)”, “(60-100)” }
性别列表 = { “Male”, “Female” }
年龄预测网络 = 视觉_读取网络 (年龄模型, 年龄原型, “”)
性别预测网络 = 视觉_读取网络 (性别模型, 性别原型, “”)
人脸预测网络 = 视觉_读取网络 (人脸模型, 人脸原型, “”)
源图 = 视觉_图像读取 (“D:\Desktop\AgeGender\12.jpg”, 1)
填充 = 20
判断循环首 (视觉_等待按键 (1) < 0)
如果真 (源图. ())
跳出循环 ()
框架脸 = 源图.克隆 ()
置信_阈值 = 0.7
框架高 = 框架脸.行数 ()
框架宽 = 框架脸.列数 ()
比例因子 = 1
尺寸.初始化 (300, 300)
平均值.初始化 (104, 117, 123, )
输出前景目标 = 视觉_图像前景目标 (框架脸, 比例因子, 尺寸, 平均值, 真, 假, 5)
人脸预测网络.设置输入 (输出前景目标, “data”, 1, )
人脸预测网络.向前 (检测, “detection_out”)
检测矩阵 = 矩阵 (检测.维度元素数 (2), 检测.维度元素数 (3), #Cv小数型, 检测.取元素指针 (0, 0))
计次循环首 (检测矩阵.行数 (), i)
信心 = 检测矩阵.取元素 (i - 1, 2)
如果真 (信心 > 置信_阈值)
预测框.x1 = 检测矩阵.取元素 (i - 1, 3) × 框架宽
预测框.y1 = 检测矩阵.取元素 (i - 1, 4) × 框架高
预测框.x2 = 检测矩阵.取元素 (i - 1, 5) × 框架宽
预测框.y2 = 检测矩阵.取元素 (i - 1, 6) × 框架高
视觉_矩形1 (框架脸, 点2i (预测框.x1, 预测框.y1), 点2i (预测框.x2, 预测框.y2), 标量 (0, 255, 0), 2, 4, 0)
加入成员 (预测框集, 预测框)

计次循环尾 ()
如果真 (取数组成员数 (预测框集) = 0)
视觉_控制台输出 (“未检测到人脸,正在检查下一帧.”, )
到循环尾 ()
计次循环首 (取数组成员数 (预测框集), i)
脸部区域.初始化 (预测框集 [i].x1 - 填充, 预测框集 [i].y1 - 填充, 预测框集 [i].x2 - 预测框集 [i].x1 + 2 × 填充, 预测框集 [i].y2 - 预测框集 [i].y1 + 2 × 填充)
源图.感兴区域S (脸, 脸部区域)
前景目标 = 视觉_图像前景目标 (脸, 1, 尺寸2i (227, 227), 模型平均值, 假, 假, 5)
性别预测网络.设置输入 (前景目标, “”, 1, )
性别预测网络.向前 (性别预测, “”)
视觉_最小最大位置 (性别预测, , 置信度, , 索引, )
性别 = 性别列表 [索引.左边 + 1]
年龄预测网络.设置输入 (前景目标, “”, 1, )
年龄预测网络.向前 (年龄预测, “”)
视觉_最小最大位置 (年龄预测, , 置信度, , 索引, )
年龄 = 年龄列表 [索引.左边 + 1]
视觉_放置文本 (框架脸, 性别 + “, ” + 年龄, 点2i (预测框集 [i].x1, 预测框集 [i].y1 - 15), #字体_衬线_简单, 0.9, 标量 (0, 255, 255), 2, #线类型_线_AA, )
视觉_显示图像 (“Frame”, 框架脸)
计次循环尾 ()
清除数组 (预测框集)
判断循环尾 ()
返回 (0)  ' 可以根据您的需要返回任意数值



i支持库列表   支持库注释   
OpenCV(未知支持库)


最后来个效果图:
QQ图片20220510113402.png

点评

25-32,楼主,还得是你呀!   广东省阳江市  发表于 2022-5-10 14:29

评分

参与人数 1好评 +1 精币 +2 收起 理由
汉族 + 1 + 2 这个照片quo时 惊艳,模型quo时到位

查看全部评分


结帖率:89% (79/89)

签到天数: 11 天

 楼主| 发表于 2022-7-9 11:24:35 | 显示全部楼层   江苏省苏州市
猩猩点灯2 发表于 2022-7-9 01:05
1.没有找到名为“标量类的数据类型。用群文件那个支持库搞定
2.没有找到名为“预测框”的数据类型。目前没 ...

在群里找对应例子
回复 支持 反对

使用道具 举报

签到天数: 6 天

发表于 2022-7-9 01:05:47 | 显示全部楼层   江苏省南通市
1.没有找到名为“标量类的数据类型。用群文件那个支持库搞定
2.没有找到名为“预测框”的数据类型。目前没找到解决办法,
把所需要的文件发全啊
回复 支持 反对

使用道具 举报

结帖率:60% (3/5)
发表于 2022-6-23 20:48:48 | 显示全部楼层   甘肃省兰州市
学习一下,谢谢分享
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 18 天

发表于 2022-5-28 21:37:26 | 显示全部楼层   湖北省武汉市
我实在无语了,你这个让我晚上做梦了。。。。
回复 支持 反对

使用道具 举报

发表于 2022-5-16 21:08:20 | 显示全部楼层   江苏省宿迁市
66666666666666666666666666
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2022-5-12 01:59:57 | 显示全部楼层   贵州省黔西南布依族苗族自治州
zafwafawfwfa
回复 支持 反对

使用道具 举报

结帖率:87% (20/23)

签到天数: 1 天

发表于 2022-5-10 15:16:27 | 显示全部楼层   四川省巴中市
我能委屈说一句吗?我正在喝复方感冒药的冲剂 看后面的转好久突然已出现 我直接喷的一屏幕键盘都粘呼呼的 怎么搞?

点评

下次再搞个,好玩的   江苏省*  发表于 2022-5-10 18:32
洗键盘去了   四川省巴中市  发表于 2022-5-10 15:16
回复 支持 反对

使用道具 举报

结帖率:89% (79/89)

签到天数: 11 天

 楼主| 发表于 2022-5-10 14:16:55 | 显示全部楼层   江苏省*
phinex 发表于 2022-5-10 11:57
看到这脸识别到25-32就知道你这个opencv 辨别率离谱!!!

要不要来试试,自己多少岁
回复 支持 反对

使用道具 举报

结帖率:89% (79/89)

签到天数: 11 天

 楼主| 发表于 2022-5-10 14:15:26 | 显示全部楼层   江苏省*
phinex 发表于 2022-5-10 11:57
看到这脸识别到25-32就知道你这个opencv 辨别率离谱!!!

  这些都是  玩玩就好
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表