Linux人工智能开发实例 课件 第7章 AI人脸智能识别Linux开发案例_第1页
Linux人工智能开发实例 课件 第7章 AI人脸智能识别Linux开发案例_第2页
Linux人工智能开发实例 课件 第7章 AI人脸智能识别Linux开发案例_第3页
Linux人工智能开发实例 课件 第7章 AI人脸智能识别Linux开发案例_第4页
Linux人工智能开发实例 课件 第7章 AI人脸智能识别Linux开发案例_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章AI人脸智能识别Linux开发案例AI人脸智能识别Linux开发案例本章分析Linux技术在智能家居网关中的应用,共分2个模块:1.AI人脸识别应用开发框架:先进行系统总体设计分析,简述人脸识别开发平台,分析PythonWeb框,实现AI人脸识别应用框架设计。2.车牌识别功能开发:学习百度人脸识别接口,分析AI人脸识别功能程序和闸机控制功能,实现AI人脸识别功能开发。第7章AI人脸智能识别Linux开发案例

7.1AI人脸识别应用开发框架AI人脸智能识别Linux开发案例人脸识别一种依据人的面部特征,自动进行身份识别的一种生物识别技术。人工智能时代快速来临人脸识别是当前比较热门的技术,应用广泛,例如刷脸打卡、刷脸App,身份识别,人脸门禁,广泛应用在智能楼宇、智慧零售、智慧教育、智慧旅游等等领域。7.1.1系统总体设计与分析

系统需求分析AI人脸智能识别Linux开发案例人脸识别利用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸图像进行一系列的相关应用操作,包括图像采集、特征定位、身份的确认和查找等等。人脸注册与识别过程如图所示。7.1.1系统总体设计与分析

系统需求分析AI人脸智能识别Linux开发案例人脸识别技术是基于人的脸部特征,对输入的人脸图像或者视频流.首先判断其是否存在人脸,如果存在人脸,则进一步的给出每个脸的位置、大小和各个主要面部器官的位置信息。并依据这些信息,进一步提取每个人脸中所蕴涵的身份特征,并将其与已知的人脸进行对比,从而识别每个人脸的身份。构建一个完整的人脸识别系统主要包括三个方面的技术:人脸检测、人脸跟踪、人脸对比。7.1.1系统总体设计与分析

人脸识别技术(3)人脸比对人脸比对通过对已检测的人脸图像或人脸特征与数据库中的图像或特征进行逐一对比,计算不同域下的距离找到在数据库中最佳的匹配对象。人脸对比方法分为特征向量与面纹模板两种方法。(2)人脸跟踪人脸跟踪多是指在对已检测到人脸的视频资料中进行持续的目标跟踪。人脸跟踪可以被认为是在动态的时间域上进行人脸连续检测的方法,人脸跟踪可以将单一图像的面部特征有机的结合到时间域上,使动态的人脸检测操作不仅仅依靠单一图像的模型进行判断,也加入单一特征在时间域的变化特征进行判断,从而对连续帧中每幅图像中的人脸位置进行精确估计。人脸跟踪分为模型跟踪法、运动信息跟踪法、人脸局部特征跟踪法等。(1)人脸检测人脸检测技术主要是指在各种不同动态或静态的生活场景与复杂的环境背景中,通过判断图像中是否存在可被检测的人脸,并将其进行分离和剪裁出可以被实验所应用的面部图像,有下列几种方法:参考模板法、人脸规则法、样本学习法、特征子脸法。AI人脸智能识别Linux开发案例智能人脸识别系统的硬件主要边缘计算网关、高清摄像头与物联网控制节点构成。边缘计算网关连接高清摄像头通过百度人脸识别接口进行人脸注册,对摄像头捕捉到的人脸图片识别,如果识别成功连接物联网云平台对闸机进行联动控制,PC端的WEB管理界面可进行人脸注册、管理与显示结果,硬件结构框图如图所示。7.1.1系统总体设计与分析

系统总体设计AI人脸智能识别Linux开发案例中文车牌识别系统,其软件模块主要由百度人脸识别应用程序、智云物联网应用程序、Django服务软件、PC端Web管理软件构成,项目主要开发语言为Python语言,软件总体结构框如图所示。7.1.1系统总体设计与分析

系统总体设计AI人脸智能识别Linux开发案例当前的人脸识别技术分为API和SDK调用两种法方式,API需要实时联网,SDK调用可以离线使用。(1)虹软免费SDK需要注册才能使用,官网上有很多教程,接入简单。(2)Face++

