京东发布FastReID:目前最强悍的目标重识别开源库!
京东AI研究院近日发布了基于PyTorch的目标重识别(ReID)开源库 FastReID ,其不仅对相关领域的研究有帮助,而且对工程部署有优化,在各大数据集上的评测结果惊人,其今天公布的论文 FastReID: A Pytorch Toolbox for Real-world Person Re-identification 中详细介绍了该库。
论文作者信息:
官方称该库在京东内部已经获得广泛应用,所以它不是一个实验室项目,而是产品级标准的开源库,值得参考!下面我们就一探究竟。
什么是目标重识别(ReID)?
简单理解就是对于一个特定的目标(可能是行人、车辆、人脸或者其他特定物体),在候选图像集中检索到它。或称图像中目标的实例级检索。
如在视频监控领域,行人重识别是各大厂商重点研发的技术。
FastReID 特点
提供了针对ReID任务的完整的工具箱,包括训练、评估、微调和模型部署,另外实现了在多个任务中的最先进的模型。
1)模块化和灵活的设计,方便研究者快速将新的模块插入和替换现有流程中,帮助学界快速验证新思路;
2)易于管理的系统配置,FastReID用PyTorch实现,可提供在多GPU服务器的快速训练,模型结构、训练和测试可以用YAML文件方便定义,并对每一块提供了众多可定义选项(主干网、训练策略、聚合策略、损失函数等)。
3)丰富的评估系统,不仅实现了CMC评估指标,还包括ROC、mINP等,可以更好的反应模型性能。
4)易于工程部署,FastReID不仅提供了有效的知识蒸馏模块以得到精确且高效的轻量级模型,而且提供了PyTorch->Caffe和PyTorch->TensorRT模型转换工具。
5)众多的State-of-the-art预训练模型,官方计划发布人员重识别(person re-id),部分可见的人员重识别( partial re-id), 跨域人员重识别(cross-domain re-id) 和 车辆重识别(vehicle re-id) 等众多模型。
FastReID 架构
好了,说了这么多,让我们来看看FastReID的整体架构:
上图已经完整列出了FastReID各个模块,上下分别为训练和推理。
训练阶段包括模块:
1)预处理Pre-processing,其实就是各种数据增广方法,如 Resize,Flipping,Random erasing,Auto-augment,Random patch,Cutout等;
2)骨干网(Backbone),包括主干网的选择(如ResNet,ResNest,ResNeXt等)和可以增强主干网表达能力的特殊模块(如non-local、instance batch normalization (IBN)模块等);
3)聚合模块(Aggregation),用于将骨干网生成的特征聚合成一个全局特征,如max pooling, average pooling, GeM pooling , attention pooling等方法;
4)Head 模块,用于对生成的全局特征进行归一化、纬度约减等。
5)训练策略,包含Learning rate,warm-up,Backbone freeze等。
6)特别值得一提的是其损失函数,不仅包括常见的Cross-entropy loss, Triplet loss,Arcface loss,还实现了今年上半年刚出的旷视CVPR 2020 Oral 论文中的Circle loss!(被认为是目前在各种度量学习任务中表现最好的)可见FastReID开发团队紧跟前沿。
在推断阶段,包含模块:
1)度量部分,除支持常见的余弦和欧式距离,还添加了局部匹配方法 deep spatial reconstruction (DSR);
2)后处理部分,指对检索结果的处理,包括K-reciprocal coding 和 Query Expansion (QE) 两种重排序方法。
重点来了!实验结果
作者在ReID的几种任务的常见数据集上测试了FastReID的精度。
1)在人员重识别任务中三大数据集的结果(配置略):
FastReID 取得了三大数据集上的所有评价指标的最高精度!超越了之前最高的 CVPR 2020 的 Circle Loss!
可见FastReID的实现质量很高,且其包含的各个模块的组合是十分有效的。
2)跨域人员重识别是指调整模型使得其在有标注的源域数据集训练而在另一个无标注的目标域数据集仍然具有推广性,不同的域往往图像差异很大。
在此任务中的结果如下:
FastReID的跨域ReID配置:
可见在FastReID-MLT超过了绝大多数该方向的算法,且接近监督学习方法的结果。
3)部分可见的人员重识别(Partial Person Re-identification)即只有某人的部分不完整图像,在候选图像中检索这个人。该库实验此问题相应的配置 FastReID-DSR 如下:
结果如下:
FastReID-DSR 同样达到了在绝大多数指标上的最好结果。
4)车辆重识别任务实验,算法配置如下:
在三个数据集上的实验结果:
在这个问题上结果异常好,FastReID 匪夷所思地实现了对17-19年出现的SOTA算法碾压式超越!
为什么FastReID在各种任务中都表现这么抢眼?我想就如YOLOv4一样,不是去创造新算法而是组合各种最佳实践,开发团队实现了业界验证过的诸多有效的SOTA算法和tricks,这也使得它对于实际项目的开发者更具吸引力。
总之,FastReID很显然是非常值得关注的目标重识别开源库!
无独有偶!旷视南研院上个月也开源了几乎功能相同的的开源库PyRetri:
感谢创造精品的这些开发者!
论文地址:
https://arxiv.org/pdf/2006.02631v1.pdf
代码地址:
https://github.com/JDAI-CV/fast-reid
在看,让更多人看到