范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Pycaffemodel来实现年龄和性别识别

  1 说明
  =====
  1.1 效果图
  图片静态识别有bug
  视频和摄像头识别,动态可变
  1.2 源代码来源:https://github.com/spmallick/learnopencv
  1.3 对源代码进行修改、注释、增加,便于理解。
  1.4 模型文件来自,或者参考这里的源代码#感谢作者,提供这两个模型:age_net.caffemodel和gender_net.caffemodel https://github.com/Roggu123/Algorithm 解压后 Algorithm-master/Practice/CV/FaceDetection/age_gender 下找到
  2 准备
  =====
  2.1 环境:python3.8+opencv4.4.0+深度deepin-linux操作系统+微软编辑器vscode。
  2.2 文件结构:
  3 AgeGender.py代码
  ================
  3.1 #第1步:导入模块 import cv2 import math
  3.2 #blob = cv2.dnn.blobFromImage(image, scalefactor=1.0, size, mean, swapRB=True,crop=False,ddepth = CV_32F )
  #参数
  """
  1.image,这是传入的,需要进行处理的图像。
  2.scalefactor,执行完减均值后,需要缩放图像,默认是1。
  3.size,这是神经网络,真正支持输入的值。
  4.mean,这是我们要减去的均值,可以是R,G,B均值三元组,或者是一个值,每个通道都减这值。
  如果执行减均值,通道顺序是R、G、B。 如果,输入图像通道顺序是B、G、R,那么请确保swapRB = True,交换通道。
  5.swapRB,OpenCV认为图像 通道顺序是B、G、R,而减均值时顺序是R、G、B,
  为了解决这个矛盾,设置swapRB=True即可。
  6.crop,如果crop裁剪为真,则调整输入图像的大小,使调整大小后的一侧等于相应的尺寸,另一侧等于或大于。
  然后,从中心进行裁剪。如果"裁剪"为"假",则直接调整大小而不进行裁剪并保留纵横比。
  """#第2步:获取脸部框函数 def getFaceBox(net, frame, conf_threshold=0.7):     frameOpencvDnn = frame.copy()     frameHeight = frameOpencvDnn.shape[0]     frameWidth = frameOpencvDnn.shape[1]     #关键参数     blob = cv2.dnn.blobFromImage(frameOpencvDnn, 1.0, (300, 300), [104, 117, 123], True, False)      net.setInput(blob)     detections = net.forward()     bboxes = []     for i in range(detections.shape[2]):         confidence = detections[0, 0, i, 2]         if confidence > conf_threshold:             x1 = int(detections[0, 0, i, 3] * frameWidth)             y1 = int(detections[0, 0, i, 4] * frameHeight)             x2 = int(detections[0, 0, i, 5] * frameWidth)             y2 = int(detections[0, 0, i, 6] * frameHeight)             bboxes.append([x1, y1, x2, y2])             cv2.rectangle(frameOpencvDnn, (x1, y1), (x2, y2), (0, 255, 0), int(round(frameHeight/150)), 8)     return frameOpencvDnn, bboxes
  3.3 主要是自己喜欢微软编辑器vscode,点击运行即可。#第3步:路径管理,自己增加的 import os curpath = os.path.realpath(__file__)        # 获取当前AgeGender.py代码的绝对路径 dirpath = os.path.dirname(curpath)          # 获取当前文件的文件夹路径
  3.4 #第4步:现有的模型加载  faceProto = dirpath+"/model/opencv_face_detector.pbtxt"     #√ faceModel = dirpath+"/model/opencv_face_detector_uint8.pb"  #√  ageProto = dirpath+"/model/age_deploy.prototxt"   #√ ageModel = dirpath+"/model/age_net.caffemodel"   #自行下载  genderProto =dirpath+ "/model/gender_deploy.prototxt"  #√ genderModel = dirpath+"/model/gender_net.caffemodel"  #自行下载  MODEL_MEAN_VALUES = (78.4263377603, 87.7689143744, 114.895847746) ageList = ["(0-2)", "(4-6)", "(8-12)", "(15-20)", "(25-32)", "(38-43)", "(48-53)", "(60-100)"] genderList = ["Male", "Female"]  # Load network加载网络 ageNet = cv2.dnn.readNet(ageModel, ageProto) #读取预训练模型 genderNet = cv2.dnn.readNet(genderModel, genderProto) faceNet = cv2.dnn.readNet(faceModel, faceProto)  padding = 20
  3.5 #第5步:加载图片或者视频识别 #视频类 #cap = cv2.VideoCapture(0)  #摄像头识别  cap = cv2.VideoCapture(dirpath+"/v1.mp4")  #视频识别  #图片类 #常规是image,为了与视频代码兼容 #这里采用frame代替原来的image  #frame= cv2.imread(dirpath+"/3.jpeg")
  3.6 #第6步:循环 while cv2.waitKey(1) < 0:      #图片识别时,可注释掉     #---视频类---     hasFrame, frame = cap.read()     if not hasFrame:         cv2.waitKey()         break     #---视频类---          frameFace, bboxes = getFaceBox(faceNet, frame)      if not bboxes:         continue      for bbox in bboxes:         face = frame[max(0,bbox[1]-padding):min(bbox[3]+padding,frame.shape[0]-1),max(0,bbox[0]-padding):min(bbox[2]+padding, frame.shape[1]-1)]          blob = cv2.dnn.blobFromImage(face, 1.0, (227, 227), MODEL_MEAN_VALUES, swapRB=False)         genderNet.setInput(blob)         genderPreds = genderNet.forward()         #性别         gender = genderList[genderPreds[0].argmax()]          ageNet.setInput(blob)         agePreds = ageNet.forward()         #年龄         age = ageList[agePreds[0].argmax()]          label = "{},{}".format(gender, age)         #输出字体颜色:0, 255, 255=黄色;0, 0, 255=红色         cv2.putText(frameFace, label, (bbox[0], bbox[1]-10), cv2.FONT_HERSHEY_SIMPLEX, 0.8,                      (0, 0, 255), 2, cv2.LINE_AA)         #窗口展示         cv2.imshow("Age Gender Demo", frameFace)
  4 小结:
  可能由于现有的模型,训练数据太少,导致可能出现bug。
  可以自行训练数据集,训练好了自己再用这个套用,当然这是一件浩大的工程,提高识别精度。
  一般人,玩玩技术知道怎么回事就可以了。
  自己让代码运行起来,并加入相关代码,复习python相关知识(编程思维和路径管理)。
  希望大家喜欢。

