首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

FedReID-联邦学习在行人重识别上的首次深入实践

作者 | 庄伟铭

编辑 | 陈大鑫

行人重识别的训练需要收集大量的人体数据到一个中心服务器上,这些数据包含了个人敏感信息,因此会造成隐私泄露问题。

联邦学习是一种保护隐私的分布式训练方法,可以应用到行人重识别上,以解决这个问题。

但是在现实场景中,将联邦学习应用到行人重识别上因为数据异构性,会导致精度下降和收敛的问题。

数据异构性:数据非独立分布 (non-IID) 和 各端数据量不同。

本文介绍一篇来自 ACMMM20 Oral 的论文,这篇论文主要通过构建一个 benchmark,并基于 benchmark 结果的深入分析,提出两个优化方法,提升现实场景下联邦学习在行人重识别上碰到的数据异构性问题。

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

开源代码:https://github.com/cap-ntu/FedReID

论文第一作者:庄伟铭,商汤和新加坡南洋理工大学联合博士项目二年级学生,导师是文勇刚教授,本科毕业于新加坡国立大学,现在主要进行联邦学习相关的研究。

本文主要对这篇文章的这三个方面内容做简要介绍:

Benchmark: 包括数据集、新的算法、场景等

Benchmark 的结果分析

优化方法:知识蒸馏、权重重分配

1

Benchmark

数据集

数据集由9个最常用的 行人重识别 数据集构成,具体的信息如下:

这些数据集的数据量、ID数量、领域都不同,能够有效的模拟现实情况下的数据异构性问题。

算法

传统联邦学习算法 Federated Averaging (FedAvg) 要求端边全模型同步,但是 ReID 的分类层的维度由 ID数量决定,很可能是不同的。

所以这篇论文提出了只同步部分的模型 Federated Partial Averaging (FedPav).

FedPav 的每一轮训练可以通过4个步骤完成:

Server 下发一个全局模型到每个 Client

每个 Client 收到全局模型后,将全局模型加上本地的分类器,用本地数据进行训练,每个 Client 得到一个 local model

Client 将 local model 的 backbone 上传到 Server

Server 对所有 client 收到的 model 进行加权平均。

完整的算法可以参考下图:

2

Benchmark结果

通过 Benchmark 的实验,论文里描述了不少联邦学习和行人重识别结合的洞见。这边着重提出两点因数据异构性导致的问题。

1. 大数据集在联邦学习中的精度低于单个数据集训练的精度

FedPav: 联邦学习模型的精度

FedPav Local Model: 联邦学习各边端模型模型上传前在各自边端测试的精度

Local Training: 基准,每个数据集单独训练和测试的精度

Local Training 效果比联邦学习的效果好,说明这些大数据集没法在联邦学习中受益。需要有更好的算法来提高精度。

2. 联邦学习训练不收敛

通过这两个数据集测试曲线可以看出,因为数据异构性的影响,精度波动较大,收敛性差。

3

优化方法

采用知识蒸馏,提高收敛

因为数据的异构性的原因,导致参与联邦学习多方上传前的本地模型的性能优于云端服务器进行模型融合后的模型性能,另外数据异构性还导致了训练的不稳定性和难收敛的问题。

针对这个问题,本方案提出使用知识蒸馏的方法,将参与联邦学习的多方的本地模型当成教师模型,云端服务器的模型作为学生模型,用知识蒸馏的方法更好的将教师模型的知识传递到学生模型,以此提高了模型训练的稳定性和收敛性。

完整算法可以参考下图:

下面的实验结果显示,采用知识蒸馏(橙线)的训练收敛效果能够得到有效提高。 

提出权重重分配,提高精度

原算法在 Server 上做模型整合,采用的是加权平均的方法,用每个 Client 的数据量作为权重,进行加权平均。每个 Client 的数据量差距可能非常大,有的占比 40%,有的占比不到 1%,所以该论文提出了进行权重分配。

调整联邦学习模型融合时各方模型更新的权重:给训练效果越好的边端,分配更大的权重,在模型融合时产生更大的影响。

训练效果的衡量是通过比较每一方本地训练前后模型用一批数据做推理产生的特征的余弦距离,余弦距离越大,该训练产生的变化越大,该分配的权重越大。完整算法可以参考下图:

下表格的实验结果显示,权重重分配使所有边端模型的性能都超过 Local Training,带来普遍的性能提升。

4

总结

针对数据隐私问题,这篇论文将联邦学习应用到行人重识别,并做了深入的研究分析。构建了一个 Benchmark,并基于实验结果带来的洞见,提出了使用知识蒸馏和权重重分配的方法来解决数据异构性带来的性能问题。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201019A05P3700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券