许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  从零开始搭建人脸106点关键点检测模型(一):准备数据集——调用Face++ API检测106关键点

从零开始搭建人脸106点关键点检测模型(一):准备数据集——调用Face++ API检测106关键点

阅读数 7
点赞 0
article_banner

       无聊的发慌打算写个搭建人脸106点 关键点检测  模型的简易教程,包括数据集准备,模型搭建,训练以及 推理  测试,保证简单易懂。第一步,就是数据集的准备。我们首先想到的就是开源的人脸关键点数据集300W,WFLW等。但是开源的缺少106点的数据集,所以我们可以调用face++的api标注106关键点作为我们训练的数据集。(虽然不是很准)。

一.下载数据。

我们选用WFLW数据集的图片(商汤开源的人脸98点数据集),下面是下载链接。链接:https://pan.baidu.com/s/1XkUe-mJQmnrVjy84DkjRNQ

   提取码:eq90

二.调用face++api标注人脸。

https://www.faceplusplus.com.cn/官网链接。进入官网点击右侧 控制台 会进入注册页面,注册一下。到控制台应用管理创建一个APIkey。创建好会有API Key和API Secret后面会有用。准备就绪后,下面直接上调用代码。代码里的Key和Secret换上你自己的。还有下载下来的图片路径换上你的路径。

# -*- coding: utf-8 -*-import urllib.requestimport urllib.errorimport timeimport cv2import json,osimport numpy as nphttp_url = 'https://api-cn.faceplusplus.com/facepp/v3/detect'key = ""secret = ""f=open('WFLW_106landmark.txt','a')t=1dir_path=r"https://www.gofarlic.com\py\datasets\WFLW_ALL"img_names=os.listdir(dir_path)for img_name in img_names:    # if t<6551:    #     t=t+1    #     continue    filepath=os.path.join(dir_path,img_name)    #filepath = "3.jpg"     boundary = '----------%s' % hex(int(time.time() * 1000))    data = []    data.append('--%s' % boundary)    data.append('Content-Disposition: form-data; name="%s"\r\n' % 'api_key')    data.append(key)    data.append('--%s' % boundary)    data.append('Content-Disposition: form-data; name="%s"\r\n' % 'api_secret')    data.append(secret)    data.append('--%s' % boundary)    fr = open(filepath, 'rb')    data.append('Content-Disposition: form-data; name="%s"; filename=" "' % 'image_file')    data.append('Content-Type: %s\r\n' % 'application/octet-stream')    data.append(fr.read())    fr.close()    data.append('--%s' % boundary)    data.append('Content-Disposition: form-data; name="%s"\r\n' % 'return_landmark')    data.append('2')    data.append('--%s' % boundary)    data.append('Content-Disposition: form-data; name="%s"\r\n' % 'return_attributes')    data.append(        "gender,age,smiling,headpose,facequality,blur,eyestatus,emotion,ethnicity,beauty,mouthstatus,eyegaze,skinstatus")    data.append('--%s--\r\n' % boundary)     for i, d in enumerate(data):        if isinstance(d, str):            data[i] = d.encode('utf-8')     http_body = b'\r\n'.join(data)     # build http request    req = urllib.request.Request(url=http_url, data=http_body)     # header    req.add_header('Content-Type', 'multipart/form-data; boundary=%s' % boundary)     try:        # post data to server        resp = urllib.request.urlopen(req, timeout=200)        # get response        qrcont = resp.read()        # if you want to load as json, you should decode first,        # for example: json.loads(qrount.decode('utf-8'))        #print(qrcont.decode('utf-8'))        result=json.loads(qrcont.decode('utf-8'))        #print(1)        #img=cv2.imread(filepath)        for i in range(result['face_num']):            if 'landmark' not in result['faces'][i].keys():                continue            landmark=result['faces'][i]['landmark']            landmark_list=[]            for dict_key in landmark.keys():                #print(landmark.keys())                landmark_list.append([landmark[dict_key]['x'],landmark[dict_key]['y']])                #cv2.circle(img,(landmark[dict_key]['x'],landmark[dict_key]['y']),2,(0,0,255))            landmark_array=np.array(landmark_list)            landmark_str = ' '.join(list(map(str,landmark_array.reshape(-1).tolist())))            label = '{} {}\n'.format(img_name, landmark_str)            f.writelines(label)        # cv2.namedWindow('face++ landmark',0)        # cv2.imshow('face++ landmark',img)        # cv2.waitKey(0)        print(t)        t=t+1    except urllib.error.HTTPError as e:        print(e.read().decode('utf-8')) f.close()

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空