当前位置: 首页 > news >正文

基于深度学习的多人步态识别系统(YOLOV5+DeepSort+GaitSet+Segmentation)

前言

        本文章仅仅提供一种自认为比较科学的方式去实现多人步态识别,如果对多人步态识别感兴趣,却又不知道如何实现的话,这篇文章将会有莫大的帮助。以下方法作者皆实验过是可行的方案。


基于深度学习的多人步态识别系统(YOLOV5+DeepSort+GaitSet+Segmentation)

技术清单:

Yolov5+DeepSort

Segementation/背景减除法

GaitSet

基本原理:

损失函数(三元组损失函数Triplet Loss):

剪影图: 

 步态特征:

外形混合步态识别:

迁移学习:

【output】:

 CASIA-B数据集:


技术清单:

        · Yolov5 

        · DeepSort

        · Segementation/背景减除法

        · GaitSet

        · CASIA-B


Yolov5+DeepSort

         yolov5用于目标检测,DeepSort使用卡尔曼滤波匈牙利算法,利用目标检测所获得的bbox作为输入实现行人追踪。给每个单独的行人打出专属ID。这样可以识别出下一帧图片的人是上一帧图片中哪个人,或者说这一帧的人下一帧移动到哪个位置去了。

行人追踪onnx成品

Segementation/背景减除法

         此方法是用来获取剪影图的,具体在GaitSet中有所介绍。

GaitSet

基本原理:

           本步态识别系统主要基于GaitSet模型进行实现的。

 介绍:Gaitset是具有泛化能力的, 这一点和图像分类网络完全不一样,Gaitset不是学训练集中人的步态特征,而是学习提取步态特征的能力,也就是如何在一堆人里(数据库里)找到与探针最相近的那个数据。所以正在使用的时候,数据库是随时可以改变且不需要再次训练的。

损失函数(三元组损失函数Triplet Loss):

   最小化锚点和具有相同身份的正样本之间的距离,最小化锚点和具有不同身份的负样本之间的距离。

(Triplet Loss的目标:Triplet Loss的目标是使得相同标签的特征在空间位置上尽量靠近,同时不同标签的特征在空间位置上尽量远离,同时为了不让样本的特征聚合到一个非常小的空间中要求对于同一类的两个正例和一个负例,负例应该比正例的距离至少远margin)

剪影图: 

     我们对每一个包含人物的64*64像素的图像裁剪后进行cv2图像处理,使其处理成只包含人物轮廓黑白剪影图,这个工作是图像显著化处理和语义分割的简化版.

      深度学习推荐方法:语义分割:

      机器学习推荐方法:背景减除法

 步态特征:

           非连续不相关,是一个人30张步态图像中任取5张做为代表为消除其被遮挡或者剪影图裁剪有误的误差.

 

外形混合步态识别:

        步态识别是需要对数据集进行归类,如A人为A人集合,B人为B人集合,这样的输入顺序,但是这与摄像头(video)经过YOLOV5部分读入的人物信息不一致的,实际上读入的信息是 第一帧:甲,乙,丙。第二帧:甲,乙,丙,......我们先要判断出每一帧甲乙丙等三幅图下和ABC等人的对应关系,如甲:B,乙:A,丙:C(不一定是顺序对应)然后再对每一帧出现的A,B,C等进行归类.如A人集合,B人集合,C人集合. 然后得到对应每人的集合后,并且假设每个人的集合的大小都大于10,即每个人都有10张以上的图片后,再将其投入Gaitset网络,这样就从人—图片字典,变成了人—特征向量字典,我们先得到目标人物步态的特征向量,通过余弦相似度与其余的每个人都进行计算,最终得到相似度最为显著的为依照目标人物步态的步态试别.(即相似度不仅要与目标人物步态特征向量相似度高,还要在实时系统中随帧数增加变化中最为稳定,这里采用假设检验,3sigma原则,即计算相对于其他人与目标人物的相似度后得出相似度μ+3sigma,目标人物再次出现的相似度要>μ+3sigma)

      深度学习推荐方法:多目标跟踪算法ByteSort/DeepSort。

迁移学习:

        我们运用的数据集是CASIA-B包括15004个步态序列,在gaitset网络中训练完成之后,将其网络训练好的参数作为迁移学习的初始参数再进行微调.          

   

【output】:

与目标步态相似度显著表:以下的表对应:

第一部分:当前存在的人物步态字典中每个人与测试目标的相似度(欧氏距离)字典

第二部分:目标与测试目标1的相似度,目标及其其相似度的假设检验值 

 CASIA-B数据集:

         CASIA-B是一个比较经典的步态识别数据集(2006),其包含124个目标(subjects),每个目标有3种步行情况和11个角度。3种步行情况指“normal(NM)”、“walking with bag(BG)”、“wearing coar or jacket(CL)”,其中每个目标有6段NM序列、2段BG序列、2段CL序列。11个角度是指0°、18°、…、180°。因此,这124个目标中,每个目标都有11×(6+2+2)=110段序列。经我观察,每段序列长度不定,一般80~100帧。

相关文章:

  • 计算机网络——组成、分类、性能指标、分层结构
  • 【小程序】组件化开发的基本使用(二)
  • 【IVI】15.1.6 系统稳定性优化篇(LMKD 六)Vmpressure监视器初始化及其工作原理
  • 分享程序员面试的7个技巧
  • 市政管理学考试复习资料
  • c语言数据结构 二叉树(三)
  • 汉明码原理
  • 黑马瑞吉外卖之菜品信息的修改
  • 【Vue 基础知识】v-for的使用和注意事项
  • LeetCode Cookbook 数组习题(8)
  • Java新手小白入门篇 SpringBoot项目的构建
  • 第十一届中国创新创业大赛浙江赛区暨第九届浙江省“火炬杯”创新创业大赛-新一代信息技术行业总决赛
  • kuangbin专题六 最小生成树(2022.9.3)
  • C++s简单实现Scoket编程
  • 做一个物联网温湿度传感器(一)SHT30传感器介绍
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • co.js - 让异步代码同步化
  • css系列之关于字体的事
  • Java反射-动态类加载和重新加载
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 近期前端发展计划
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 删除表内多余的重复数据
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 我的面试准备过程--容器(更新中)
  • 线性表及其算法(java实现)
  • 一个项目push到多个远程Git仓库
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • # 达梦数据库知识点
  • (1)(1.13) SiK无线电高级配置(五)
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (day6) 319. 灯泡开关
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (Ruby)Ubuntu12.04安装Rails环境
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (转载)Linux网络编程入门
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .aanva
  • .NET BackgroundWorker
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET6实现破解Modbus poll点表配置文件
  • .NET轻量级ORM组件Dapper葵花宝典
  • .Net中的设计模式——Factory Method模式
  • .skip() 和 .only() 的使用
  • @RestController注解的使用
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • @取消转义
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • []FET-430SIM508 研究日志 11.3.31
  • [52PJ] Java面向对象笔记(转自52 1510988116)