换脸!
这段时间,deepfakes搞得火热,比方说把《射雕英雄传》里的朱茵换成了杨幂,看下面的图!毫无违和感!
其实早在之前,基于AI换脸的技术就得到了应用,比方说《速度与激情7》里面的演员保罗。沃克,由于发生意外,
后期的视频都是由他的兄弟完成拍摄,然后再对其换脸,最终也就是我们影院看到的效果。
当然,也有人把这项技术应用在其他的领域,例如把某种电影的女主换成了盖尔。加朵(《神奇女侠》的扮演者),,
这真的是对“技术是一把又刃剑”阐述的十分到位…
关于deepfakes这里不再详细说明,好吧,小编承认是来蹭热度的…
下面来介绍一种对照片的简单换脸方法。
本篇介绍的换脸方法需要借助脸+ +,关于脸+ +的API,大家可自行查看说明文档,都比较简单,小编在这里就不做具体
说明了:
文档地址:https://console.faceplusplus.com.cn/documents/20813963
pip安装要求 pip安装simplejson >之前
脸+ +网址:https://console.faceplusplus.com.cn/dashboard
调用的库
进口的要求 进口simplejson 进口json 进口base64第一步,获取人脸关键点,代码如下说述:
def find_face (imgpath): 打印(“寻找”) http_url=' https://api-cn.faceplusplus.com/facepp/v3/detect ' data=https://www.yisu.com/zixun/{“api_key”:“自己申请的, “api_secret”:“自己申请”,“image_url”: imgpath、“return_landmark”: 1} 文件={" image_file”:开放(imgpath, rb)}=响应请求。帖子(http_url, data=https://www.yisu.com/zixun/data,文件=文件) req_con=response.content.decode (utf - 8) req_dict=json.JSONDecoder () .decode (req_con) this_json=simplejson.dumps (req_dict) this_json2=simplejson.loads (this_json) 面临=this_json2['脸'] list0[0]=脸 矩形=list0 (“face_rectangle”) #打印(矩形) 返回矩形第二步,换脸,其中图片的大小应不超过2 m,代码如下所述:
#数字表示换脸的相似度 def merge_face (image_url_1 image_url_2 image_url,数字): ff1=find_face (image_url_1) ff2=find_face (image_url_2) rectangle1=str (str (ff1['高级'])+”、“+ str (ff1['左'])+”、“+ str (ff1[“宽度”])+”、“+ str (ff1['高'])) rectangle2=str (ff2['高级'])+”、“+ str (ff2['左'])+”、“+ str (ff2[“宽度”])+”、“+ str (ff2['高']) url_add=" https://api-cn.faceplusplus.com/imagepp/v1/mergeface " f1=开放(image_url_1 rb) f1_64=base64.b64encode (f1.read ()) f1.close () f2=开放(image_url_2 rb) f2_64=base64.b64encode (f2.read ()) f2.close () data=https://www.yisu.com/zixun/{“api_key”:“自己申请”,“api_secret”:“自己申请的, “template_base64”: f1_64,“template_rectangle”: rectangle1, “merge_base64”: f2_64,“merge_rectangle”: rectangle2,“merge_rate”:}=响应请求。帖子(url_add, data=https://www.yisu.com/zixun/data) req_con=response.content.decode (utf - 8) req_dict=json.JSONDecoder () .decode (req_con) 结果=req_dict(“结果”) imgdata=https://www.yisu.com/zixun/base64.b64decode(结果) 文件=开放(image_url,“世界银行”) file.write (imgdata) file.close ()测试
def测试(): image1=r F: \ GXT.bmp” image2=r F: \ MSC.bmp” 形象=r F: \ MEG.bmp” merge_face (image2 image1,形象,90)测试结果:
左图:关某某
右图:马某某
中图:合并