我们基于yolox目标检测算法,以监控画面的画面帧作为输入,来实时识别-分割-追踪校园中正在骑行的自行车与自行车上的人。
综合考量了监控分辨度低人像模糊,自行车特征信息不易提取、多机位拍摄带来的画面追踪困难等问题,我们训练了自己的人车重识别的工业级AI模型BikeReid,分离人车特征向量进行表征和度量学习,根据人的穿着、姿态与自行车纹理等特征完成识别分类任务,避免了传统的人脸识别方案带来的隐私问题。每帧的Reid计算生成特征向量平均仅需0.024s,完美完成了实时性的要求。BikeReid在rank10准确率上达到了79.53%,达到工业上部署要求。
此外,我们建立一个Mysql数据库,用来存储各自行车与人的的配对、监控位置与时间戳等基本信息;而对于核心的查询预警功能,利用Milvus引擎针对海量的特征向量进行高速相似度查询。当发现全新的配对时,会将此配对及对应画面加入预警库,从而对自行车盗窃进行预警,并为找回被盗自行车提供便利。
我们的预期使用场景是:当有学生自行车被盗时,数据库会自动发出预警信息,校方仅需查询一次即可获知所有疑似人车不匹配画面帧,选中后再次点击查询,即可显示此辆自行车在监控记录里所有历史人车配对图片,大幅减少查看监控的代价,从而提高寻找被盗自行车的效率。
本项目扩展性良好,对于特征信息更突出的电瓶车、摩托车、乃至汽车等交通工具,只重训REID模型即可实现相同的功能,这里以难度系数较高的自行车识别作为演示。
项目主要分为人车跨镜头重识别管线与数据库交互管线两部分。
我们使用一个数据库来存储各自行车与人的特征向量的配对。 同时我们也建立一个预警库来存储可疑的人车配对及其画面样本。当发现全新的记录时,会将此配对及对应画面加入预警库以便对自行车盗窃进行预警,存储的画面将用于为找回被盗自行车提供便利。
yolo算法设计快速、准确且易于使用,使其成为各种物体检测与跟踪、实例分割、图像分类和姿态估计任务的绝佳选择 ,具有突出的实时性和高精度等优良特性。
目标检测模块使用YOLOx目标检测算法,对输入的画面进行目标检测,分割出画面中的自行车与人。
我们选择YOLOX-m模型来完成目标检测功能,该模型参数量为25.33M, Gflops量为73.98,在V100显卡上YOLOX对一帧图像耗时平均为0.024s(图像大小不影响结果,因为其大小会被标准化)
功能:
针对监控画质难题,仅仅利用现有的yolo模型无法胜任此任务。故训练了自己的BikeReid模型是重中之重。 训练的AI模型负责将分割出的人车图像分别送入模型进行跨摄像头重识别,得到自行车的特征向量,是本项目核心所在。 下面是BikeReid模型与其余几个模型的效果对比图: 功能:
数据库模块通过MYSQL和Milvus两个数据库耦合共同实现。简要来说,其中MySQL记录人、车、监控编号、时间戳等基本信息,建立关系型数据库;而Milvus向量数据库则专用于自行车特征向量的存储,高速检索,相似度查询功能。
MySQL部分:
主功能分为两大块:
Milvus部分:
Milvus是 基于 FAISS、Annoy、HNSW 的向量搜索数据库,核心是解决稠密向量相似度检索的问题。此外,Milvus 支持数据分区分片、数据持久化、增量数据摄取、标量向量混合查询、time travel 等功能, 针对万亿级向量完成毫秒级搜索,适配在本项目特征向量embedding的索引检索任务 。
此部分主要功能有