基于无人机的人脸识别方法与流程

文档序号:19156658发布日期:2019-11-16 00:53阅读:1237来源:国知局
基于无人机的人脸识别方法与流程
本发明属人脸识别领域,尤其涉及一种基于无人机的人脸识别方法。
背景技术
:经过实际调研发现,人脸识别在公共安全领域的运用上仍有其局限性:一方面,采集的对象——人脸,处在不确定的条件下,包括光照条件、角度、遮挡物等因素将会直接导致人脸识别的精度;另一方面,由于人脸采集的设备,即摄像头的特性,其物理位置一经部署即固定,后台人脸识别系统的工作角度范围十分有限,存在较大的视野盲区。加之各地公安机关出于成本考虑,人脸识别摄像头覆盖面有限,许多需要及时获取现场画面的需求难以实现。如何更灵活地满足视频监控、侦查、巡逻的需求,更好的服务于公共安全实务是极具挑战的课题。无人机技术的迅猛发展为解决难题带来了曙光。材料科学的蓬勃发展、新型微机电传感器与微型惯性导航控制器的更新、飞行控制器与飞行控制算法的迭代,都促使以四旋翼无人机为代表的无人机家族在安防业开始崭露头角,如大疆公司于2018年9月下旬推出了经纬m200警用版无人机,对mavicpro系列民用无人机提供了警用的改装方案等。无人机在警用、安防领域的运用带来了如下积极意义:一、解决传统摄像头覆盖面不足的问题,为需求方提供高空宏观视角,弥补监控探头存在观测盲区的短板;二、无人机由于其灵活的特性可以积极调整自身观测位置,达到主动识别目标、跟踪目标的效果;三、针对采集的视频流可以智能处理,提升决策效率;四、与人工巡逻相比,更高效、安全,有效降低了成本。但令人遗憾的是,一些地方公安实战部门对无人机所采集视频的利用更多是对其进行宏观的、基于人工目视方法的信息获取,如群体性处置中对地形的侦测、对人员规模的确定等;交通管理中对车流量的统计;案件侦办时对现场宏观环境拍照取证等方面,对视频流直接进行人脸识别工作的情况还较为少见,其原因有:一、市场提供的,搭载成熟人脸识别功能的无人机产品不足;二、人脸识别算法在人脸处于较大角度等不利因素干扰,导致人脸图像失真,识别精度较差。因此,如何将人脸识别与无人机有效结合,如何提高无人机人脸识别系统识别效果,这都是本发明研究的内容及研究意义所在。技术实现要素:本发明旨在克服现有技术的不足之处而提供一种识别精度高,人脸图像不失真,抗干扰能力强的基于无人机的人脸识别方法。为解决上述技术问题,本发明是这样实现的:基于无人机的人脸识别方法,包括无人机端视频流采集/传输模块、地面站视频流接收模块、人脸识别模块、人脸采集模块及数据库交互模块;所述无人机端视频流采集/传输模块负责调用树莓派通过usb接口挂载的uvc摄像头拍摄目标区域内的图像信息,并在视频流传输中提供两种不同的工作模式:tcp模式与udp模式;所述地面站视频流接收模块主要负责接收来自无人机子系统传来的数据包,将其解码成人脸识别模块能够识别处理的格式;所述人脸识别模块主要负责人脸识别功能,即将出现视频流中的目标人脸在交互界面中框出、报警;所述地面站人脸采集模块提供实时采集模式与批量导入模式;所述数据库交互模块包括(1)系统用户与密码对的增加、删除、修改;(2)姓名与身份识别号匹配互查;(3)人脸数据的批量导入。作为一种优选方案,本发明所述无人机端的视频流采集/传输模块负责调用树莓派通过usb接口挂载的uvc摄像头拍摄目标区域内的图像信息,实现为opencv计算机视觉库中提供的videoio模块下videocapture类的实例化。进一步地,本发明所述地面站视频流接收模块在tcp工作模式下,地面站的具体工作步骤为:(1)与服务器端建立socket连接;(2)发送协商数据包;(3)接收来自服务器端的tcp数据包;(4)解码数据包,传给人脸识别模块。进一步地,本发明所述人脸识别模块的具体步骤为:(1)接收来自地面站视频流接收模块传来的视频流信息;(2)初始化人脸识别模块并加载目标人脸特征值信息;(3)检测流中存在的人脸并用方框标出;(4)判断检测出的人脸是否为目标人脸,若是则进行标记并系统报警,记录出现时间。进一步地,本发明所述人脸采集模块主要提供实时采集模式与批量导入模式;实时采集模式的工作流程为:(1)调用本地摄像头,实时拍摄采集对象人脸信息;(2)在适宜的人脸角度、合适的光照条件下,拍摄静态照片作为人脸采集图像;(3)提取人脸特征值,标注姓名与身份识别码;(4)写入人脸数据库。进一步地,本发明所述数据库交互模块包括(1)用户管理:系统用户与密码对的增加、删除、修改;(2)身份查询:姓名与身份识别号匹配互查;(3)人脸入库:人脸数据的批量导入。进一步地,本发明所述用户管理主要通过与后台mysql数据库的user表进行交互来实现本系统用户与密码对新建、增加、删除。进一步地,本发明所述身份查询主要通过与后台mysql数据库的face表进行交互,实现身份识别号与姓名的互相查询。进一步地,本发明所述人脸入库提供面对单张人脸图像的单个人脸入库与面对多张人脸图像的批量人脸入库。进一步地,本发明所述单个人脸入库功能主要工作流程为:(1)读取单张人像,使用dlib的深度学习模型提取人脸特征值;(2)将特征值、身份识别号、姓名共同插入后台数据库face表中;所述批量人脸入库采用递归调用单张人脸图像入库功能,其工作流程为:(1)提取存储文件夹下存放的第一张人脸图片的特征值;(2)以文件名中标注的姓名和身份识别码,与特征值共同插入人脸数据库face表;(3)对该文件夹下存储的下一张图片重复上述操作。在无人机人脸追踪功能的测试中,本发明组织了高度、距离、人脸角度不同的几组人脸识别实验。经过实验,本系统在5米高度、人脸角度小于45度工作时拥有较高的人脸识别精度,且在较近距离(1.8米以内)、较小人脸角度的工作条件下,对面部遮挡(佩戴墨镜)的情形有较高的人脸识别健壮性。地面站人脸采集功能经测试,能提供地面站对目标人脸实时采集、添加身份识别码与姓名、提取特征值并加入数据库的功能,时间开销与稳定性符合设计要求。数据库交互工具经测试,姓名与识别码互查功能时间开销与稳定性符合设计要求。附图说明下面结合附图和具体实施方式对本发明作进一步说明。本发明的保护范围不仅局限于下列内容的表述。图1为本发明系统整体硬件框架图。图2为本发明软件部分流程框图。图3为本发无人机端视频流采集模块工作流程框图。图4为本发明无人机端视频流传输模块工作流程框图。图5为本发明地面站视频流接收模块工作流程框图。图6为本发明地面站人脸识别模块工作流程框图。图7为本发明地面站人脸采集模块工作流程框图。具体实施方式如图所示,基于无人机的人脸识别方法,包括无人机端视频流采集/传输模块、地面站视频流接收模块、人脸识别模块、人脸采集模块及数据库交互模块;所述无人机端视频流采集/传输模块负责调用树莓派通过usb接口挂载的uvc摄像头拍摄目标区域内的图像信息,并在视频流传输中提供两种不同的工作模式:tcp模式与udp模式;所述地面站视频流接收模块主要负责接收来自无人机子系统传来的数据包,将其解码成人脸识别模块能够识别处理的格式;所述人脸识别模块主要负责人脸识别功能,即将出现视频流中的目标人脸在交互界面中框出、报警;所述地面站人脸采集模块提供实时采集模式与批量导入模式;所述数据库交互模块包括(1)系统用户与密码对的增加、删除、修改;(2)姓名与身份识别号匹配互查;(3)人脸数据的批量导入。本发明所述无人机端的视频流采集/传输模块负责调用树莓派通过usb接口挂载的uvc摄像头拍摄目标区域内的图像信息,实现为opencv计算机视觉库中提供的videoio模块下videocapture类的实例化。本发明所述地面站视频流接收模块在tcp工作模式下,地面站的具体工作步骤为:(1)与服务器端建立socket连接;(2)发送协商数据包;(3)接收来自服务器端的tcp数据包;(4)解码数据包,传给人脸识别模块。本发明所述人脸识别模块的具体步骤为:(1)接收来自地面站视频流接收模块传来的视频流信息;(2)初始化人脸识别模块并加载目标人脸特征值信息;(3)检测流中存在的人脸并用方框标出;(4)判断检测出的人脸是否为目标人脸,若是则进行标记并系统报警,记录出现时间。本发明所述人脸采集模块主要提供实时采集模式与批量导入模式;实时采集模式的工作流程为:(1)调用本地摄像头,实时拍摄采集对象人脸信息;(2)在适宜的人脸角度、合适的光照条件下,拍摄静态照片作为人脸采集图像;(3)提取人脸特征值,标注姓名与身份识别码;(4)写入人脸数据库。本发明所述数据库交互模块包括(1)用户管理:系统用户与密码对的增加、删除、修改;(2)身份查询:姓名与身份识别号匹配互查;(3)人脸入库:人脸数据的批量导入。本发明所述用户管理主要通过与后台mysql数据库的user表进行交互来实现本系统用户与密码对新建、增加、删除。本发明所述身份查询主要通过与后台mysql数据库的face表进行交互,实现身份识别号与姓名的互相查询。本发明所述人脸入库提供面对单张人脸图像的单个人脸入库与面对多张人脸图像的批量人脸入库。本发明所述单个人脸入库功能主要工作流程为:(1)读取单张人像,使用dlib的深度学习模型提取人脸特征值;(2)将特征值、身份识别号、姓名共同插入后台数据库face表中;所述批量人脸入库采用递归调用单张人脸图像入库功能,其工作流程为:(1)提取存储文件夹下存放的第一张人脸图片的特征值;(2)以文件名中标注的姓名和身份识别码,与特征值共同插入人脸数据库face表;(3)对该文件夹下存储的下一张图片重复上述操作。系统硬件设计与实现如图1所示,本系统在硬件层面分为无人机子系统与地面站子系统。地面站子系统由笔记本电脑构成,负责人脸识别方面的运算、人脸数据库的管理。无人机子系统除提供基本的稳定飞行外,还应当具备如下功能:视频流的采集、视频流的处理:图像制式无法直接通过wifi信号传输,因此需要进一步的压制、编码处理、视频流的传输、安全性保障、地面站的性能保障等功能。本系统硬件的设计与实现基于模块化的理念进行。硬件平台被分为如下几个模块:数据采集与传输模块、控制模块、动力模块。其硬件框图如下图1所示。本模块的主要功能是对目标区域内,地面人员的人脸拍摄视频流并予以处理后传回。本模块以微型计算机为核心,使用通用串行总线端口来挂载摄像头、无线网卡。供电方面,选择一套独立的电源模块负责向微型计算机供电,以此解决模块本身运行的稳定性需求。通过挂载高增益天线无线网卡进行与地面站的通信,以此在物理硬件层面保证一定的功能稳定性。安装一台三轴云台作为摄像头的安装点,方便摄像头拍摄角度的控制,达到拍摄内容可控的目的。此外,云台中的陀螺仪等减震措施也能起到控制画面震动的效果。飞行控制模块负责接收来自地面遥控器的遥控指令,通过对飞行数据的浮点计算,管理电子调速器输出功率,最终使无人机按地面遥控器输入的指令调整飞行姿态。该模块以飞行控制器为核心,通过飞行控制器上的接口与gps电子罗盘、遥控信号接收机连接。三轴云台与遥控信号接收机连接。飞行控制器通过接收机接收来自地面遥控器的指令,向动力模块发出飞行指令。此外,控制模块由动力模块的电池组供电。动力模块的主要功能是为无人机平台提供飞行的升力,实现无人机的飞行。因此动力模块由电子调速器(ecs)、电机、螺旋桨、电池消除电路(bec)模块、锂电池组组成。其中的bec模块主要负责向锂电池取电,将电压下降为5v~6v的水平后为动力电路以外的电子设备供电,如飞行控制器、电子罗盘、遥控器接收机等。为了减轻飞机质量与体积,一些ecs中集成了bec电路,可以直接从其中取电、设置比较简单的电路。本发明的主要目的是实现系统各部分模块设计,将其安装到机架后进行飞行测试。经过各主要模块的结构设计与关键器材的挑选,预计无人机整机重量在3kg左右,考虑到需要安装的视频流采集与传输模块设备体积较大,因此选择达亚680型号作为无人机机架。该型号机架主体材质为3k碳纤维板,cnc制造折叠件,轴距为标准x型680,机架重量476克。灵活性高且抗摔性能强,支持机臂的折叠,能满足一定的便携需求。内部空间分为上下两层,方便器件的安装,至此,本系统所需组件选择完毕,各主要组件型号见下表。部件型号部件型号机架daya680飞行控制器pixhawkv1电机x4110s*4ecs乐天40a*4桨叶tarrot1555*4电池组聚海5400mah6s遥控器/接收机fs-i6s/fs-ia6b电子罗盘m8n微型计算机树莓派3b摄像头kingcentks2a242高增益无线网卡tp-linkwn722n云台三轴云台系统硬件的实现主要分为:飞控与遥控器接收机的连接、云台与接收机的连接、gps罗盘安装与调试、电调与电机的连接、机架组装、接线等步骤,按照官方推荐手册安装完毕后,折叠状态下仅为a4纸大小。视频流传输模块的实现主要任务为树莓派与摄像头、无线网卡、电源模块的连接与测试,其目的是检测该模块能否与地面站进行视频流的传输。摄像头、网卡通过通用串行总线端口与树莓派连接即可。电源模块则通过powerinput端口与树莓派连接。经测试,树莓派安装ar9271驱动后,树莓派能正常识别wn722n无线网卡,硬件为1号总线5号设备。通过uvc协议,树莓派能正常识别摄像头,硬件位置为1号总线6号设备。参见图3所示,无人机端的视频流采集模块负责调用树莓派通过usb接口挂载的uvc摄像头拍摄目标区域内的图像信息,是整个系统的最主要数据来源。该模块主要功能的实现为opencv计算机视觉库中提供的videoio模块下videocapture类的实例化。该类主要用于从视频文件、图像序列或摄像机捕获视频。python语言下,videocapture对象的创建方式为“<videocaptureobject>=cv.videocapture(index[,apipreference])”。其中的index值为摄像头的设备索引编号,如framecaptured=cv2.videocapture(0),即为调用电脑挂载的默认摄像头进行实时视频流的获取。当videocapture实例化后,使用该类下的.isopened()函数,从其返回的布尔值可以检测视频捕获是否初始化。当framecaptured被成功实例化后,使用get(propid)函数与set(propid,value)函数可以获取或设置帧的参数。可以设置的参数如cv.cap_prop_frame_width(帧的宽)、cv.cap_prop_frame_height、cv.cap_prop_fps等。使用read()函数能方便地读取视频流下一帧,并返回实时抓取的帧。该函数是由grab()函数,抓取摄像头拍摄的下一帧,与retrieve()函数,返回实时抓取的此帧,联合形成的重载函数。因此该函数在调用时会返回两个值,形如“retval,image=framecaptured.read()”。若相机断开链接或出错,retval将返回false,image将返回空值。当视频流采集任务完成后,使用release()函数可以关闭对应设备索引号的摄像头。参见图4所示,本系统中,无人机端的视频流传输模块根据前文的模块设计,需要提供两种不同的工作模式:tcp模式与udp模式,二者的不同主要在于与地面站传输视频流数据包时是基于何种协议。tcp工作模式下,该模式下工作流程为:(1)无人机端作为客户端,地面站作为服务器端,二者建立起连接后,无人机端接受来自地面站的配置参数,参数包含帧数与分辨率等;(2)接收视频流采集模块不断传来的视频帧,按第一步中接收的参数调整图像;(3)对调整后的每一帧编码,转换成矩阵的形式,生成方便传输的字符串后打包;(4)通过已经建立的tcp连接发送给地面站。由于udp工作模式面对的是无线信号条件好、干扰少的情况下因此工作流程更为简洁,省略了客户端与服务器端同步参数配置,该工作模式下执行效率更高。在该模块中,实现tcp连接的方式是利用python提供的socket库实现,socket又称套接字,在网络两端的应用程序通过建立套接字来通过网络向对方发出请求或提供应答,使得不同应用、不同主机实现通信的功能。参见图5所示,地面站视频流接收模块主要负责接收来自无人机子系统传来的数据包,将其解码成人脸识别模块能够识别处理的格式。tcp工作模式下,地面站作为客户端工作,工作流程为:(1)与服务器端建立socket连接;(2)发送协商数据包;(3)接收来自服务器端的tcp数据包;(4)解码数据包,传给人脸识别模块。与服务器端建立socket连接主要依靠python提供的socket库实现。从执行逻辑上来讲,此时无人机端已经实例化socket对象并绑定了对应端口开始监听,因此地面站的视频流接收模块作为客户端发起socket连接即可。参见图6所示,地面站人脸识别模块是本系统的主要功能模块。该模块主要负责人脸识别功能,即将出现视频流中的目标人脸在交互界面中框出、报警。人脸识别的工作流程为:(1)接收来自地面站视频流接收模块传来的视频流信息;(2)初始化人脸识别模块并加载目标人脸特征值信息;(3)检测流中存在的人脸并用方框标出;(4)判断检测出的人脸是否为目标人脸,若是则进行标记并系统报警,记录出现时间。由于地面站视频流接收模块解析tcp、udp两种不同的协议包,因此在该模块中,人脸追踪功能同样对应不同的两种工作模式,但大体而言原理一致。因此在本部分不区分工作模式做综合论述。人脸识别功能需要先行读取目标人脸的特征值数据。该环节通过指定目标身份识别号的形式,读取后台数据库中相应表项中的人脸特征值(数据库交互模块提供了姓名与身份识别号互查的功能)。视频流以numpy矩阵(numpyarry)传入本模块后,首先使用dlib计算机视觉库的基于卷积神经网络(cnn)的人脸检测模型(dlib.cnn_face_detection_model_v1)对视频流中是否存在人脸进行确认,实现该功能的关键代码为“cnn_face_detector=dlib.cnn_face_detection_model_v1(model_path)”,此处model_path参数设定为dlib组织已经事先训练好的人脸识别模板,mmod_human_face_detector.dat的文件路径即可,确定视频流中检出人脸后,使用opencv提供的rectangle()函数将人脸框处、标记。当视频流中检测到人脸存在后,使用dlib提供的“dlib.face_recognition_model_v1(path)”函数,配置path参数,加载dlib的resnet模型,提取视频流中出现人脸的128维特征向量。该目标特征向量通过与已载入的目标人脸特征之间使用mumpy的linalg.norm()函数求特征值与数据库中存储的特征向量二者的欧式距离,若该距离小于一个设定的误差阈值,则认定该人脸与目标人脸为同一张人脸。使用opencv提供的puttext()函数,将目标人脸的姓名放置于标记框的下方。参见图7所示,地面站人脸采集模块主要提供两种工作模式——实时采集模式与批量导入模式。实时采集模式的工作流程为:(1)调用本地摄像头,实时拍摄采集对象人脸信息;(2)在适宜的人脸角度、合适的光照条件下,拍摄静态照片作为人脸采集图像;(3)提取人脸特征值,标注姓名与身份识别码;(4)写入人脸数据库。实时采集模式下,调用本地摄像头的操作由opencv库中的videocapture(num)函数提供,num参数为本地摄像头的编号,通过配置该参数能调用本地对应编号的摄像头。获取视频流后经过色彩通道的变换将其展示到交互界面上。确定采集当前图像作为人脸数据提取对象后,在交互界面的相应位置输入当前采集目标的身份识别号码、姓名,点击拍照键,当前帧将作为采集图像保存到指定文件夹下以供提取特征值。该工具主要提供用户与数据库之间的交互功能,具体包括:(1)系统用户与密码对的增加、删除、修改功能;(2)姓名与身份识别号匹配互查功能;(3)人脸数据的批量导入功能。用户管理功能主要通过与后台mysql数据库的user表进行交互来实现本系统用户与密码对新建、增加、删除等目的。该功能的实现依靠mysql的python驱动mysql-connector执行相应sql语句实现。身份查询功能主要通过与后台mysql数据库的face表进行交互,实现身份识别号与姓名的互相查询功能。该功能可以为人脸识别模块预先加载目标人脸特征值提供信息支持。人脸入库功能主要提供两种工作模式:即面对单张人脸图像的单个人脸入库与面对多张人脸图像的批量人脸入库。单个人脸入库功能主要工作流程为:(1)读取单张人像,使用dlib的深度学习模型提取人脸特征值;(2)将特征值、身份识别号、姓名共同插入后台数据库face表中。批量导入模式工作原理是采用递归调用单张人脸图像入库功能,其基本工作流程为:(1)提取存储文件夹下存放的第一张人脸图片的特征值;(2)以文件名中标注的姓名和身份识别码,与特征值共同插入人脸数据库face表;(3)对该文件夹下存储的下一张图片重复上述操作。可以理解地是,以上关于本发明的具体描述,仅用于说明本发明而并非受限于本发明实施例所描述的技术方案,本领域的普通技术人员应当理解,仍然可以对本发明进行修改或等同替换,以达到相同的技术效果;只要满足使用需要,都在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1