皇冠赌场 1

供给分析

要做安全方面包车型客车内容,依靠人脸识别通过和库中的脸比对后判定相似率来证实用户地点。

高速从图纸中分辨出人的新闻,用于寻人效能等。

事实上从安全的角度出发有过多可以回顾的。比如智能家居中的刷脸开门,支付软件的刷脸支付等都以例证。

当下,人脸识别应用于广大世界,如支付宝的用户认证,许多的能识外人心理的
AI,也正是人的人脸表情,还有能分析人的岁数之类,而那其间装有众多的难度,在此间小编想要分享的是2个应用柒牛
SDK 不难的达成人脸识其余办法,当然七牛的 SDK
中提供了好多的进展,在回去的 JSON
中蕴藏着如年龄等音信,那里就不举办分享了。那里大家要选择的是7牛云平弗罗茨瓦夫由阅面科技(science and technology)提供的
API。

人脸特征提取的步子

确实的人脸识别供给多多的学问,大体上简单的能够分成以下步骤:

  1.人脸检查测试(从图片中找到人脸):重返人脸地方和大小的参数。
  贰.人脸特征定位:一般 6九 点也许 10陆 个点对面部的表征定位,技术上有
Adaboost&haar,以及 MSRA 的 alignment。
  叁.人脸特征归一化(几何归1/灰度归一):前者对图像实行仿射变化使得分歧的脸能够开始展览比对,后者则能使图像显示更加多的底细以及减少强光光照的施用。
  四.特征提取-特征早先时期融合。(基于特征近似度的多特点融合)
  五.特征距之间的相距来比对相似度、叁氏距离。(马氏、欧氏 、巴氏)

以下为法定给出的功能:

操作进程中的注意事项

  1. 每张图片要先上传到 bucket 中才得以行使。
  2. API 对人脸相称再回去不小程度注重于用户的互连网带宽。
  3. 当用户互连网不佳的情事下供给很久的时日才能得到重临结果。
  4. 要经过压缩处理,一般识别的较为规范最多可将图纸压缩至 二五 kb 左右。

我们要开始展览如下的步调:

1)获得大家刚刚经过录像头拿走的人像
贰)对我们的人像图片实行削减
3)上传大家的人像图片到大家的 bucket 中
(那里要表Bellamy(Bellamy)点,七牛全部扶助的 API 都务求文件在华东的 Bucket 下)
四)获得我们上传的图片的链接地址
5)对链接举办 urlbase6四 加密(那里只要 import python 的 base6四 库即可)
6)请求 API
柒)获得网页的 JSON 格式数据
捌)通过 JSON 库对数据开始展览分析
九)判断人脸的相似度是还是不是合乎,输出结果
拾)删除 Bucket 中上传的一时半刻图片

  • 人脸 1v1 比对
  • 人脸关键点(10陆 点)
  • 人脸属性(年龄,性别)

回来的 JSON 格式分析

{"status":"ok","confidence":0.73065597}复制代码

咱俩得以看到重临的 JSON 消息很简单, status 的情致是打响和不成事,而
confidence 则是相似度,所以我们对回到的消息实行分析会很简单。 status
若是成功则为 ok,不成事则为 invalid。

咱俩要用的服务就是率先个:人脸 一v一 比对

人长相似度的判定

 

皇冠赌场 2

 

上表中所用的图纸都来协调互连网,从表数据大家能够大体将自个儿的形似度以 0.7为分界线。但是有趣的是,不精通为什么按杨幂(Mimi)实行整容的怎么相似度竟然低于杨幂(Yang Mi)和范冰冰女士的相似度(其余女星照的图形为国际范的人像),差异性其余相似度差距鲜明,所以就概括的依照表格定为
>0.柒 即可认为是作者。

急需分析

要做安全方面包车型客车内容,依靠人脸识别通过和库中的脸比对后判定相似率来表明用户身份。

快快从图片中分辨出人的新闻,用于寻人功效等。

骨子里从安全的角度出发有不少方可归纳的。比如智能家居中的刷脸开门,支付软件的刷脸支付等都是例证。

设置所需的库

在 python 中,笔者享受的这么些事例总共须要引进 陆 个库

1 #import SDK
2 #Python学习交流群:125240963,群内每天分享干货,包括最新的python企业案例学习资料和零基础入门教程,欢迎各位小伙伴入群学习交流
3 from qiniu import Auth,put_file,etag
4 import qiniu.config
5 import requestsimport base64
6 import json
7 from PIL import Image
8 import os

requests 库,json 库,PIL 库请自行安装;
base6肆 库和 OS 库为自带所以不必安装。

(由于电脑早已安装了较多库,所以对于那几个库是还是不是为自带也记得不太驾驭,要是出现了错误,请大家对应自身设置。)

人脸特征提取的步子

诚然的人脸识别须要过多的学问,大体上差不多的能够分成以下步骤:

  1.人脸检查评定(从图纸中找到人脸):重临人脸地点和尺寸的参数。
  二.人脸特征定位:壹般 6九 点或然 10陆 个点对脸部的性子定位,技术上有
Adaboost&haar,以及 MSRA 的 alignment。
  三.人脸特征归1化(几何归1/灰度归1):前者对图像实行仿射变化使得区别的脸能够拓展比对,后者则能使图像展现更加多的细节以及减弱光线光照的运用。
  四.特征提取-特征早先时期融合。(基于特征近似度的多特点融合)
  五.特征距之间的距离来比对相似度、三氏距离。(马氏、欧氏 、巴氏)

(以上依据从前查到整治的材料得出,只怕会存在认识错误)
能够看出若是平昔对人脸实行分析是很复杂的,而如今也有成都百货上千成熟的人脸识别库,像是知名的
OpenCV ,OpenB昂Cora,还有国产的 Seeta Face engine
等等很多,那里就先不介绍了,而采用开源云平台的 API
能够使大家的工作量愈来愈的小。

次第的达成

请见下方的代码,采集到的人脸为 face.jpg。
(那里用了杨幂女士的两张图片作为示范)

  1 #七牛云"人脸识别"功能的python实现方法:by xlxw
  2 #请得到自己的Secret和Access key用于上传图片到空间中进行处理
  3 #人像识别是七牛云的一项收费项目,价格为 ¥1.5/1000次 测试时请先存2元避免意外
  4 
  5 #import SDK
  6 from qiniu import Auth,put_file,etag
  7 import qiniu.config
  8 import requests
  9 import base64
 10 import json
 11 from PIL import Image
 12 import os
 13 
 14 #上传
 15 def upload(bucket,path,filename,key,url):
 16     token = key.upload_token(bucket, filename, 3600)
 17     print('正在上传..')
 18     reform,inform = put_file(token, filename, path)
 19     if reform != None:
 20         print('已经成功地将{}->>{}'.format(filename,bucket))
 21         print("正在处理您的图片...")
 22         url=url + '/' + filename
 23         path=path.split('/')[-1]
 24     else:
 25         print('这里出现了一个小错误.无法上传..')
 26 
 27 #调用API
 28 def apiget(urlbucket,url):
 29     try:
 30         url=urlbucket + '/001.jpg' + '?face-analyze/verification/url/' + url
 31         #标准对比的图片地址,名称为001.jpg
 32         r=requests.get(url)
 33         r.raise_for_status()
 34         r.encoding=r.apparent_encoding
 35         return r.text
 36     except:
 37         print("网络发生故障,请重试..")
 38 
 39 #base64 Encode
 40 def base64encode(url):
 41     try:
 42         print("正在加密链接..")
 43         enurl=base64.urlsafe_b64encode(bytes(url, "utf-8"))
 44         print("加密完成")
 45         enurl=str(enurl)
 46         enurl=enurl.split("'")[1]
 47         return enurl
 48     except:
 49         print("这里出现了一个问题,请重试..")
 50 
 51 #PIL 图片压缩
 52 def pilresize(per,path):
 53     im=Image.open(path)
 54     imsize=im.size
 55     sizex=int(imsize[0]*per)
 56     sizey=int(imsize[1]*per)
 57     im=im.resize((sizex,sizey))
 58     im.save('trans.jpg','JPEG')
 59     print('图片压缩完成,输出成功')
 60     print('{}->>({},{})'.format(imsize,sizex,sizey))
 61 
 62 def pilwork(path):
 63     try:
 64         size=os.path.getsize(path)
 65         size = float(size)
 66         kb=size/1024
 67         per=10/kb
 68         pilresize(per,path)
 69     except:
 70         print("请检查您的地址是否输入错误")
 71 
 72 
 73 #JSON分析
 74 def jsonanal(jtext):
 75     print("正在分析,请稍后..")
 76     rj=json.loads(jtext)
 77     stat=rj['status']
 78     confi=rj['confidence']
 79     return stat + ',' +str(confi)
 80 
 81 #主体
 82 def main():
 83     #填写你的 AK 和 SK
 84     accesskey = input('请输入您在七牛云的AccessKey:')
 85     secretkey = input('请输入您在七牛云的SecretKey:')
 86 
 87     #鉴定身份
 88     keyq=Auth(accesskey,secretkey)
 89 
 90     #所要操作的空间
 91     bucketname =input("请输入要操作的空间(公开)名字:")
 92 
 93     #所要操作空间的外链地址
 94     urlbucket = input("请输入空间所绑定的域名或者默认外链地址:")
 95 
 96     #判定操作类型
 97     while 1:
 98         order=input('请输入你需要进行的操作:')
 99         mode=order.split(' ')[0]
100         if mode == '识别':
101             path=order.split(' ')[1]
102             fname=path.split('/')[-1:][0]
103             unrl=urlbucket+'/trans.jpg'
104             print('正在压缩图片.请稍后..')
105             #调用函数
106             pilwork(path)  #压缩图片
107             print("正在上传token,请稍后..")
108             upload(bucketname,'./trans.jpg','trans.jpg',keyq,urlbucket) #上传文件
109             enurl=base64encode(unrl)   #base64加密
110             jtext=apiget(urlbucket,enurl) #调用七牛api并得到返回的json数据
111             result=jsonanal(jtext)  #分析返回的json,得到最终相似度
112             if result.split(',')[0] == 'invalid':
113                 print('识别发生了错误')
114             else:
115                 if eval(result.split(',')[1]) >= 0.7:
116                     print("识别成功,鉴定为本人,相似度为{:.1f}".format(eval(result.split(',')[1])*100))
117                 else:
118                     print("识别成功,鉴定不是本人,相似度过低")
119         if mode == '退出':
120             print("欢迎您的使用..")
121             break
122 
123 #终端提示显示
124 print("+----------------------------------------+")
125 print("|        欢迎使用七牛的人脸识别功能      |")
126 print("+----------------------------------------+")
127 print("|本程序须知:                            |")
128 print("|1.本程序测试图片为杨幂的人像,见face.jpg |")
129 print("|2.您需要提供服务的Accesskey,Secretkey  |")
130 print("|3.您需要提供 bucket名字和bucket外链地址 |")
131 print("+----------------------------------------+")
132 print("|使用方法:                               |")
133 print("|1.识别输入格式: 识别 图片位置(包括后缀)|")
134 print("|2.退出输入格式: 退出                   |")
135 print("+----------------------------------------+")
136 main()

程序运转的截图:

 

皇冠赌场 3

 

用到的杨幂(Mimi)的两张相片为:
(均出自百度图形)

 

皇冠赌场 4

 

(用于比对的科班人像图片)
(已用 PIL 压缩 x0.3,y0.3)

 

皇冠赌场 5

 

(用于比对的图纸)

作者:七牛云
链接:https://juejin.im/post/59719caef265da6c4741cdd7

 

七牛云 API 的优点

利用七牛云平台的 API
对于使用者的力量供给较低,开发速度快速,只要输入/再次来到即可,但更是适用于移动端。

操作进度中的注意事项

  1. 每张图片要先上传到 bucket 中才足以利用。
  2. API 对人脸相称再回来一点都不小程度注重于用户的互联网带宽。
  3. 当用户互联网倒霉的场所下需求很久的时光才能得到再次来到结果。
  4. 要经过压缩处理,1般识别的较为准确最多可将图片压缩至 25 kb 左右。

应用7牛 API 的接口准备

大家须求使用的有 Qiniu 库的上传/鉴权命令,以及 requests
库得四处理后的图像,以及 json 库得到重临给大家的保存在 JSON 中的音信。

此外7牛的那些接口和图表瘦身接口1样也是要付钱的,具体的价钱依据官方给的是(人脸识别相比服务
->¥一.伍/一千次 )能够先向账户充入 ¥二 防止不能够使用服务。

缓解难点的手续

为了简化那么些标题,所以本实例仅展现 上传->识别 ->重临结果
的历程,对于哪些通过电脑照相头取像,窗体制作仅提供格局和思路不开始展览详尽分享。

第2,大家先分析七牛云中以此 API 的接口 :

http://xxx.xxx.glb.clouddn.com/xxx.jpg?faceanalyze/verification/url/<urlSafeBase64URI><!-- 人脸一对一比对API-->

大家来分析下这些接口:
前面的http://xxx.xxx.glb.clouddn.com/xxx.jpg是大家刚刚上传的人像图片的链接地址,?face-analyze/verification/url/<urlSafeBase64ULacrosseI>
是 API 的接口,个中大家将最终的这句<urlSafeBase6四UXC90I>
单独拿出的话,因为这几个的意趣是要将大家用来人像比对的正式人像图片的地址经过
urlbase6四 加密后的地点音讯。

从而我们要拓展如下的步调:

一)得到我们刚刚经过录像头拿走的人像
贰)对大家的人像图片举行压缩
3)上传大家的人像图片到大家的 bucket 中
(那里要阐明一(Nutrilon)(Beingmate)(Karicare)点,柒牛全体帮助的 API 都务求文件在华东的 Bucket 下)
四)得到我们上传的图形的链接地址
5)对链接举办 urlbase6四 加密(那里只要 import python 的 base6四 库即可)
6)请求 API
柒)获得网页的 JSON 格式数据
8)通过 JSON 库对数据开始展览辨析
9)判断人脸的相似度是不是吻合,输出结果
10)删除 Bucket 中上传的一时图片

回到的 JSON 格式分析

{"status":"ok","confidence":0.73065597}

咱俩能够看出再次回到的 JSON 消息很简单, status 的意味是大功告成和不成事,而
confidence 则是相似度,所以大家对回到的音讯举行分析会很简短。 status
借使成功则为 ok,不成事则为 invalid。

人长相似度的论断

皇冠赌场 6

上表中所用的图片都来协调网络,从表数据大家得以大体将自身的一般度以 0.七为分界线。可是有趣的是,不领会干什么按杨幂(Mimi)实行整容的干什么相似度竟然低于杨幂(Mimi)和范冰冰(英文名:Fan Bingbing)的相似度(其余女星照的图片为范冰冰女士的人像),不相同性别的相似度差别明显,所以就总结的依照表格定为
>0.七 即可认为是自家。

设置所需的库

在 python 中,作者享受的那一个事例总共要求引入 6 个库

#import SDK
from qiniu import Auth,put_file,etag
import qiniu.config
import requestsimport base64
import json
from PIL import Image
import os

 

requests 库,json 库,PIL 库请自行安装;
base64 库和 OS 库为自带所以不要安装。

(由于电脑已经安装了较多库,所以对于这一个库是还是不是为自带也记得不太知道,假使出现了错误,请我们对应自身设置。)

次第的落到实处

请见下方的代码,采集到的人脸为 face.jpg。
(那里用了杨幂女士的两张图片作为示范)

#七牛云"人脸识别"功能的python实现方法:by xlxw
#请得到自己的Secret和Access key用于上传图片到空间中进行处理
#人像识别是七牛云的一项收费项目,价格为 ¥1.5/1000次 测试时请先存2元避免意外

#import SDK
from qiniu import Auth,put_file,etag
import qiniu.config
import requests
import base64
import json
from PIL import Image
import os

#上传
def upload(bucket,path,filename,key,url):
    token = key.upload_token(bucket, filename, 3600)
    print('正在上传..')
    reform,inform = put_file(token, filename, path)
    if reform != None:
        print('已经成功地将{}->>{}'.format(filename,bucket))
        print("正在处理您的图片...")
        url=url + '/' + filename
        path=path.split('/')[-1]
    else:
        print('这里出现了一个小错误.无法上传..')

#调用API
def apiget(urlbucket,url):
    try:
        url=urlbucket + '/001.jpg' + '?face-analyze/verification/url/' + url
        #标准对比的图片地址,名称为001.jpg
        r=requests.get(url)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        return r.text
    except:
        print("网络发生故障,请重试..")

#base64 Encode
def base64encode(url):
    try:
        print("正在加密链接..")
        enurl=base64.urlsafe_b64encode(bytes(url, "utf-8"))
        print("加密完成")
        enurl=str(enurl)
        enurl=enurl.split("'")[1]
        return enurl
    except:
        print("这里出现了一个问题,请重试..")

