try-catch...try-catch 文件编号:deep_silent+swc2018! 2 !!...

27
I Try-Catch ——基于深度学习的扒窃行为识别辅助 项目开发文档 Version 2.1 Written by Deep_silent

Upload: others

Post on 07-Feb-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

  • I

    Try-Catch ——基于深度学习的扒窃行为识别辅助

    项目开发文档 Version 2.1

    Written by Deep_silent

  • II

    目录

    1   引言............................................................................................................................................ 1  1.1   项目概述.................................................................................................................... 1  1.2   项目背景及其必要性................................................................................................ 1  1.3   术语和缩略语............................................................................................................ 2  1.4   参考资料.................................................................................................................... 2  1.5   项目定位.................................................................................................................... 3  

    1.5.1   应用场景............................................................................................................ 3  1.5.2   目标人群............................................................................................................ 3  

    1.6   项目目标.................................................................................................................... 3  1.7   解决思路.................................................................................................................... 4  

    2   需求分析.................................................................................................................................... 5  2.1   功能需求.................................................................................................................... 5  

    2.1.1   功能模块结构图................................................................................................ 5  2.1.2   核心功能模块描述............................................................................................ 5  

    2.2   非功能性需求............................................................................................................ 6  2.2.1   扩展性和可维护性............................................................................................ 6  2.2.2   易用性................................................................................................................ 6  

    2.3   运行需求.................................................................................................................... 6  2.3.1   用户界面............................................................................................................ 6  2.3.2   硬件接口............................................................................................................ 7  2.3.3   软件接口............................................................................................................ 7  

    2.4   用例图........................................................................................................................ 8  3   概要设计.................................................................................................................................... 9  

    3.1   处理流程.................................................................................................................... 9  3.2   总体结构和模块设计.............................................................................................. 10  3.3   功能分配.................................................................................................................. 11  3.4   接口设计.................................................................................................................. 12  

    3.4.1   外部接口.......................................................................................................... 12  3.4.2   内部接口.......................................................................................................... 13  

    3.5   运行设计.................................................................................................................. 13  3.5.1   运行模块关系.................................................................................................. 13  3.5.2   运行控制.......................................................................................................... 13  

    3.6   错误/异常处理设计 ................................................................................................ 14  3.6.1   错误/异常输出信息 ........................................................................................ 14  3.6.2   错误/异常处理对策 ........................................................................................ 14  

    3.7   系统部署方案.......................................................................................................... 14  4   数据库设计.............................................................................................................................. 15  5   详细设计.................................................................................................................................. 16  

  • III

    5.1   功能模块.................................................................................................................. 16  5.1.1   功能描述.......................................................................................................... 16  5.1.2   性能描述.......................................................................................................... 18  5.1.3   输入.................................................................................................................. 18  5.1.4   输出.................................................................................................................. 19  5.1.5   算法.................................................................................................................. 19  5.1.6   程序逻辑.......................................................................................................... 20  

  • IV

    记录更改历史 序号 更改原因 版本 作者 更改日期 备 注

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    1

    1   引言

    1.1   项目概述

    如今,在大部分公共场合,如车站,广场等,作为“天网”的重要组成成分,虽然安装

    了很多的监控摄像设备,但由于看管监控的人力有限,且受限于人有限的专注力,很难能够

    做到实时预警突发事件,因此目前监控视频中信息的利用率依然是非常低的,大量的监控视

    频仅仅是用来记录了拍摄过程中发生的事件,而要调用大量的人力来观看分析这些视频中发

    生的事件,代价也无疑是巨大的。只有在人们需要重新去了解过去发生的事情的时候,那一

    小部分视频才会从庞大的数据库中调出来供人分析。因此,大量有用的信息就会因为来不及

    看而被浪费了。 同样在个人家庭中,特别是家庭中有老人或者孩子等弱势群体,很多虽然也安装了网络

    摄像头或者一些摄像设备,但却不能实时查看获取家中的情况,当家庭中的有老人或者小孩

    意外摔倒等紧急情况,又无法联系子女时,这些摄像设备也无能为力。 在当今算力大大提升,监控摄像等硬件条件普及的背景下,为了打造智能城市和智能家

    居生活,我们设计了这款可用于实时监控城市和家庭治安情况以及突发医疗报警救援的智能

    物联网产品。

    1.2   项目背景及其必要性

    l   公共家庭安全问题日益严重 n   公共安全事件调查研究,通过在当地派出所和法院进行调查了解到该院 2017 年共

    审理刑事案件 307 件,其中盗窃案件 43 件案犯 84 人;2016 年我院共审理刑事案件 266 件,其中盗窃案件 35 件,案犯 54 人;2015 年审理刑事案件 415 件,其中

    盗窃案件 60 件,案犯 114 人;分别占案件比例为 14%、13%和 14%。而这其中尤属公共扒窃案件最多,扒窃案件由于犯罪人员多为单独作案、赃物转移快、作案场

    所人员流动快等特点,使得无现场可勘、寻找目击证人难。因此,受到刑事处罚的

    扒手,都是被反扒人员抓现行,或者在受害人“提前介入”的情况下被抓获的。

    n   家庭空巢老人和儿童调查,通过多地问卷调查,在城市中年轻人白天大部分都外出上班,而家庭中有老人和儿童的比例竟达到了 67%,他们多被独自留在家中,而调查显示这其中约有 40%的家庭装有家庭摄像头,但却仍不能解决老人和儿童独守的安全问题,因为工作时间精力十分有限

    l   人力资源有限无法及时处理

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    2

    l   受限于人力管理资源的匮乏,大量的监控视频仅仅是用来记录了拍摄过程中发生的事件,而要调用大量的人力来观看分析这些视频中发生的事件,代价无疑是巨大的。

    同时复杂多变的监控场景也是造成视频分析效率低下的一大原因,监控的对象也常

    常各不相同,如果监控的场景中人流特别密集,则会进一步加大检索的难度,这就

    造成了目前只有在人们需要重新去了解过去发生的事情的时候,那一小部分视频才

    会从庞大的数据库中调出来供人分析。

    1.3   术语和缩略语

    [1] CMU,卡内基·梅隆大学

    [2] OpenPose,CMU 开源人体姿态估计工具

    [3] CVPR,IEEE 举办的计算机视觉和模式识别领域的顶级会议

    [4] UCF-crime,UCF 系列数据集为计算机视觉领域著名开源数据集

    [5] Finetuning,将现成的模型略加修改然后再作少量 training,用于样本数量不足时

    [6] Opencv,基于 BSD 许可(开源)发行的跨平台计算机视觉库

    [7] ffmpeg,python 的工具库,主要用于视频内容的剪辑等

    [8] AI challenge,全球 AI 挑战赛由创新工场联合发起的 AI 科技竞赛

    [9] B/S ,浏览器/服务器架构

    [10] LSTM,长短期记忆网络,是一种时间递归神经网络

    [11] face_reco: face recognize 的简写,项目中的一个模块

    [12] event_reco: event recognize 的简写,项目中一个模块

    [13] encoding: 在该文的下面部分表示为名词形式的编码或者是将人脸编码为 128 维向

    量的过程.

    1.4   参考资料

    [1] 3D Convolutional Neural Networks for Human Action Recognition

    [2] CVPR 2016 Convolutional Pose Machine(CPM)


    [3] CVPR2017 realtime multi-person pose estimation


    [4] CVPR2017 Hand Keypoint Detection in Single Images using Multiview Bootstrapping

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    3

    1.5   项目定位

    1.5.1   应用场景

    (1)公共场合:可替代烦劳的人工视频监控,用于处理一些常见的紧急情况,并做到实时报警处理,同时辅助人流统计真正便于城市智能安全管理

    (2)家庭监控:得益于物联网设备,可用于家庭私人安全保障,在防盗报警基础上增加老人小孩安全报警,实时监测家庭成员安全突发状况

    1.5.2   目标人群

    •   城市或企业安防部门 •   基于深度学习的智能监控管理辅助将能够实时统计记录人群流量,便于公共场所

    管理,同时通过分析人群姿态动作,结合实际情况给出判别结果并报警等,如公

    共场所扒窃行为识别等,以及识别姿态异常行为判别是否出现紧急情况,如心脏

    病发倒地等并立即启动医疗报警,第一时间通知抢救

    •   个人家庭用户 •   将已有的家庭摄像设备升级改造,将可以更好地保障家庭的私人安全,如对于家

    庭老人或者小孩独自在家摔倒等紧急情况的智能报警等

    1.6   项目目标

    (1) 项目呈现形式

    基于 openpose 的智能监控识别项目目前采用 B/S 架构的前端页面形式展示,通过简单迁移即可部署于监控探头等摄像物联网设备,目前前端页面输入可为视频形式或通过

    调用本地摄像头进行实时分析,而输出则可根据用户输入返回判别结果并实时记录人

    群流量统计,同时亦可返回姿态标记视频

    (2) 主要功能描述

    •   人群流量统计:通过实时统计记录人群流量,便于公共场所管理

    •   治安监控报警:通过分析人群姿态动作,结合实际情况给出判别结果,如公共场所扒窃行为等

    •   突发医疗救援:通过识别姿态异常行为判别是否出现紧急情况,如心脏病发倒地等

    并立即医疗报警,第一时间通知抢救

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    4

    1.7   解决思路

    1.   技术难点与可行性分析: (1)遮挡问题,即感受野问题,如多人关键点重合遮挡等,通过采用 CPM 的模型的大卷

    积核来获得大的感受野,这对于推断被遮挡的关节是很有效的 (3)速度过慢,在前向传播处理实时问题时处理速度过慢,但是基于 intel Xeon 的强大算

    力以及 intel caffe 在图像处理方面的优势,才能做到准实时效果 (4)二维的姿态关键点的获取可能并不能解决很多实际问题

    2.   数据集: 通过很好运用 intel caffe 的 fintuing 功能,先在 AI challenge 人体骨骼关键点检测数据集(Human Pose Estimation)和 cvpr2018 刚刚开源的 ucf crime 数据集上进行预训练并获得人体动作底层特征,同时通过采集监控视频,首先通过 opencv 和 ffmpeg 进行数据清洗以及预处理以便于模型的训练,并采用人工标注的形式再进行处理,这样既解决了

    人工标注数据集有限的问题又保证模型最终的识别准确性

    3.   算法设计:

    (1)首先对图像的所有出现的人进行回归,得到人体姿态关键点 (2)然后根据 center map 来去除掉对其他人的响应(如多人关键点重合等影响) (3)最后通过重复地对预测出来的 heatmap 进行 refine 得到最终的结果,在进行 refine

    的时候,需要引入中间层的 loss,从而保证较深的网络仍然可以训练下去,从而避免了梯度消失或者爆炸的问题

    4.   网络结构:

    (1)

    (2)接上

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    5

    2   需求分析

    2.1   功能需求

    1.   行为识别 在 posenet 基础上,通过 3D 卷积和 lstm 网络逐帧分析人物动作并挖掘时序特征,从而得到行为动作的识别结果,如扒窃行为识别,摔倒识别等等

    2.   人脸识别

    近年计算机视觉领域发展迅速,特别是一些成熟的领域(如人脸识别),其识别精度甚

    至已经到达了应用级的领域,基于已有的成熟人脸识别技术,通过与行为识别相结合,

    可以增加特定人的识别判定精度,从而做到更好的智能管理

    3.   姿态估计 基于 CMU 开源的 openpose 可以很好地实现人体姿态标记,对于行为识别判定有着相当有效的辅助效果,且其姿态识别保存结果亦可以辅助人工识别判断

    4.   统计分析

    为进一步提高监控管理的效率以及信息的利用率,在行为识别的基础上可以进行有效的

    数据统计分析,如自动统计视频中人群流量变化,以及对于异常事件进行自动分析处理

    和记录

    2.1.1   功能模块结构图

    2.1.2   核心功能模块描述

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    6

    功能模块   功能   功能描述   优先级  

    Event_recogni

    tion  

    行为识别 异常行为识别,如扒窃,摔倒等 1

    人群流量 统计记录人群流量变化情况 1

    统计分析 异常时间类型时间等的记录以及自动分析 1

    Face_recognit

    ion  

    人脸识别 通过添加目标人物进行人脸识别可改变其

    异常行为识别判定精度阈值

    1

    openpose   姿态估计 对人体姿态进行动态标注,辅助行为识别 1

    2.2   非功能性需求

    2.2.1   扩展性和可维护性

    •   在设备领域可广泛运用于带有摄像功能的物理网设备 •   对于其他异常行为的识别,如打架斗殴行为等等

    •   功能方面,基于人体姿态估计即得人体关键点信息,可用于类似的体态语言识别,

    如一些常用的手势用语或者肢体语言信息识别

    2.2.2   易用性

    程序的业务逻辑处理比较符合人的思维逻辑,采用了 B/S 架构,在前端页面中有完整的操作 Demo,用于用户快速了解软件的使用与功能。其中的实时处理逻辑在系统管理员可在前端操作实现一键开机,一键停机。其展示形式使用了图表,折线图,视频流的

    形式,管理员可以在同时了解到当前的监控画面,发生的事件,事件统计图表,事件发

    生置信度折线图等信息

    2.3   运行需求

    2.3.1   用户界面

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    7

    2.3.2   硬件接口

    设备名称 设备配置信息 设备数量 备注

    服务器工作站 E7-4820 40 core 128GB内存 1 训练网络时使用 笔记本电脑 i7-6700HQ 16GB 内存 1 运行软件时使用 Infrared 驱摄像头 最大支持分辨率 1280 * 720 4 训练数据采集 笔记本自带摄像头 最大支持分辨率 640 * 480 1 软件运行

    硬件设备主要为摄像头,摄像头采用的是常用的 HD Infrared Waterproof USB 免驱摄像头和笔记本电脑自带摄像头,可通过 oepncv cv2.videocaptio(camera_id)进行切换,后续改变采用的是视频流的方式,通过 mjpg-streamer /dev0 或/dev1 获取对应的摄像头实时数据并转为视频流。由于网络处理的是视频数据,在网络中使用了多层 3D 卷积,最终的 caffemodel 达到127M,所以对于算力的要求较高。

    2.3.3   软件接口

    •   mjpg_streamer 将 camera 数据实时转为视频流,通过 127.0.0.1:8080/?action=streamer 获取,其数据传输协议为 HTTP

    •   openpose 输入方式可以为图片,视频或视频流,通过 shell 命令调用执行并输出产生 img 和 json

    •   face_recongnition

    •   event_recongnition

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    8

    2.4   用例图

    TryCatch 项目提交文件的 demo 功能部分,用户可以通过提交一段视频至服务器,服

    务器通过运行相关程序进行处理后返回对应的处理数据在前端展示。demo 有提交视频统计

    人流量,标记人体姿态,识别视频中的事件,对视频事件进行统计的功能。

    对于实时监测的功能部分,则通过摄像头实时捕捉画面,对视频中的人物身份进行识

    别,对人物的身体关键点进行标记,对于发生的事情进行识别(例如发生扒窃事件,老人

    摔倒),添加人物信息,只需提供照片,姓名信息提交到服务器端,无需重启便可以立即识

    别新添加的人物身份。

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    9

    3   概要设计

    3.1   处理流程

    程序流程: ①  在服务器终端启动后台程序,flask 便开始监听客户端请求

    ②  访问前端控制台界面,在控制台界面点击 start 按钮启动相应的处理程序

    启动的处理程序有 face_reco openpose event_reco,相应的进程对于获取到的摄像头视

    频流数据进行处理后,产生相应的文件存储到文件中,数据库中或者是缓存在内存

    中。

    ③  通过前端页面获取到上三个模块的数据,在浏览器上展示出来

    ④  添加人物,在需要添加人员信息的情景下,通过浏览器向服务器发送人物照片,姓名等

    信息,无需重新启动服务,立即添加即可立即识别

    后台获取到图片数据后,将数据存储到特定的文件夹下,face_reco 中的一个进程检查到

    文件的添加,加载图片数据,计算其 encoding,并且将用户,照片,序列化文件信息写

    入数据库中

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    10

    数据流程:

    ①  从 mjpg-streamer 中获取到最原始的摄像头画面信息。

    ②  openpose ,event_reco, face_reco 三个模块获得原始图片信息,进行处理后存储进文

    件,数据库或者缓存在内存中。

    ③  用户浏览器通过请求 flask,flask 将这些数据整合,添加格式发送到浏览器

    3.2   总体结构和模块设计

    总体模块结构图

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    11

    模块 功能描述 background 即 flask 后台,与用户交互,响应用户请求,将数据展示给用户 mjpg-streamer 视频流服务,在同一网段下可以访问其视频数据 camera 定时从 mjpg-streamer 中获取到当前画面帧数据 face_recognize 人脸识别模块,标注照片,视频中的人物身份 openpose 标注人体关键点

    event_recognize 通过连续的视频帧(18 帧)导入网络,通过输出判断发生的事件

    服务器端模块

    3.3   功能分配

    1.   后台主要承担了响应用户请求,返回与用户请求页面所对应的 html 格式的文件。 2.   face_reco 主要承担了识别标记人物身份,动态监听加载新的 image 的作用 3.   openpose 主要承担了识别并标记人体关键点,生成新的标记照片 4.   event_reco 承担了识别视频中发生事件,并且存储相关的记录的作用

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    12

    3.4   接口设计

    3.4.1   外部接口

    ①   界面

    在网页主界面中主要包含四大功能,“行为识别”,“姿态估计”,“统计分析”以及“实时

    分析”,其中前三项功能都是主要基于视频输入,用户点击“选择视频”按钮选择本地视

    频上传然后点击开始测试即可对视频开始分析,而分析结果主要会以动态的折线图,柱状

    图等图表的形式展现出来

    ②   软件接口 接口 接口功能描述 face_reco_demo 上传视频或图片文件至服务器,对其中人物身份进行标注 openpose_demo 上传视频或图片文件至服务器,对人体关键点进行标注

    event_demo 上传视频或图片文件至服务器,判断视频中的事件类型 mannum_demo 上传视频文件至服务器,判断视频中的事件类型 realtime_face_reco 对于摄像头采集的视频人物身份进行实时标注 realtime_openpose 对于摄像头采集的视频人体结构进行标注 realtime_event_reco 对于摄像头采集的视频发生事件类型进行判断,统计

    ③   硬件 设备名称 设备配置信息 设备数量 备注

    服务器工作站 E7-4820 40 cores 128GB内存 1 训练网络时使用 笔记本电脑 I7-6700HQ 16GB 内存 1 运行软件时使用 Infrared 驱摄像头 最大支持分辨率 1280 * 720 4 训练数据采集 笔记本自带摄像头 最大支持分辨率 640 * 480 1 软件运行

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    13

    3.4.2   内部接口

    接口 接口描述

    mjpg-streamer 开放 8080 端口,提供视频流服务 camera.getframe() 用于 openpose face_reco event_reco 获取视频流数据 openpose 对 background 开放标记过人体关键点的视频帧 face_reco 对 background 开放标记过人身份的视频帧 event_reco 对 background 开放事件判定类型信息

    3.5   运行设计

    3.5.1   运行模块关系

    background 后台进程担负着三个子模块的初始化,启动任务。而三个子模块则为其提供

    处理过的图片,json 文件,数据库等数据(event_recognize, openpose, face_recognize 统

    称为三个子模块)

    3.5.2   运行控制

    ①   在命令行中启动 flask 服务

    ②   登录前端页面,点击开始按钮来启动 event_recognize, openpose, face_recognize 模块

    ③   前端来获取到上面三个模块处理得到的数据

    ④   在前端页面点击停止,关停上述三个模块

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    14

    3.6   错误/异常处理设计

    3.6.1   错误/异常输出信息

    ①   内部错误 内存溢出

    文件读写错误,文件不存在 数据库错误

    ②   外部访问错误 访问了没有对应处理的 url

    3.6.2   错误/异常处理对策

    错误/异常 处理对策 内存溢出 1.   更换更高配置的硬件设备

    2.   选择效果较差但是消耗内存较小的 caffemodel 以及其对应网络 3.   降低图片的分辨率,即压缩所需要处理的图片

    文件读写错误, 文件不存在

    1.   如果是图片文件,则加载对应的.ser 文件 2.   如果是序列化文件,加载并且 encoding 图片,并将结果写入.ser 文件 3.   如果均不存在,记录日志,提醒系统管理员

    数据库错误 记录日志,回滚数据库事务

    访问不存在的

    页面 重定向,将用户导向 404 页面

    3.7   系统部署方案

    服务端要求: 硬件 要求 备注 cpu 8 核及以上 网络结构较为庞大,并且加载的组件较多,所以需要大的计算量 内存 8GB 及以上 网络结构较为庞大,并且加载的组件较多,内存占用较多 网卡 百兆 服务的数据传输要求较高,需要大的带宽

    客户端要求: 硬件 要求 备注

    分辨率 1366 x 768 及以上 分辨率太小可能导致显示不完全 内存 2GB 以上 客户端运行 javascript 绘制图形,对于内存有一定要求

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    15

    4   数据库设计

    数据库表以及联系

    数据库 ER 图

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    16

    5   详细设计

    5.1   功能模块

    核心功能主要可以分为三点,行为识别,姿态估计和统计分析,其中行为识别是指根据

    用户输入(为方便用户使用,输入主要可以分为三种形式即图片,视频以及实时摄像)通过

    自动分析判别是否存在扒窃,摔倒等行为,而姿态估计是指根据用户输入(输入方式同上)

    进行人体主要骨骼关键点的标注并展示,主要用于辅助人工识别以及用于日后的一些扩展功

    能,统计分析是指用户提交视频录像,通过视频摘要技术压缩分析异常事件,对于判别出的

    异常事件进行分析(记录以及分析对比)便于用户管理与分析数据

    5.1.1   功能描述

    1 行为识别 •   基于图片和视频输入 •   基于实时视频流输入 •   统计分析

    event_recognize 模块 UML 图

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    17

    2 姿态估计 •   基于图片和视频输入 •   基于实时视频流输入

    openpose 模块 UML 图

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    18

    3 人脸识别

    人脸识别模块 UML 图

    5.1.2   性能描述

    该项目主题为视频处理,而视频处理相较于图像需要更大的计算量,所以对于计算终端

    的压力还是较大。为了保证每个模块的算力,使用到了多个处理进程,为了不同进程通信,

    使用了内存缓冲,文件交互读写的方法。对于设计的 event_reco 模块,由于需要连续的视频

    帧,所有的数据获取操作全部在内存中完成,具有较高的流畅度,使得其性能的有较大的提

    升,由于 intel caffe 的优化,使得这些计算在 4 核 8 线程的笔记本中也可以较快完成。  

    5.1.3   输入

    •   图片 •   视频 •   实时视频流(摄像)

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    19

    5.1.4   输出

    l   折线图 •   扒窃和摔倒行为置信度变化图 •   人群流量变化图

    l   表格 •   时间戳 •   事件类型(扒窃/摔倒) •   置信度 •   截屏图片

    l   饼状图(事件类型及其他的占比分析) l   柱状图(行为识别的各类形可能性,如 top3 可能性)

    5.1.5   算法

    openpose 使用为 CMU 开源软件,在多人复杂场景下人能够准确识别人体身体关键点。

    face_reco 首先是通过神经网络来发现人脸,再对发现的人脸进行编码 encoding,即将人

    脸图像的数据转换为一个 128 维的 float64 类型的 numpy 数组,比对人脸则计算在不同

    encoding 之间的欧氏距离。

    event_reco 需要输入连续的视频帧,通过调查发现扒窃,摔倒这些动作的大致是在 4-5

    秒发生的,为了兼顾计算量的大小和网络的发现效果,tcnet(即 event_reco 模块的网络配置)

    选择连续的 18 帧输入作为网络的输入。在实际的部署中,为了达到最佳的效果,在 event_reco

    模块中缓存了最新的连续的 18 帧视频画面,以尽可能快速度的去计算,event_reco 中的缓

    存数据也在同时更新,计算进程得出结果后输出便立即返回计算最新的缓存数据。目前在 4

    核笔记本下,每次操作约更新 4 帧照片。

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    20

    5.1.6   程序逻辑

    以下描述了四个模块的工作流程 1 后台处理

    flask 模块处理用户请求的流程图

    该模块主要处理了用户的注册,登录,访问处理逻辑,对于特定资源需要一定的访问

    权限,否则不会提供相关服务或者是提供相关的服务信息。

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    21

    2 face_recognize 模块

    face_recognize 模块处理视频数据流程图 ①   接收到启动服务的指令,查询数据库相关记录,查询到人员姓名,年龄,照片存储地

    址,序列化文件存储地址信息(数据库记录了文件的位置,而非文件内容)。 ②   从配置文件中读取,选择人脸 encoding 加载的策略。

    1.   从图片文件加载。 2.   从序列化文件中加载(这种方式加载较快)。

    ③   人脸识别开始,从视频中不断的获取到照片数据,与上步加载到的 face_encoding 进行比对,识别人物身份,结束后对新获取的数据进行同样的处理。

    ④   对于特定文件夹下数据进行检查,如果有新添加的数据,动态加载信息并且存储进数据库中。

    ⑤   接收到 stop 命令,进程停止。

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    22

    3 openpose 模块

    openpose 模块处理视频输入流程图

    ①   接收到启动命令,从配置文件中读取包含了分辨率,帧率等信息。

    ②   openpose 进程根据上步的配置文件启动,不断的从视频流中获取信息,识别照片中人

    物的关键点,输出到指定文件夹中,接收到新的数据进行同样的处理。

    ③   检测到 stop 命令后停止服务进程。

  • Try-Catch 文件编号:Deep_silent-SWC2018  

    23

    4 event_reco 模块

    event_reco 处理视频输入流程图

    ①   接收到启动命令后,读取配置文件获取配置信息。

    ②   根据配置文件的信息指导去加载相应的 deploy.prototxt,caffemodel,组成网络。

    ③   不断地获取照片流中的信息,导入网络中进行计算,根据网络的输出数据判断当前发

    生的事件,并将结果写入到 json 格式文件中。

    ④   接收到停止命令,停止进程。