Coder Social home page Coder Social logo

baby-home's Introduction

宝贝回家—动静态结合的多阶段搜寻系统

项目简介

本项目是2019年全国大学生物联网设计竞赛的参赛作品,荣获西北赛区一等奖。
项目场景是儿童在公共场所不幸走失,我们的系统通过利用监控摄像头、无人机等硬件,运用计算机视觉中的视频分帧、行人检测、行人去重、特征匹配等技术,找到丢失的儿童。

摘要

静态摄像头分布广,但位置固定,而无人机的机动性强、探测范围广。两者的多阶段联合分析可在实际搜寻丢失儿童的过程中作为一种辅助手段,提高找回丢失儿童的可能性。于是我们开发了动静态结合的多阶段搜寻系统。该系统包含三个阶段,第一阶段是进行大范围的粗筛选,服务器端对静态监控视频进行处理分析,根据家长在“宝贝回家”APP上传的丢失儿童相关信息确定相似儿童候选集及其相应位置;第二阶段是进行细排查,无人机操控人员根据在“宝贝回家”APP获取的位置找到相似儿童并为其拍摄脸部照片,与家长上传的照片进行相似度计算,判断是否为同一儿童;第三阶段是操控无人机追踪儿童,使其保持在可监控范围,并通知家长儿童位置。本课题将硬件和软件有机地结合在一起,并利用计算机视觉方法对视频图像进行处理,不仅避免了很多因人工操作产生的额外问题,还更高效高精度地实现了对丢失儿童的搜寻与追踪,同时也节约了大量的人力和时间成本,具有广泛的应用前景。

功能设计

本项目由客户层、无人机控制层、服务器处理层这三部分构成。三者关系如图1所示:
image

在公园等开阔的公共区域,丢失儿童的家长通过注册登录客户端,发布丢失儿童的信息。服务器接受到来自于客户端的请求后,将相关信息通过管理端发送给工作管理人员,工作管理人员将调取有关的静态监控视频并传输给服务器端,服务器对其进行分帧、行人检测、行人去重、衣服颜色匹配等处理,得到目标儿童候选集及各自对应位置并将其一并发送给管理端。无人机操控人员根据该候选集及对应位置操控无人机近距离地为候选目标儿童拍张脸部特写照片并发送给服务器端,服务器将其与家长上传的儿童照片进行相似度匹配,若相似度很高,则将该小孩的照片发送给客户端,家长确认无误后工作人员会在第一时间赶到小孩的位置并与家长联系。
image

(1) 客户端功能设计
客户端主要功能是丢失儿童的家长可以发布儿童的相关信息以及对无人机搜寻儿童过程进行查询,即丢失儿童信息发布模块和搜寻结果查询模块。儿童的相关信息包括:身高、性别、当天所穿衣服的颜色、近期上半身的照片(儿童的脸部必须清晰且完整,最好是脸部特写照片)、丢失的可能地点及可能时间段。服务器处理数据得到的目标儿童结果后将照片发给客户端,由家长进行最终的确认,并将确认结果发送给服务器端和管理端。

(2) 管理端功能设计
管理端主要包括监控视频上传模块、中间结果显示木块及无人机飞行控制模块。工作人员调取近段时间内的静态监控视频,并将其传输给服务器端进行处理,服务器将视频处理的中间结果(候选儿童集)传输给管理端,无人机操控人员为候选儿童集中的儿童拍摄脸部特写照片并将其上传到服务器中。

  1. 监控视频上传模块
    管理员通过WIFI将监控视频上传到服务器端,服务器端对它进行一系列的处理分析。通过该模块功能的实现,为目标儿童搜寻的下一步操作减小了搜索范围,提高了搜索的速率。
  2. 中间结果显示模块
    服务器端通过对静态监控视频进行一系列的处理后得到目标儿童候选集(中间结果)并将该候选集中的儿童图片发送到客户端的中间结果显示模块,无人机操控人员通过该页面的显示情况明确无人机的搜寻范围。在无中间结果显示的情况下,无人机将在家长提交的丢失可能地点附近进行搜寻;若有中间结果显示,无人机将赶向候选小孩出现的最终位置附近并为其拍摄清晰的脸部特写照片,然后上传特写照片到服务器端。通过该模块的实现,可以降低目标搜寻的错误率。
  3. 无人机飞行控制模块

(3) 服务器端的功能设计
服务器端包括视频分帧模块、行人检测模块、行人去重模块、行人特征匹配模块及人脸识别模块。服务器端主要负责静态监控视频和无人机拍摄图像及走失儿童的相关信息进行一系列的分析处理,最终完成对目标儿童的智能搜寻并将目标图像返回给客户端和管理端。

  1. 视频分帧模块
    静态监控视频上传到服务器端后,服务器首先进行视频的帧图像提取。由于是在公园等开阔的公共区域下搜寻目标,人的行进速度一般是比较慢的,故服务器端将视频按2S/帧的速率进行帧图像提取,建立帧图像数据库,其中截帧速率是系统可调的。

  2. 行人检测模块
    服务器通过行人检测模块对静态监控视频的帧图像数据库进行行人检测,确认行人的出现及所在图片位置,同时为方便后续的行人特征匹配模块处理数据,根据检测到的行人在对应帧图像上的标记位置将行人图像提取出来,建立行人数据库。
    行人检测模块主要是采用了目标检测模型-YOLOv3。YOLOv3模型是基于深度卷积网络学习的特征以检测目标物体。它首先对图像进行单元格划分,然后通过深度卷积层学习图像特征,并送入到分类器和回归器中以进行检测预测(边界框坐标,对应的类别标签等),图9为YOLOv3的模型结构图。YOLOv3使用多尺度特征进行对象检测分类,在最终的损失层中简单地使用逻辑回归来得到每个边界框所属的类别分布,然后再使用交叉熵损失函数来计算训练分类损失。YOLOv3借鉴了残差网络结构,形成更深的网络层次,以及多尺度检测,提升了mAP及小物体检测效果,同时在精确度相当的情况下,YOLOv3的速度是其它模型的3、4倍。我们根据该项目需求对其进行了改进,最终实现了一个基于tensorflow的YOLOv3模型,并且为了提高检测速度和精度,将YOLOv3改造成只对行人进行检测。
    image

  3. 行人去重模块
    行人去重模块主要是将相似性图像进行删除。帧图像经过行人检测模块处理后得到了行人数据库,但由于行人的移动性,行人数据库中会存在着同一儿童在不同时刻下的被检测出来的图像。该模块可减少行人图像的冗余现象并加快行人特征匹配模块的处理时间,减少延迟。
    相似性图片的判断可采用感知哈希算法,其包括平均值哈希aHash、感知哈希pHash、差异值哈希dHash。感知哈希不是以严格的方式计算Hash值,而是以相对的方式计算。aHash速度较快但不太精准,pHash精准度较高但速度较慢,dHash在速度和精准度之间取得了一个较好的平衡,故在行人去重模块我们采取了差异值哈希dHash算法。服务器首先将图片大小缩放到9*8(方便后续处理),然后再将其灰度化处理,再进行差异计算,最后转换为hash值。差异值是通过计算每行相邻像素的强度对比得出的,hash值是由差异值数组转换而成的。得到不同图片的dHash值后,通过比较得到汉明距离,根据设定汉明距离阈值判断两张图片是否相似,若相似则在行人数据库中删除其中一张图片。对行人图像数据库循环进行行人去重操作,最后将更新好的行人数据库输入到行人特征匹配模块中。

  4. 行人特征匹配模块
    行人特征匹配模块的主要功能是将经过行人去重模块处理后的行人图像与家长上传的颜色信息进行颜色匹配处理,将符合条件的儿童筛选出来,为下一部分进行细排查做铺垫,本模块可以在一定程度上降低识别走失儿童过程中无关信息的影响,从而提高识别的准确性。
    image

