[toc]
- 以人脸识别为基础,结合视频人流检测和LBS定位技术,进行大规模图片检索的失踪儿童预警跟踪公益平台。
- 项目包括:server服务器[也就是本项目],PC摄像头检测系统,android客户端demo,web警察局监控系统demo
详见: ./doc/Cloudeye需求文档
在机场,火车站,汽车站等各式各样的安检出入口的摄像头可以接入系统的检测系统,用于实时的人流检测,当检测系统成功从视频中获取、处理完成图片信息完成之后,云端收到待搜索图片之后,进行人脸搜索
- 人流信息检测:利用监控摄像头检测人流
- 上传图片和地理位置信息:检测系统上传图片信息
- 超分辨率图片还原:使用神经网络提高摄像头的图片质量
- 人脸搜索:云端实时搜索数据库中的人脸,判断是否配对
- 消息推送:若发现相似人脸,启动信息预警信息推送
在用户在线的状态的情况下,在以下条件发生的时候,用户会收到消息:
- 周围的检测系统检测到的疑似被拐儿童的信息;
- 周围的用户拍摄到高匹配率的被拐儿童图片之后;
- 一位周围的求助者发送了实时求助消息之后
用户收到消息后,如果发现疑似被拐儿童,可以选择拍照上传识别,用户若上传的照片被云端计算判定为同一张人脸,则进行联动扩散消息
- 基于 LBS 的消息推送:推送求助消息给周围的用户
- 拍照和人脸相似度比较:用户通过拍照来进行联动协助
- 基于地理位置联动扩散消息:云端若发现用户上传了高匹配度的消息,则进一步基于拍摄者周围扩散求助消息
- 获得走失小孩详细信息
用户(必须提前进行实名认证)发现自己的小孩走丢了,可以通过上传照片和填写个人信息发布求助信息,求助信息会被立即推送给周围的用户。当自己的发布的被拐小孩有了新的进展之后,用户可以收到进展消息。当找到小孩之后,用户需要进行结案,停止求助联动扩散
- 发布求助:用户可以发布自己失踪的小孩的详细信息
- 接受最新进展:(如果有的话),用户会收到小孩的最新跟踪进展
- 结案:当找到小孩之后,用户需要手动停止求助联动扩散
用户如果发现某个孩子疑似被拐儿童(行为可疑),可以主动进行拍照识别,上传到云端。云端收到待搜索图片之后,进行人脸搜索。当识别出高匹配度的人脸之后,需要把这个消息推送出去
- 上传图片和地理位置信息:用户上传拍摄小孩的图片和当前地理位置信息
- 人脸搜索:云端实时搜索数据库中的人脸,判断是否配对
- 消息推送:若发现相似人脸,启动信息预警信息推送
每个警察局能够设定自己的监控区域范围的最新发生的所有跟拍和求助消息。警察局点击其中的一个小孩之后,可以查看小孩的档案详情; 我们可以对所有的跟踪数据进行数据挖掘和分析,比如,了解失踪儿童的集群行为。分析各个地点的轨迹跟踪记录,进行小孩的未来走势预测。形成可视化的热力图等等。
- 警察局监控局部地域内的所有推送的消息
- 查看某个失踪小孩的详细信息和轨迹
- 对失踪儿童记录进行数据挖掘和分析
警察局可以查看数据库中的所有小孩的档案详情记录,并且方便的按照条件进行搜索和筛选。
- 按照最后发现时间排序,显示未立案/已立案的失踪小孩的列表
- 按照时间段,小孩名称,走失地点筛选失踪小孩
- 服务器:Python2.7,Tornado
- 数据库:MongoDB,MySQL
- 负载均衡:Nginx
- 人脸识别搜索:face++云服务
- 超分辨率图片还原:深度递归卷积神经网络
- 图片存储:阿里云OSS对象存储服务器
详见:./doc/Cloudeye概要设计文档.doc 软件使用 MVC 实现 SOA 架构,并在数据存储访问使用 ORM 技术,具体而言,系统分为应用层,控制层,基础服务层,数据模型层,数据存储层和第三方云服务
直接面向用户,调用接口层提供的 api,完成数据的获取,并在应用层显示给用户,包括:
- Android 客户端:提供给用户使用的终端
- Web 端:提供给警察局使用的监控系统
- 摄像头:完成和云端交互的检测系统
调用服务层提供的服务组合,实现该接口所需的全部功能,接口层的各个模块相互解耦,不可以相互调用:
- 寻找小孩模块:实现寻找小孩相关的操作,搜索失踪小孩,发布事实求助,疑似小孩跟踪等;
- 失踪小孩模块:用于实现失踪小孩信息的获取的相关操作,包括获取失踪小孩详情,按照地域,时间等条件筛选小孩档案等接口
- 账户操作模块:实现账户相关操作,包括登陆,注册,注销,忘记密码,获取我提交的报案的最新进展, 获取我收到的小孩求助
以面向服务为单位,按照模块划分出完成接口层所需要的最基础的服务单元,基础服务层调用数据模型层提供的接口实现相关操作,其中,各个服务模块的接口相互解耦,不可相互调用,包括:
- 人脸引擎服务:完成和人脸识别相关的服务,包括人脸的检测,搜索,比对,计算置信度等的服务
- 消息服务:完成和消息推送相关的服务,包括不同类型的消息推送,消息的清空和按照区域获取消息
- 失踪小孩服务:完成和失踪小孩相关的服务,包括新的小孩的上传,小孩状态的更新,小孩的信息获取
- 用户信息服务:完成用户和用户账号相关的服务,包括新增,登陆,清除,更新状态,获取用户信息, 获得推送,清空推送等服务
- 图片服务:完成和图片相关的服务,包括预处理,上传,删除,获取访问权限版
面向数据库和第三方云服务,为基础服务建立对应的数据模型,为基础服务提供接口,各个数据模型相互解耦,不可相互调用,具体包括:
- 人脸数据模型:直接连接 face++服务器,调用人脸的查找(识别,搜索,对比,获取详情),进行人脸的增加,删除
- 地理位置模型:维护在线用户和地理位置的映射关系,提供在线用户的地理位置设置,更新,清空,按照地理位置进行用户筛选等功能
- 消息模型:维护推送消息相关的数据模型,包括按照时间,区域进行消息筛选,消息的更新,新增,删 除,获取等功能
- 静态资源模型:直接连接 OSS 对象存储服务器,进行资源上传,下载,授权,删除等操作
- 失踪小孩模型:维护失踪小孩的模型,进行小孩的数据上传,数据更新,条件查找,获取详情信息,获 取跟踪轨迹,更新跟踪轨迹,删除跟踪轨迹等功能
- 用户信息模型:与用户相关的模型,进行用户的增删改查,并维护用户的失踪人员列表等