想要加自己的模型和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方式
如果大家有安装,调试方向的问题,可以问我,我将免费解答。
落地项目:
- 设计GUI,画交互图和UI.
- trainning的checkpoint删除梯度等信息转化为跨平台的inference模型(onnx)
- 串联pipeline,参考设计模式,多线程/异步/同步/数据库同步等
- 设计测试用例,测试debug
这样我们就丝滑地做成了在2024年算法上非常有竞争力的一个项目。