查看原文
其他

【源头活水】行人重识别:一个模型打天下

“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

来源:知乎—小明知道
地址:https://zhuanlan.zhihu.com/p/409794110
成本、效率和用户体验,是技术创新落地的关键
——题记

技术创新是推动社会进步的源动力,在工业界和学术界做技术创新的最大区别是“成本”,“效率”,“用户体验”,更立足商业思维做技术。这也是一直指导我在工业界做产研一体的哲学理念。这一轮技术革命极大地源于大数据的出现。数据是技术发展的“石油”,算法则是技术发展的“发动机”。提升数据采集的自动化降低公司的数据运营成本,统一算法框架和提升性能降低技术人员的开发成本。一套从研究到落地的技术的框架有助提升科研人员的科研效率、也提升了工程人员的工程化效率、同时也提升了无论是科研人员和工程人员的使用体验,大大地提高了使用者的工作效率,降低了工作时长,让大家配合得更默契。这也是我们一直要fastreid开源的目的,让每个开发者用最短的时间实现最好的性能,让每个工程师用最短的时间实现模型的工程化部署,用更少的时间去做更多有意义的事情,留在更多的时间去享受生活。


01

介绍

之所以要研究行人重识别的一个模型打天下有两个主要的原因:

1)生物特征数据(人脸、人体)的隐私问题和法律合规问题,导致新的场景数据难以获取;

2)为了获得优秀的性能,需要在目标场景标注新的数据,从而增加了数据的标注成本。从这两个动机出发提出了一个半监督知识蒸馏框架来解决模型的泛化能力,让一个模型能够去多个场景中直接地部署。


02

半监督知识蒸馏(Semi-supervised Knowledge Distillation,SSKD)

该框架从“数据驱动”和“模型驱动”两个维度出发,利用多样化的有标签数据和无标签数据来训练模型,以知识蒸馏为技术架构来解决模型的泛化问题和效率问题。

数据驱动:有标签数据包括了20+场景的行人数据库,包括了机场、车站、校园等多个场景;为了得到海量的无标签数据,我们开发了一个自动数据标注平台Data Hunter,可以从互联网视频上得到海量的人体图像,这些人体包含更加多样性的信息和噪声,有助提升模型的泛化能力,该平台如下所示:

该平台主要集合了检测技术(https://github.com/JDAI-CV/centerX)、识别技术(https://github.com/JDAI-CV/fast-reid)、跟踪技术,实现了数据自动采集打标

模型驱动:

半监督知识蒸馏框架

我们分为三步来实现整个半监督知识蒸馏:

1. 首先利用有标签数据训练一个teacher网络和一个student网络。给定 有    个类别的源域数据  ,其中样本的总量为    ,    代表样本的硬标签。我们的目的是学习一个特征表达网络,该网络可以输出样本的概率分数    ,那么    可以利用softmax的方式定义为如下形式: ,其中  代表温度参数,随着  增大,输出的概率分布变得更加光滑。  代表样本    的真实标签,所以我们直接利用交叉熵损失函数优化: 

2. 有标签数据蒸馏。知识蒸馏有助提升模型的泛化能力,它的意思一个小的student网络可以大的teacher网络中学习知识,它的目的是利用student网络输出的概率去拟合teacher网络输出的概率,所以知识蒸馏可以用KL散度去定义:  。其中    代表分类器的维度,  代表student网络的参数,  分别代表有标签数据在teacher网络和student网络输出的软标签。

3. 无标签数据蒸馏。为了能够利用海量的无标签数据,设计一个新的分类器来分类无标签数据(note:该分类器的维度与有标签的分类器的维度一致),我们的目标是使无标签数据在新分类器的输出的概率拟合无标签数据在teacher网络上的输出,同样可以用KL散度来优化该目标:  ,其中  分别代表无标签数据在teacher网络和student网络输出的软标签。

整个训练过程分为两步:首先利用有标签数据分别训练一个teacher网络和一个student网络,然后再利用有标签数据蒸馏和无标签数据蒸馏得到一个新的student网络。整个框架的好处主要有:

1)能大量地利用有标签数据学习一个比较的初始网络,同时利用无标签数据的多样性提升模型的泛化性能(student网络的性能好于teacher网络的性能);

2)蒸馏有助于模型的小型化,使模型便于部署,减少硬件成本。

开源代码地址:https://github.com/xiaomingzhid/sskd

论文地址:https://arxiv.org/pdf/2108.05045.pdf


03

实验结果

主要在两种设置下进行了实验。

第一种实验设置:Market1501,DukeMTMC,MSMT17,CUHK03为全数据量,其中选择三个数据库为训练数据,剩余一个数据库为不可见域作为测试数据。实验结果如下

其中SSKD、MixMatch、FixMatch均利用了无标签数据,其余方法没用。FastReID-R50和FastReID-R101-ibn分别作为student和teacher,可以从实验结果看出SSKD方法可以成功地使student(R50)好于teacher(R101-ibn)。

第二种实验设置:20+个数据库做为训练数据,Market1501,DukeMTMC、MSMT17为不可见域作为测试数据,实验结果如下:

KD是利用teacher蒸馏student,SSKD利用无标签数据蒸馏和有标签数据蒸馏,可以看出SSKD利用无标签数据能提升模型的泛化能力。


04

个人见解

计算机学科属于应用型学科,任何的技术的革新都需要满足应用落地的需求。无论算法是简单还是复杂,只要精度高、效率高,能解决实际问题都是好算法。所以“成本”,“效率”是在工业界作技术研究的基础。

Reference

https://arxiv.org/pdf/2006.02631.pdf
https://www.36kr.com/p/1721680838657

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存