#PIL 图片压缩
def pilresize(per,path):
    im=Image.open(path)
    imsize=im.size
    sizex=int(imsize[0]*per)
    sizey=int(imsize[1]*per)
    im=im.resize((sizex,sizey))
    im.save('trans.jpg','JPEG')
    print('图片压缩完成,输出成功')
    print('{}->>({},{})'.format(imsize,sizex,sizey))

def pilwork(path):
    try:
        size=os.path.getsize(path)
        size = float(size)
        kb=size/1024
        per=10/kb
        pilresize(per,path)
    except:
        print("请检查您的地址是否输入错误")


#JSON分析
def jsonanal(jtext):
    print("正在分析,请稍后..")
    rj=json.loads(jtext)
    stat=rj['status']
    confi=rj['confidence']
    return stat + ',' +str(confi)

#主体
def main():
    #填写你的 AK 和 SK
    accesskey = input('请输入您在七牛云的AccessKey:')
    secretkey = input('请输入您在七牛云的SecretKey:')

    #鉴定身份
    keyq=Auth(accesskey,secretkey)

    #所要操作的空间
    bucketname =input("请输入要操作的空间(公开)名字:")

    #所要操作空间的外链地址
    urlbucket = input("请输入空间所绑定的域名或者默认外链地址:")

    #判定操作类型
    while 1:
        order=input('请输入你需要进行的操作:')
        mode=order.split(' ')[0]
        if mode == '识别':
            path=order.split(' ')[1]
            fname=path.split('/')[-1:][0]
            unrl=urlbucket+'/trans.jpg'
            print('正在压缩图片.请稍后..')
            #调用函数
            pilwork(path)  #压缩图片
            print("正在上传token,请稍后..")
            upload(bucketname,'./trans.jpg','trans.jpg',keyq,urlbucket) #上传文件
            enurl=base64encode(unrl)   #base64加密
            jtext=apiget(urlbucket,enurl) #调用七牛api并得到返回的json数据
            result=jsonanal(jtext)  #分析返回的json,得到最终相似度
            if result.split(',')[0] == 'invalid':
                print('识别发生了错误')
            else:
                if eval(result.split(',')[1]) >= 0.7:
                    print("识别成功,鉴定为本人,相似度为{:.1f}".format(eval(result.split(',')[1])*100))
                else:
                    print("识别成功,鉴定不是本人,相似度过低")
        if mode == '退出':
            print("欢迎您的使用..")
            break

#终端提示显示
print("+----------------------------------------+")
print("|        欢迎使用七牛的人脸识别功能      |")
print("+----------------------------------------+")
print("|本程序须知:                            |")
print("|1.本程序测试图片为杨幂的人像,见face.jpg |")
print("|2.您需要提供服务的Accesskey,Secretkey  |")
print("|3.您需要提供 bucket名字和bucket外链地址 |")
print("+----------------------------------------+")
print("|使用方法:                               |")
print("|1.识别输入格式: 识别 图片位置(包括后缀)|")
print("|2.退出输入格式: 退出                   |")
print("+----------------------------------------+")
main()

 

 

程序运维的截图:

皇冠赌场 7

用到的杨幂(Mimi)的两张相片为:
(均出自百度图形)

皇冠赌场 8

(用于比对的业老婆像图片)
(已用 PIL 压缩 x0.3,y0.3)

皇冠赌场 9

(用于比对的图形)

小结和拓展

总结

和我们分享柒牛的 API 大概甘休了(说不定以后有更加好玩的 API
也会拿来享受经历)。柒牛还有广大精美方便的 API
能够一本万利大家的使用.在那之间也学习到了众多的文化,比如许多库的熟练精通,像是
requests 库、bs肆 库、 json 库当然还有主演 Qiniu 库。

拓展

能够用 python 的 QT 库开发图形界面,而 VideoCapture
库可用来调用电脑的录制头进行拍片,然后通过本文的点子就能促成不难的人像识别了(你供给上传标准图片到
Qiniu 的 bucket 里)。

可其余再参预一些规范图片,如低光,不戴老花镜等等的图片,然后设计1个评判算法来适应各个种种的情形.本文就不再举行实行,有趣味的心上人可以试试。


推荐介绍阅读

皇冠赌场 10

申请方法:有越多好玩的著述分享给我们?扫描上方二维码和美眉队长接头,即可成为【入手实际操作】种类玩家。

 

相关文章