使用Face++人脸比对SDK,应用可以在移动设备上离线运行Face++人脸识别算法,实时检测视频流中的所有人脸,并进行高准确率的人脸比对,支持iOS和Android平台。(3)百度人脸识别云服务 基于百度深度学习能力的人脸识别技术,提供人脸检测与属性分析、人脸对比、人脸搜索、活体检测等能力。7.1.2人脸识别开发平台AI人脸智能识别Linux开发案例7.1.3PythonWeb框架Django框架介绍Django是一个开放源代码的Web应用框架,Django采用了MVC的软件设计模式,即模型M,视图V和控制器C,优势是可以简便、快速的开发数据库驱动的网站。Django是Python编程语言驱动的一个开源模型、视图、控制器风格的Web应用程序框架。Django的MVC职责如表所示。MVC控制器部分由Django框架的URLconf实现。URLconf机制是使用正则表达式匹配URL,然后调用合适的Python函数。框架封装了控制层,与数据交互都是数据库表的读、写、删除和更新操作。开发程序的时候,只需要调用相应的方法,编写非常少的代码实现很多功能,大大提高了工作效率。层次职责模型(Model),数据存取层处理与数据相关的所有事务:如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。模板(Template),表现层处理与表现相关的决定:如何在页面或其他类型文档中进行显示。视图(View),业务逻辑层存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。AI人脸智能识别Linux开发案例7.1.3PythonWeb框架Django框架项目创建人脸识别应用采用Django框架开发,可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。其目录如图所示。存放AI的相关的模型文件如下:(1)utils文件夹:存放相关的工具类,比如日期处理类、文件处理类等。(2)views文件夹:存放相关的定义URL相应函数。(3)static文件夹:存放javascript、css、png等相关的静态资源文件。(4)templates文件夹:存放等html5页面文件。(5)manage.py:是Django用于管理本项目的命令行工具,站点的运行、静态文件收集等。AI人脸智能识别Linux开发案例7.1.3PythonWeb框架(环境配置详细请查看文档)Django框架项目创建Django项目创建测试1)进入/home/zonesion/目录,使用django-adminstartprojectHelloAI来创建HelloAI项目。test@rk3399:~/work$django-adminstartprojectHelloAItest@rk3399:~/work$cdHelloAI/test@rk3399:~/work/HelloAI$tree.├──HelloAI│

├──__init__.py│

├──settings.py│

├──urls.py│

└──wsgi.py└──manage.py

1directory,5filesAI人脸智能识别Linux开发案例7.1.3PythonWeb框架Django框架项目创建Django项目创建测试2)进入HelloAI目录,输入命令python3manage.pyrunserver:8000,启动服务。test@rk3399:~/work/HelloAI$python3manage.pyrunserver:8000Performingsystemchecks...

Systemcheckidentifiednoissues(0silenced).

Youhave15unappliedmigration(s).Yourprojectmaynotworkproperlyuntilyouapplythemigrationsforapp(s):admin,auth,contenttypes,sessions.Run'pythonmanage.pymigrate'toapplythem.

September17,2020-08:59:39Djangoversion2.1.7,usingsettings'HelloAI.settings'Startingdevelopmentserverat:8000/QuittheserverwithCONTROL-C.AI人脸智能识别Linux开发案例7.1.3PythonWeb框架Django框架项目创建Django项目创建测试打开网关上的chromium浏览器,在地址栏输入:8000,打开django服务页面,如图所示。AI人脸智能识别Linux开发案例7.1.3PythonWeb框架Django框架项目创建Django项目创建测试3)视图和URL配置在之前创建的HelloAI目录下的HelloAI目录新建一个view.py文件,并输入代码:test@rk3399:~/work/HelloAI$lsdb.sqlite3HelloAImanage.pytest@rk3399:~/work/HelloAI$cdHelloAI/test@rk3399:~/work/HelloAI/HelloAI$ls__init__.py__pycache__settings.pyurls.pywsgi.pytest@rk3399:~/work/HelloAI/HelloAI$viview.py

fromdjango.httpimportHttpResponse

defhello(request):returnHttpResponse("HelloAI!")AI人脸智能识别Linux开发案例7.1.3PythonWeb框架Django框架项目创建Django项目创建测试接着,绑定URL与视图函数。打开urls.py文件,删除原来代码,将以下代码复制粘贴到urls.py文件中:fromdjango.conf.urlsimporturlfrom.importview