首先,利用走失儿童父母提供的走失儿童的衣服颜色信息,例如:“上半身”:绿色,“下半身”:黄色,将其转换为对应的编码,我们将视觉系统中常见的一些颜色包括“红、橙、黄、绿、青、蓝、紫、全黑、全白”进行编码,选取这些颜色的原因主要有以下2点:第一、这些颜色便于粗略描述,信息发布者即父母,能忽视一部分光照或摄像头本身对衣服颜色的影响;第二、这些颜色容易进行编码,计算机中颜色的表示是连续的,且一些颜色之间的差异难以具体量化,且视觉上对颜色的判定存在个体差异。基于以上两点原因,我们采用这些标准颜色来让信息提供者对走失儿童衣服颜色信息进行描述。基于此我们可以将行人去重模块中检测出的人的上半身和下半身的图像分割出来,效果如图4所示,图4(a)为原始图像,图4(b)中红线即计算机计算出的上、下半身的分割线,同时根据头身比例将头部与腿的下半部分去掉,减少信息匹配过程中的干扰因素,至此我们将所筛选出来的人员的上半身和下半身从原始图像中分离出来。

最后,进行信息匹配,通过分割出的上半身和下半身图像,分别计算上、下半身的RGB三个通道上的色彩信息,通过我们设定的一系列计算规则,将对颜色的判断转换为计算RGB三者数值之间和一系列阈值的关系的判断上,根据R、G、B的数值我们可以判断它和信息发布者提供的颜色信息是否匹配,在具体实验过程中发现直接按比例截取下半身存在很多干扰因素,因为腿之间和两侧存在大量空白和其它影响因素,所以在图4(b)的基础上进一步裁剪,最终采用如图4(c)的分割比例,只保留集中体现下半身色彩信息部分的图像。

  1. 人脸识别模块
    人脸识别模块的功能主要是根据由无人机飞行控制模块传过来的相似儿童的脸部特写照片与家长上传的丢失儿童的照片进行相似性计算的结果,对儿童候选集进行排查。行人特征匹配模块是对儿童的粗略匹配,误差较大,人脸识别模块是通过人脸比对实现对儿童的精确匹配,先粗略后精确匹配的结合可极大地提高搜寻速度和准确度。首先从图像中提取人脸图像,然后输入到FaceNet,FaceNet利用CNN神经网络中将人脸图像映射到128维的欧几里得空间,计算Embedding的特征向量并比较特征向量见的欧式距离,一般情况下认为当特征距离小于1的时候认为是同一个人,特征距离大于1的时候认为是不同人。

系统实现

(1) “宝贝回家”APP客户端功能实现
“宝贝回家”APP的开发环境如下:
开发工具:Android Studio 3.2.1 开发语言:Java,JDK 1.8.0 系统版本:Windows 10

“宝贝回家”APP客户端的功能主要是丢失儿童的信息发布以及信息查询。家长首先注册登录“宝贝回家”APP,在客户端的信息发布模块发布丢失儿童的信息,主要包括:丢失儿童的姓名、性别、年龄、身高、上身衣服颜色、下身衣服颜色、正脸照、丢失可能时间及可能地点。图5为客户登录界面,输入正确的用户名和密码,角色选择客户即可登录成功。图6为项目简介界面,该界面中包括两个按钮,分别为信息发布和信息查询。
image

图7为家长上传丢失儿童的基本信息,方便系统进行特征匹配。图8为家长上传丢失儿童的照片,当系统通过特征匹配找到近似的儿童后,管理人员需要控制无人机对儿童候选集中儿童进行人脸识别检测,以精准匹配到丢失儿童,并对该儿童的位置信息进行上传以及追踪儿童。

(2) 管理端功能实现
考虑到管理端既要查看系统处理的中间图像,又要控制无人机的飞行以及拍照,所以管理端分为两部分组成。查看系统处理的中间图像部分,实现在“宝贝回家”APP中的管理人员界面中,通过登录时角色选择管理人员即可进入。无人机的飞行控制以及拍照功能部分,采用DJI GO APP可以直接对大疆精灵4无人机进行飞行控制、拍照录像、行人自动跟踪,DJI GO APP是大疆创新公司开发的一款适用于多款大疆产品的APP。

  1. “宝贝回家”APP管理端实现
    “宝贝回家”APP管理端的主要功能是查看系统对监控视频的处理结果以及对无人机拍照后的照片进行人脸检测的结果。图9为管理人员的登录界面,图10为静态监控视频的上传,上传后系统要对该视频进行处理并对视频中的儿童进行检测。
    image

图11为颜色特征匹配界面,该界面主要展示系统对静态监控视频处理后的结果,处理的过程包括视频分帧、行人检测、行人去重、行人特征匹配。在行人特征匹配过程中,系统仅是对家长上传的丢失儿童上身衣服颜色和下身衣服颜色两个特征进行匹配。在该匹配图中,对每个图加上了来源于摄像头的序号标签,以便管理人员近似定位出位置控制无人机进行人脸识别和追踪。
图12和图13为人脸识别对比界面,管理人员控制无人机飞行至候选儿童集中的儿童位置进行拍照,并将拍摄的儿童正面照上传系统进行人脸检测。
image

  1. 无人机飞行控制实现
    无人机的飞行控制以及拍照功能部分,采用DJI GO APP可以直接对大疆精灵4无人机进行飞行控制、拍照录像、行人自动跟踪。

(3) 服务器端功能实现
服务器端的开发环境如下:
开发工具:PyCharm 2019.1.3 开发语言:Python 3.7.0 服务器框架:Flask

  1. 视频分帧模块
    服务器接收到管理人员上传的静态监控视频后,需要对视频进行分帧处理,按照2S/帧进行帧图像提取,建立帧图像数据库。图14为分帧结果,将上传的11s静态监控视频分成了4帧。
    image

  2. 行人检测模块
    服务器通过行人检测模块对帧图像数据库中每一帧进行处理,并且记录下识别到的行人来源于摄像头的序号这一信息,目的是为了在颜色特征匹配模块中与匹配到衣服颜色信息一同对图像进行标记。行人检测功能的实现采用的是目标检测模型YOLOv3,YOLOv3模型与同类模型想比具有检测精度高和检测速度快等优势。图15为行人检测结果图。
    image

  3. 行人去重模块
    行人检测模块会提取出帧图像数据库中的所有行人,考虑到提取出的所有行人会有重复这一特点,我们对行人数据库中的所有行人进行了去重处理。图16为去重结果图,行人数据**有37张图像,去重后剩18张图像,共删除重复图像19张。
    image

  4. 行人特征匹配模块
    在行人特征匹配模块中,系统需要对客户上传的儿童特征与去重后的行人数据中行人特征进行对比,找到符合家长上传的特征的儿童。由于时间因素,我们实现了基于儿童上身衣服颜色和下身衣服颜色两个特征的匹配。首先将行人图像按比例划分为上半身和下半身,然后分别计算RGB值,并按照预设的规则将上下半身划分为某个标准颜色。
    系统将匹配到和家长上传特征一致的图像返回至管理端,管理人员可在APP中查看匹配到的图像。返回给管理端的图像上共有两部分标签,第一部分是该图像来源于监控摄像头的序号标签,第二部分是上下身颜色标签。图17为颜色特征匹配结果。

  5. 人脸识别模块
    在人脸识别模块中,服务器需要对家长上传的丢失儿童照片与无人机拍摄的儿童照片进行人脸相似度计算,一般情况下相似度小于1代表为同一人,但在实际应用中,发现儿童脸部轮廓区分度不高,所以将相似度阈值调整为0.7,该模块也可应用于成人脸部识别,但相似度阈值设定要相应提高。图18中两张图为同一儿童,可以看出人脸相似度值为0.5185,系统判定为同一人。图25中两张图分别为两个儿童,可以看出人脸相似度值为0.7425,系统判定为匹配失败。
    image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.