官方公布各行业人均年薪,教师人均可超10万,你的达标了吗教师因其工作稳定,各项福利待遇都有所保证,同时还有两个超长的寒暑假,因此备受家长和毕业生们的喜欢。国家统计局每年都会针对上一年的各行业工资水平进行相关统计,据最近发布的2020年各高考结束后,学生要提前准备好一档三证,其中一个女生不用办虽然高考已经结束有一段时间了,学生们突然放松下来,还有些不太适应。甚至有一些同学还觉得自己应该坐在课堂上学习。但是不管怎样,高中生活截止到高考,就已经结束了,学生们要调整好自己的状教育部规定取消学前班,家长还在为难,却得知小学又增加2门课小学虽然是义务教育的第一个阶段,但也备受家长们重视,如果能够进入一所教学质量和升学率都名列前茅的小学,那么学生未来的升学之路基本上也就算稳了。家长们为了孩子能够进入一所优质的小学,你总是走在匆忙的路上每每看到无限延伸的路总有莫名的期待和激动我是如此深爱着路但这种爱并不是与生俱来的而是在我离开家乡懂得想念的时候诗人说路代表远方那里有着无数的憧憬和想象游子说路代表故乡那里有着无尽的妈妈你真好看我的小学靠近马路,学校的操场和厕所就在马路边,课间到操场上玩耍,平时马路上过来个人都能看得清清楚楚,这天,正好看到了我妈。妈妈穿着平时在家穿的衣服,头发也像平时一样,没怎么梳理。她12岁癫痫女孩勇夺全级第五!抗癫痫路上,一起见证奇迹的发生今天,分享一个励志的故事。一位12岁女孩,豆蔻年华,从她8岁开始,她家人就发现了她的异常在睡眠中,会有肢体抽搐口吐白沫,有时还会自言自语,几秒钟到半分钟能缓解,每天发都会发作。后来2021最好看的国产电视剧现实比剧情更残酷光看主演就知道这部肯定会好看孙红雷王京飞吴越张艺兴,分别饰演了被陷害的刑警最道貌岸然的黑老大被卷入风暴的警察局长年轻气盛的警察,更有一堆资深老戏骨作配角,各方面的气质和情感氛围都拿高考钉子户2次拒绝985院校,今年第13次参加高考,考得如何有的人生而执着,为了梦想不断砥砺前行,直至达成理想的目标,才会觉得人生圆满。你是否有思考过自己的人生理想,你是否有为了理想不顾一切过。前几天高考在学生们沉稳的答卷中,轰轰烈烈地结束班主任长得太漂亮,儿子学习积极性提高了,家长却担心不已上学是每个学生的必经过程。但是有的学生特别喜欢上学,有的却对上学这件事无感,这其中包含很多原因,比如同学关系,老师,以及自身的成绩都会是影响因素。有的学生喜欢上学,因为在学校,老师快慢班或将退出高中教育,学生意见呈两极化,教育部回应来了近几年教育公平化逐渐被大家所重视,对于公平,每个人都有不一样的理解,教育部门结合大家提出的建议,综合考量,也提出了很多应对的办法,但是改革的过程必然不是一帆风顺的,教育部会跟具实际中小学生迎来新型课间,预计9月初开始实行,学生喜出望外当下教育环节中,学生的健康水平越发受到重视。国家教育部门为实现提升中小学生健康素质水平,尝试过多次改革。中考中的体育测试就是一次成功的改革,中学阶段的学生体能水平获得了明显的提升。
女孩患病生父外出打工,继父卖房全力相救只盼她能喊声爸爸图为杨长礼和运运一开始孩子排斥我,不喜欢我,有时候还和我对着干,但这都没关系,我只希望她能好。说话的人名叫杨长礼,家在黑龙江省尚志市老街基乡。自2016年继女邹运生病以来,杨长礼从2岁男童基因突变需移植,7天遇到有缘人,4位老人竭力相救对于患有急性髓系白血病m7的2岁萌娃小何睿来说,移植是唯一的救命办法。当时确定移植后,不仅几十万的手术费用是难题,还有寻找合适的配型是更大的难题,因为孩子基因突变,我和老婆配型虽然美女不顾一切勇嫁残疾小伙,谁料好日子刚开始帅儿子却出大事了图为乔定带女儿叫儿子轩轩吃药我叫乔定,今年34岁了,是一个儿女双全的妈妈。都说女子本弱,为母则刚,我虽已为人母,但却是满满的无力感。生了他们兄妹俩,却不能保护好他们,我时常感到自己白发母亲被14岁儿子家暴,含泪隐忍宁可我痛不想让他自残人人都盼望春天,可柯霞却害怕这五彩斑斓的季节,每到春季,儿子海博的病情似乎就会加重,自残的现象更厉害。我们正和柯霞交谈,突然海博不停地用巴掌拍自己的脑袋,用脚使劲地跺着地面,柯霞心养娃不到2个月,我就放弃了科学育儿,抱着宝宝入睡导读有了宝宝以后,家长都希望自己掌握科学育儿的方式,用科学育儿的方式把孩子养育得更好,做到轻松育儿。但理想是丰满的,现实却是骨感的,以下这位宝妈,一开始也想要用科学育儿的方式哄哇入夏天最该喝这汤,养颜又解暑,一周喝一次,皮肤细嫩,美美过夏天夏天最该喝这汤,养颜又解暑,一周喝一次,皮肤细嫩,美美过夏天。俗话说春吃芽,夏吃瓜。夏季是瓜果蔬菜盛产的时候,黄瓜,丝瓜,苦瓜,冬瓜等蔬菜相继上市,这些应季的瓜果蔬菜,我们要多吃一夏天吃肉不如吃这菜,富含维生素,清热解毒滋养皮肤,不吃真可惜夏天吃肉不如吃这菜,富含维生素,清热解毒滋养皮肤,不吃真可惜了。进入夏季,家人们的口味变得挑剔起来,平时喜欢吃的鱼呀肉啊都不怎么动筷子,幸好我家就在农村,旁边就是菜园和沟渠,沟渠里鸡蛋和它的绝配,擦成丝拌好锅中一煎,出锅香味四溢,上桌就扫光鸡蛋和它的绝配,擦成丝拌好锅中一煎,出锅香味四溢,上桌就扫光。六月的天气,烈日当空,骄阳似火,人们一出门就会汗流浃背,人体很多营养会随着出汗而流失,这个时候,我们除了要多喝水,补充都知道这菜是三高克星,却不知道它还洁齿防龋除口臭,要多吃都知道这菜是三高克星,却不知道它还洁齿防龋除口臭,要多吃。六月,新鲜蔬菜相继上市,茄子黄瓜青椒等等,已经吃了好几天了,这几天,想要换换口味,吃一些当季为数不多的绿叶蔬菜。眼下,市场孕期蔬菜并非吃得越多越好,3种蔬菜少吃,对孕妈和胎儿都不好导读同事怀孕3个月了,今天上班的时候突然在公司里问我我就纳闷了,为什么孕妇不能多吃蔬菜呢?蔬菜不是挺有营养的吗?人家不都说多吃水果蔬菜好,到我这,咋不行了呢?我问她咋了?她告诉我说为推行三胎,官方决定给每孩每月500补助,连二胎都补助了老公问我了,打算要二胎吗?我反问他,你买彩票中奖了吗?如果是500万以下我不打算生。这不是笑话,就是我们家的日常。现在三胎政策下,很多人都在考虑生二胎。老公也是如此,打算让我要二胎