urlpatterns=[url(r'^$',view.hello),]完成后,启动Django开发服务器,并在浏览器访问打开浏览器并访问,如下图所示。AI人脸智能识别Linux开发案例7.1.4开发实践:AI人脸识别应用框架1、项目硬件连接与组网配置本项目中使用到智能网关、高清摄像头、SensorEH传感器节点。高清摄像头连接网关的USB3.0接口,如左图所示。如果组网设置成功,通过ZCloudTools工具可以查看到网络拓扑如右图所示。AI人脸智能识别Linux开发案例7.1.4开发实践:AI人脸识别应用框架2、启动机器视觉服务双击运行网关桌面上的“机器视觉”运行脚本,启动服务,如左图所示。打开Chrome浏览器,点击浏览器书签栏的“人工智能综合应用”,进入人工智能综合应用系统,即可进行相关应用的演示如右图所示。AI人脸智能识别Linux开发案例7.1.4开发实践:AI人脸识别应用框架3、人工智能应用参数设置在“人工智能综合应用系统”界面中,选择“机器视觉”进入子功能界面,在界面右上单击设置图标,打开参数设置界面,对智云帐号、节点MAC、百度帐号进行设置如图所示。Linux网关部分输入,设置的智云ID、KEY与EH节点的mac地址。百度AI部分,输入帐号信息。AI人脸智能识别Linux开发案例7.1.4开发实践:AI人脸识别应用框架4、人脸闸机功能测试参数设置完成后,机器视觉界面选择“智能控制”功能。打开智能控制后,选择“人脸闸机”应用。运行界面如图左所示。选择“人脸注册”功能,摄像头对准人脸,如果从视频流中检测到人脸会出现红色方框。在下方的姓名输入框输入用户姓名,点击“人脸注册”按钮,如注册成功会显示如图右所示。AI人脸智能识别Linux开发案例7.1.4开发实践:AI人脸识别应用框架4、人脸闸机功能测试在“人脸管理”功能中,可以查看到刚才成功注册的用户照片,如左上图所示。选择“人脸识别”功能,如果应用识别到当前人脸已经在人脸库中注册,会出现如右图所示。识别成功后,无线节点上的闸机会进行“打开”动作,5秒后进行“关闭”动作,如左下图所示。AI人脸智能识别Linux开发案例7.1.5小结学习了人脸识别的应用开发技术,首先了解人工智能与人脸识别技术的相关概念,常见人脸识别开发架构,PythonWeb框架。学习并掌握Django框架项创建与使用。实践环节通过人脸闸机项目的部署与测试,熟悉项目中的人脸注册与人脸识别功能。AI人脸智能识别Linux开发案例

7.1.6思考与拓展1、简述人脸注册与人脸识别的过程?2、常见的人脸识别开发平台有哪些,各有什么特点?3、简述Django框架的特性?第7章AI人脸智能识别Linux开发案例

7.2AI人脸识别功能开发AI人脸智能识别Linux开发案例用于从人脸库中新增用户,可以设定多个用户所在组,及组内用户的人脸图片,典型应用场景:构建您的人脸库,如会员人脸注册,已有用户补全人脸信息等。人脸库、用户组、用户、用户下的人脸层级关系如图所示。7.2.1百度人脸识别接口

人脸注册接口说明:关于人脸库的设置限制每个开发者账号只能创建一个人脸库;每个人脸库下,用户组(group)数量没有限制;每个用户组(group)下,可添加最多300000张人脸,如每个uid注册一张人脸,则最多300000个用户uid;每个用户(uid)所能注册的最大人脸数量没有限制;AI人脸智能识别Linux开发案例7.2.1百度人脸识别接口

人脸注册接口人脸注册请求参数要求:所有图片经base64编码后的图片数据总和不超过10M。人脸注册返回数据参数如表所示。参数是否必选类型说明uid是string用户id(由数字、字母、下划线组成),长度限制128Bimage是byte[]图片数据group_id是string用户组id(由数字、字母、下划线组成),长度限制48user_info是string新的user_info信息action_type否string如果为replace时,则uid不存在时,不报错,会自动注册。不存在该参数时,如果uid不存在会提示错误字段是否必选类型说明log_id是number请求标识码,随机数,唯一AI人脸智能识别Linux开发案例7.2.1百度人脸识别接口

人脸库管理相关接口人脸库管理相关接口,要完成1:N或者M:N识别,首先需要构建一个人脸库,用于存放所有人脸特征,相关接口如下:人脸注册:向人脸库中添加人脸人脸更新:更新人脸库中指定用户下的人脸信息人脸删除:删除指定用户的某张人脸用户信息查询:查询人脸库中某个用户的详细信息获取用户人脸列表:获取某个用户组中的全部人脸列表获取用户列表:查询指定用户组中的用户列表复制用户:将指定用户复制到另外的人脸组删除用户:删除指定用户创建用户组:创建一个新的用户组删除用户组:删除指定用户组组列表查询:查询人脸库中用户组的列表AI人脸智能识别Linux开发案例7.2.1百度人脸识别接口

