(两星难度)2024最强行人重识别项目实战

作品简介

B站效果Demo

想要加自己的模型和DIY前端界面,可以看看:说明

看了git,这个项目博主commit了上百次,核心代码也2000行了。创作不易,感谢大家支持。

注意事项:版权所有,禁止盗卖或用于商业化用途;

我们的解决方案在目前是非常有竞争力的,同时我们采用了最新的visual transformer的reid框架,也有更强的提升空间。我们的代码符合大厂开发规范,所有模块被充分解藕。

Install & Run (我们的安装和测试非常简单,只需你会装conda就行)

博主测试:win11/macbook正常运行。

- step1: conda create -n reid_gui python=3.8

- step2: conda activate reid_gui

- step3: If mac or linux OS: sh install.sh; 

     or win OS: ./install.bat

- step4: cd GUI; python main.py


Person Reid(行人重识别2024SoTA)

任务目的: 使用一张人的全身照,在视频or图像中找到这个人出现的时刻。


问题拆分:

For image: 行人检测-> person reid -> vector search -> matching.

For video: 行人检测 -> 多目标跟踪(MOT) -> person reid -> vector search -> matching


  • 行人检测: YOLO检测器 or 其他的detection模型(技术成熟).
  • MOT: 使用滤波/位置等信息跟踪, 来减少调用reid 模型的次数,从而来加速(reid相对track耗时很多,技术成熟)。
  • Search engine: Faiss 向量检索库支持物理加速和算法加速(有损)。
  • Person Reid: 将目标图像映射到特征空间上, 即输入图像输出vector。这一类属于metric learning, 核心思想是类内相近,类间相远。


攻克难关:

1.调研核心算法reid端到端模型.

step1:找目前该任务学术界的SOTA.

How:

  • 找到该任务的公开数据集.MSMT17数据集更大ID更多,为我们参考的主metircs.


  • 在paperswithcode.com上找到该数据集指标最高的几篇论文。


  • 认真阅读这些论文,看看论文的idea与method(是否存在秀技但泛化性弱),拿上图为例,公平的对比是without re-ranking & without extra trainning data. 最后我们选择clip-ReID作为我们的baseline.

NOTE: cam_id和view这些先验信息对于通用模型是没有这些标签的,所有最好不加。

选它的原因: 1.结构简单,没有使用过多trick,直觉上更合理。



2.复现指标.

准备数据集+配置环境+阅读源码.


3.改进模型.

几乎所有DNN模型就两个结构: backbone + task head

训练模型只有三步: 1.改写dataloader(数据增强等trick) 2.模型结构调试(比如:a.backbone换成更深的网络,用更强的预训练参数;) 3.make loss.

由于up主的时间有限: 尝试了1与3, 最终将mAP 0.734 ->0.737, R1 0.887 ->0.891

up主尝试将market-1501的所有数据再加上msmt17的training set 来训练, eval在msmt17的val set上。但很奇怪指标没提升:

4.up主的一些改进意见

1.如果要打竞赛

最简单的方法: backbone换一下/预训练的参数换成更强的,目前用的的是opanai-clip-vit-b-16 排名71.



2.不成熟的idea(也许指标有提升可以到顶会bordline水平).

a. 论文作者已经证明了camid与view这些信息有用,但这些信息对于有些数据集是缺失的,设计一个learnable memory bank.用网络参数去学习这些差异性

B. 借助多模态大模型,生成文本物料, 比如:文本形式为:上身为x色的_衣服.等.模型结构采用cross encoder,设计masking modeling预训练任务去加强细粒度的对齐。

里面有我的online方式

如果大家有安装,调试方向的问题,可以问我,我将免费解答。

落地项目:

  1. 设计GUI,画交互图和UI.

  1. trainning的checkpoint删除梯度等信息转化为跨平台的inference模型(onnx)
  2. 串联pipeline,参考设计模式,多线程/异步/同步/数据库同步等
  3. 设计测试用例,测试debug


这样我们就丝滑地做成了在2024年算法上非常有竞争力的一个项目。




创作时间: