FastReID:首个产业级通用目标重识别开源库

Stella981
• 阅读 795

引言

京东AI研究院近日发布了基于PyTorch的通用目标重识别(ReID)开源库FastReID,其发布对相关领域的研究起到积极的促进作用,同时也加速技术产品落地应用。FastReID已经在行人重识别、车辆重识别上都取得了优异的评测结果,在京东内部,该技术已经获得广泛地应用于智慧园区、智慧楼宇、智慧供应链、线下零售等实际项目中。在刚公布的论文FastReID: A Pytorch Toolbox for General Instance Re-identification中详细介绍了该开源库的内容。

无论是零售场景下的“无人超市”还是供应链场景下的智慧园区,亦或是疫情之下的口罩佩戴……在“有意遮挡”的情况下,“人脸识别”的难度都会面临不小的挑战,其在“配合”模式下的良好识别率将很难发挥价值。

因此,通用目标重识别的价值将越来越重要,为满足通用实例重识别日益增长的应用需求,京东AI研究院于近日发布了基于PyTorch的通用目标重识别(ReID)开源库FastReID ,**在FastReID中,高度模块化和可扩展的设计使得开发者很容易实现新的研究思路。**其发布对相关领域的研究起到积极的促进作用,同时也加速技术产品落地应用。

在我们了解FastReID是什么前,先一起来看看什么是行人再识别(ReID)。

FastReID:首个产业级通用目标重识别开源库

_ReID全称Re-identification,也就是重识别的意思。_简单理解就是对于一个特定的目标(可能是行人、车辆、人脸或者其他特定物体),在候选图像集中检索到它。或称图像中目标的实例级检索。

_ReID算法能够通过视频监控系统,在跨摄像头的条件下检索行人,大大拓展摄像资源的利用深度。_ReID可以弥补人脸识别的局限,提升对特定人物的识别追踪能力,并大大降低人力成本。

FastReID:首个产业级通用目标重识别开源库

FastReID采用高度模块化设计,它具有更高的灵活性和可扩展性,能够在支持多GPU训练,它的扩展性设计使其在重构代码的情况快速实现很多研究项目。

考虑到在实际情况中,学术研究与工程模型部署往往存在较大差距,代码对齐问题使得学术研究成果很难快速地转化为产品。因此,为了加速学术界研究人员和工业界工程师对重识别技术的发展,我们推出了FastReID代码开源库。FastReID具有高度模块化和可扩展的设计方式,使研究人员和工程师们能更加容易地嵌入自己设计的模块并快速实现任务。除此之外,可管理的系统配置可以使其应用更加的灵活,易于完成多种任务。FastReID能够提供不同方法之间的公平对比。该开源库已经成为了京东内部ReID技术研究和开发的核心引擎。

FastReID参照了Detectron2的整体概念和设计哲学,设计成了一个高度模块化和可拓展的架构,从而可以让研究人员快速的实现新的idea ;更重要的是,该框架友好的管理系统配置和工程部署函数可以让工程师快速的部署它。

FastReID:首个产业级通用目标重识别开源库

FastReID开源库针对ReID任务提供了完整的工具箱,包括模型训练、模型评估、模型部署等模块,并且实现了在多个任务中性能领先的模型。

_1) 高度模块和扩展化设计,_方便研究人员快速地将新设计的模块插入到系统的任意部分,而且能够帮助研究员和工程师快速地实验新的想法。

**2) 系统配置高度管理化,**可统一配置模型结构、模型训练、模型评价、模型部署到YAML文件中。可自定义模型结构的主干网络、训练测试、损失函数等。

**3) 丰富的模型评估系统,**不仅实现了常见的CMC的评估指标,而且添加了包括ROC曲线、样本类内类间分布曲线、MINP等多样性指标,更能反应模型性能,指导模型的部署。

**4) 易于工程化部署,**提供了有效的知识蒸馏模块得到精确的轻量级模型,并且提供了Pytorch转Caffe和PyTorch转TensorRT的工具,一键式获得工程部署模型。

**5) 提供领先预训练模型,**提供多个任务包括行人重识别、遮挡/部分行人重识别、跨域行人重识别和车辆行人重识别的SOTA模型和配置。

FastReID:首个产业级通用目标重识别开源库

FastReID:首个产业级通用目标重识别开源库

上图已经完整列出了FastReID各个模块,上下分别为训练和推理。

训练阶段包括模块:

◇ **图像预处理(Preprocssing),**包含丰富的数据增广方法,包括 Flipping, Random erasing, Auto-augment, Random patch, Cutout等预处理方法,旨在提高模型泛化性和鲁棒性。

◇ **骨干网(Backbone),**包含了目前主流的backbone,可以根据需求选择相应的主干网络,同时增加目前常用的特征表达模块,如Non-local和instance batch normalization (IBN)。

◇ _聚合模块(Aggregation),_用于将骨干网生成的特征图聚合成一个全局特征,如max pooling, average pooling, GeM pooling, attention pooling等方法。

◇ _Head模块,_一般生成的特征的维度比较大,需要对特征进行降维和归一化,以便于进行存储。

◇ _训练策略,_目前大多数网络采用的是ImageNet的pre-trained模型,一些新加的层没有进行预训练,在模型的训练初期采用Backbone Freeze和Network Warm-up的方式对模型预训练。

FastReID:首个产业级通用目标重识别开源库

◇_损失函数,_包括常见的Cross-entropy loss,Triplet loss,Arcface loss, Circle loss。

■ 在推理阶段,包含模块:

◇ _度量部分,_除支持常见的余弦和欧式距离,还添加了局部匹配方法deep spatial reconstruction (DSR)。

◇ **度量后处理指对检索结果的处理,**包括K-reciprocal coding和Query Expansion (QE) 两种重排序方法。

FastReID:首个产业级通用目标重识别开源库

通用物体重识别是计算机视觉中一项非常重要的任务,该技术可以用于行人/车辆重识别、人脸识别、野生动物保护、商品溯源、拍照购物、无人超市等应用中。其中包括搜索电视剧中感兴趣的演员的视频、从监控视频中搜索商场中走失的孩子、从城市监控系统中搜索可疑车辆的视频、电子商务平台的拍照购物、商品溯源防伪等,甚至在生态环境保护领域中还可用户东北虎保护等野生濒危动物的保护的应用。

FastReID:首个产业级通用目标重识别开源库

在新零售场景中,跨镜追踪技术可以让“人”与“场”之间的关系数据有办法被收集并以可视化的方式重现。商家对用户画像和用户行为有更强的感知,从而能够做出更准确的商业决策。同时,也为线下针对用户的个性化服务和精准营销提供了可能。

FastReID:首个产业级通用目标重识别开源库

FastReID:首个产业级通用目标重识别开源库

在行人重识别任务中三大数据集Market1501、DukeMTMC以及MSMT17上,**FastReID相比目前已发表的论文都达到了所有评价指标的领先水平。**同时展示了不同模块对于整个系统的性能影响。

表一:FastReID在三大数据库上的结果

FastReID:首个产业级通用目标重识别开源库

表二:FastReID在DukeMTMC上采用不同模块的对比的结果

FastReID:首个产业级通用目标重识别开源库

FastReID:首个产业级通用目标重识别开源库

由于跨域ReID不同场景之间采集的图像存在差异性,使其成为一个非常有挑战的任务,FastReID在采用混合标签传输的技术,把伪标签预测和特征学习融合到一个端到端的网络,并采用Hybrid Memory Bank技术,使跨域ReID上也获得了目前领先的性能。

表三:FastReID在跨域上结果,M: Market1501,D: DukeMTMC, MS: MSMT17。BOT为Bag-of-Tricks,FastReID的无监督性能接近监督学习

FastReID:首个产业级通用目标重识别开源库

FastReID:首个产业级通用目标重识别开源库

遮挡/部分行人重识别(Occluded/Partial Person Re-identification),在候选图像中检索部分遮挡或者部分不完整图像。FastReID采用**前景感知显著性特征学习技术,**解决密集场景下的严重遮挡问题。

FastReID:首个产业级通用目标重识别开源库

FastReID在PartialREID、PartialiLIDs、OccludedReID上也取得领先水平。

表四:FastReID在遮挡/部分行人重识别上的性能

FastReID:首个产业级通用目标重识别开源库

FastReID:首个产业级通用目标重识别开源库

FastReID利用**自适应注意力模型**融合人体头肩解决黑衣行人或者穿着相似衣服,低光照条件下行人重识别问题。并且能够解决很多实际场景中衣服分辨不出行人的情况。

FastReID:首个产业级通用目标重识别开源库

FastReID:首个产业级通用目标重识别开源库

FastReID不仅在行人ReID上取得到了领先的效果,在车辆ReID上,FastReID也在VeRi,VehicleID,VERI-Wild 数据库上也取得了领先水平。

表五:FastReID分别在VeRi,VehicleID和VERI-Wild数据库上的性能

FastReID:首个产业级通用目标重识别开源库

FastReID:首个产业级通用目标重识别开源库

FastReID:首个产业级通用目标重识别开源库

FastReID在各种任务中的评测结果都表现得十分抢眼。目前,这个SOTA级的ReID方法集合工具箱(SOTA ReID Methods and Toolbox),已同时面向学术界和工业界落地。

在京东内部,该开源库已经成为了京东内部ReID技术研究和开发的核心引擎。因此, FastReID不单单只是一个实验室项目,而是产品级标准的开源库。FastReID具有高度模块化和可扩展的设计方式,使研究人员和工程师们能更加容易地嵌入自己设计的模块并快速实现任务。除此之外,可管理的系统配置可以使其应用更加的灵活,易于完成多种任务。FastReID能够提供不同方法之间的公平对比。

我们热忱欢迎个人、实验室使用FastReID,互相交流,互相合作,共同加速人工智能研究,实现技术突破。

*点击【阅读原文】立即查看开源库信息

为什么开源?

“我们开源FastReID,是因为开源研究成果对AI领域的快速发展起到了至关重要的作用,这些进展来自学术界和工业界的共同努力。未来, 我们也会继续发展和完善FastReID,希望可以共同推动计算机视觉的发展。”

FastReID:首个产业级通用目标重识别开源库

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这