人脸识别接口人脸识别用于计算指定组内用户,与上传图像中人脸的相似度。识别前提为您已经创建了一个人脸库。典型应用场景:如人脸闸机,考勤签到,安防监控等。说明:人脸识别返回值不直接判断是否是同一人,只返回用户信息及相似度分值。说明:推荐可判断为同一人的相似度分值为80,您也可以根据业务需求选择更合适的阈值。publicstaticvoidFaceIdentify(){varclient=newBaidu.Aip.Face.Face("ApiKey","SecretKey");varimage1=File.ReadAllBytes("图片文件路径");

varresult=client.User.Identify(image1,new[]{"groupId"},1,1);}AI人脸智能识别Linux开发案例7.2.1百度人脸识别接口

人脸识别接口人脸识别请求参数详情如表所示。参数是否必选类型说明group_id是string用户组id(由数字、字母、下划线组成)列表,每个groupid长度限制48image是byte[]图像数据ext_fields否string特殊返回信息,多个用逗号分隔,取值固定:目前支持faceliveness(活体检测)user_top_num否number返回用户top数,默认为1,最多返回5个字段是否必选类型说明log_id是number请求唯一标识码,随机数result_num是number返回结果数目,即:result数组中元素个数ext_info否array对应参数中的ext_fields+faceliveness否string活体分数,如0.49999。活体检测参考分数0.4494,以上则可认为是活体(测试期间result是array结果数组+group_id是string对应的这个用户的group_id+uid是string匹配到的用户id+user_info是string注册时的用户信息+scores是array结果数组,数组元素为匹配得分,topn。得分[0,100.0]AI人脸智能识别Linux开发案例若要实现人脸简易的验证,首先需要录入使用者的人脸特征,调用百度人脸库的注册函数,会将脸部特征向量存储在人脸库中,代码在face_get/face_gate/views/face_manage.py如下:7.2.2AI人脸识别功能程序分析

人脸注册功能分析defface_register(request):image_type="BASE64"image_detail=image_process._save_image(request.FILES['avatar'].name,settings.AVATAR_PATH,request.FILES['avatar'])image=baidu_api_utils.get_file_content(image_detail)image64=str(base64.b64encode(image),'utf-8')options=dict()options['action_type']='REPLACE'user_id=request.POST.get("username")rsp=FaceManage.client.addUser(image64,image_type,FaceManage.group_id,user_id,options)print(rsp)_result={'error_code':200}

ifrsp['error_msg']!='SUCCESS':_result['error_code']=500rsp_json=JsonResponse(_result)

returnrsp_jsonAI人脸智能识别Linux开发案例以摄像头捕捉到的人脸图片,对该图片进行特征编码,再与特征库中所有人脸特征进行对比,调用face_pare_faces()函数,返回一个布尔值的列表,根据布尔值列表判断是否为同一个人如图所示。7.2.2AI人脸识别功能程序分析

人脸识别功能分析AI人脸智能识别Linux开发案例调用百度人脸库的识别函数,将摄像头采集到的人脸与人脸库中的人脸进行1:N的比对,匹配上了则识别到目标人物,代码如下:7.2.2AI人脸识别功能程序分析

人脸识别功能分析@staticmethoddefface_recognition(request):image_type="BASE64"group_id_list=FaceManage.group_id

image_detail=image_process._save_image(str(int(time.time()))+'_'+request.FILES['headImg'].name,settings.TEMP_UPLOAD_PATH,request.FILES['headImg'])image=baidu_api_utils.get_file_content(image_detail)image64=str(base64.b64encode(image),'utf-8')rsp=FaceManage.client.search(image64,image_type,group_id_list)print(rsp)_result={'error_code':200}

ifrsp['error_msg']!='SUCCESS':_result['error_code']=500else:score=rsp['result']['user_list'][0]['score']ifscore<90:_result['error_code']=500else:_result['msg']=rsp['result']['user_list'][0]['user_id']rsp_json=JsonResponse(_result)AI人脸智能识别Linux开发案例在程序中导入了物联网设备控制接口文件:face_gate/utils/face_control.py,若通过人脸验证后,调用face_control.py中的face_control()函数来对服务器进行连接,并向服务器发送控制ETC闸机请求,其调用的方法如下。7.2.2AI人脸识别功能程序分析7.2.3闸机控制功能分析fromdjango.httpimportJsonResponsefromface_gate.utils.websocket_controllerimportWebsocketControllerimporttimeclassFaceControl(object):def__init__(self):zhiyun_id=""#云服务idzhiyun_key=""#云服务keyzhiyun_server=":28080"#云服务server地址self.sensor_eh_mac=""#sersoreh识别类节点的mac地址self.ws=WebsocketController(zhiyun_id,zhiyun_key,zhiyun_server)self.message=self.ws.connect()

defface_control(self):ifself.sensor_eh_macisnotNoneandself.sensor_eh_mac!='':self.ws.send_message(self.sensor_eh_mac,"{OD1=1,D1=?}",1)time.sleep(5)self.ws.send_message(self.sensor_eh_mac,"{CD1=1,D1=?}",1)defface_control_api(request):result={'error_code':200}try:gc=FaceControl()gc.face_control()exceptExceptionase:print("websocketisnotconneted")result['error_code']=500returnJsonResponse(result)AI人脸智能识别Linux开发案例1、修改配置信息1)进入本节实验目录face_register,并查看当前目录文件,如下:7.2.4开发实践:AI人脸识别功能开发

