阡陌一梦
人工智能
StudyAi
首 页
目 录
登录
注册
智慧安防系统
16天前
2792字
57阅读
0评论
在深度学习催热人工智能几年之后,如何使用人工智能技术实现落地产品的应用,是业界正在努力做的事情。而智慧安防系统,正是一套可行的落地产品方案。这也是我们正在做的事情:一套端到端的智慧安防系统解决方案。先上图,如下: 图一:智慧安防系统 一、基本介绍 这个系统的解决方案主要由3大模块组成:检测跟踪模块,特征模块,检索模块。端到端智慧安防系统最终的目标是希望通过指定属性来找到目标人物或车辆,或者通过输入一个人的图像,将他在其他场景出现的图像一并找出来。这大大简化了公安正常维护秩序,查找失踪人员,追捕在逃罪犯的难度。 图二:结构化查询 这张图,实现的是通过输入结构化信息如:非机动车。将监控摄像头内所有指定时间内的机动车从监控视频中裁剪收集并显示出来。 系统流程介绍: 系统的流程是通过读入安防的监控视频,实现对行人和车辆的检测,检测到的目标(行人,车辆)会传递给跟踪,跟踪技术将目标盯住,然后选择最好的检测图片,将他们传递给特征模块。特征模块会将刚才得到的检测图片同时分两个网络进行多属性分类和行人重识别,多属性分类得到行人和车辆的各种标签类别信息,行人重识别进行对人体非结构化特征的计算。这些数据全部存入数据库。检索模块又分为结构化检索和非结构化检索,结构化检索通过输入结构化信息来实现对指定属性,如上衣颜色,发型,性别,车型等实现对行人或车辆的查找。非结构化检索通过输入图片,将相似的图片搜索出来,实现以图搜图功能,将不同摄像头下的同一个人找出来。 算法简要介绍: 算法主体是目标检测,目标跟踪,多属性分类和行人重识别。检索部分这里没有涵盖进来。 1 目标检测 在智慧安防系统中,因为对系统的速度有较高要求,所以检测方案采用的是一阶的深度学习目标检测技术。经过多次训练发现,一阶的yolov3和ssd并没有本质区别,表现效果上也不相上下。目前使用的是yolov3的tiny版。下图是yolov3的结构图。tiny的主要区别在于只取原本3段尺度的两个小尺度,加快了网络速度,但也牺牲了一些性能。 本篇博客并非以介绍算法内容为主。有关yolo的详细介绍。 英文版请参考https://pjreddie.com/darknet/yolo/ 中文版请参考https://blog.csdn.net/qq_34199326/article/details/84072505 原论文地址https://pjreddie.com/media/files/papers/YOLOv3.pdf 2 目标跟踪 目标跟踪的算法,这里采用的deepsort。我对此还并不熟悉,算法人员采用的是使用卡尔曼滤波进行跟踪,然后再加入一个小网络提取非结构化特征。 论文地址https://arxiv.org/pdf/1703.07402.pdf 3 行人多属性分类 行人多属性分类,是一个多分类的网络,将分类出的结果传递给结构化检索使用,从而实现根据搜索条件来找到相对应的目标。多属性会对人的性别,发型,年龄;是否戴帽子,是否戴眼镜等共26个属性进行判别。但人的不同朝向,各种属性在图像中表现出来的特征相差常常会比较大,所以在多属性分类的网络中,还需要加入对人体朝向的判断,再根据朝向的不同进行多属性分类,这样能够更为精确。这种网络,论文作者称之为VeSPA model。如下图所示: 图 VeSPA model 论文地址https://arxiv.org/pdf/1707.06089.pdf 4 行人重识别 什么是Re-ID? • 行人重识别(Person Re-identification也称行人再识别,简称为ReID,是利用计算机视觉技术判断图像或者视频序列中是否存在特定行人的技术。广泛被认为是一个图像检索的子问题。给定一个监控行人图像,检索跨设备下的该行人图像。 为什么要Re-ID? • 在监控视频中,由于相机分辨率和拍摄角度的缘故,通常无法得到质量非常高的人脸图片。当人脸识别失效的情况下,ReID就成为了一个非常重要的替代品技术。 • 重要特性:跨摄像头 --> 学术中性能评价:检索出不同摄像头下的相同行人图片 论文地址:https://arxiv.org/pdf/1711.08184.pdf reID综述博客:https://blog.csdn.net/weixin_41427758/article/details/81188164 二、算法代码讲解 代码结构图如下: 这里加了一个数据读取的部分。代码的pipeline流程是读取数据,检测,跟踪,特征,送入数据库。考虑到python的全局锁,这里对每个部分开启了一个进程。 1 整体结构代码 1) 读数据进程 2) 检测部分 3) 跟踪部分 4) 特征部分。结构化属性分类和行人重识别reid放到一个进程中。 2 代码细节 1) 读数据代码 读数据代码函数主要部分是针对读取数据的格式进行了划分。分为读取图片和读取视频两种形式。数据传输采用zmq。 2) 检测代码 目标检测是智慧安防系统算法的第一站,也是最重要的一站,后面算法的性能都会受到这个影响。在整个系统中,起到的作用是为后续算法提供最根本的行人和车辆的数据。代码太长,不方便全部截取出来。 整个进程的思路大体上是:zmqpuller_vloader3detect读取数据,得到frame_info,这里面有很多信息,如img。img从frame_info取,然后把多个img放一起,称input_imgs,input_imgs经过model得到detections. detections再过下nms,再通过枚举将里面的bbx取出来。最后使用zmqpusher传给tracker。 3) 跟踪部分 目标跟踪在智慧安防系统中,主要是起到优选图片的作用。本代码将承接检测的数据,从其中优选出同一个人id五张图片。后续可能会选择只优选一张图片。跟踪最后会调用opencv将优选的图片裁剪出来,并将他们的id一并传给特征部分。 主要代码如下: 4 特征部分 特征部分又分为两个部分。多属性分类和reid。特征部分是对优选出的图片进行特征提取。多属性分类是将图片中的行人的各部分属性分类出来,然后提供给结构化检索。reid是行人重识别,是对图片行人的特征通过深度学习网路转化为2048维的非结构化特征,同一个人的非结构化特征距离一般都比较小,不同人之间的距离会比较大。然后提供给非结构化检索实行以图搜图功能。 主要代码如下:
收藏 (0)
打赏
点赞 (1)
热门评论
到顶端
发布^_^
私信
关注
访问
专栏文集
深度学习(机器视觉)
|5
成长小记
|1
算法原理小记
|0
今日访客
文章归档
2019-02
(4)
2019-01
(2)
阅读排行
近半月感悟
60
智慧安防系统
57
EAST+CRNN:高效而准确的场景文本检测识别(DF华为汉字书法竞赛)
32
图片标注转车道线掩码
32
powerd by studyai.com 2017