人脸注册与管理测试test@rk3399:~/work$cdface_register/test@rk3399:~/work/face_register$lsdb.sqlite3face_gatemanage.pystatictemplates2)设置百度帐号信息,进入face_register/face_gate/views目录下,使用vi编辑器打开face_manage.py文件。test@rk3399:~/work/face_register$cdface_gate/test@rk3399:~/work/face_register/face_gate$ls__init__.py__pycache__settings.pyurls.pyutilsviewswsgi.pytest@rk3399:~/work/face_register/face_gate$cdviews/test@rk3399:~/work/face_register/face_gate/views$lsface_manage.py__init__.py__pycache__test@rk3399:~/work/face_register/face_gate/views$viface_manage.pyAI人脸智能识别Linux开发案例2、启动服务器返回到face_register目录,输入服务启动命令python3manage.pyrunserver:8000。7.2.4开发实践:AI人脸识别功能开发

人脸注册与管理测试test@rk3399:~/work/face_register$lsdb.sqlite3face_gatemanage.pystatictemplatestest@rk3399:~/work/face_register$python3manage.pyrunserver:8000Django服务启动成功,运行信息如下:Performingsystemchecks...systemcheckidentifiednoissues(osilenced).Youhave12unappliednigration(s).Yourprojectnaynotworkproperlyuntilyouapplythenigrationsforapp(s):auth,contenttypes,sessions.Run'pythonmanage.pymigrate'toapplythen.

May06,2020-17:57:40Djangoversion2.1.7,usingsettings'face_gate.settings'Startingdevelopmentserverat:8000/QouittheserverwithCONTROL-C.AI人脸智能识别Linux开发案例4、人脸管理功能测试在主页面上选中“人脸管理”功能,出现人脸管理页面。会显示当前系统中已成功注册的用户名称。选中其中一个用户,用户的右下角会出现一个红色的删除按钮,如图所示。单击红色的删除按钮,确定后用户信息会从人脸库中删除,如图所示。7.2.4开发实践:AI人脸识别功能开发

人脸注册与管理测试AI人脸智能识别Linux开发案例1、修改配置信息1)进入本节实验目录face_gate,并查看当前目录文件,如下:7.2.4开发实践:AI人脸识别功能开发

人脸识别功能测试test@rk3399:~/work$cdface_gate/test@rk3399:~/work/face_gate$lsdb.sqlite3face_gatemanage.pystatictemplates2)设置百度帐号信息,进入face_gate/face_gate/views目录下,使用vi编辑器打开face_manage.py文件。test@rk3399:~/work/face_gate/face_gate$ls__init__.py__pycache__settings.pyurls.pyutilsviewswsgi.pytest@rk3399:~/work/face_gate/face_gate$cdviews/test@rk3399:~/work/face_gate/face_gate/views$lsface_manage.py__init__.py__pycache__test@rk3399:~/work/face_gate/face_gate/views$viface_manage.pyAI人脸智能识别Linux开发案例1、修改配置信息3)设置智云帐号信息,进入face_gate/face_gate/utils目录下,使用vi编辑器打开face_control.py文件。7.2.4开发实践:AI人脸识别功能开发

人脸识别功能测试test@rk3399:~/work/face_gate/face_gate$cdutils/baidu_api_utils.pybaidu_face.pyimage_process.py__pycache__baidu_base.pyface_control.py__init__.pywebsocket_controller.pytest@rk3399:~/work/face_gate/face_gate/utils$viface_contro

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论