行人重识别论文阅读8-FastReID京东快速行人重识别

7.22 京东 Fast-ReID论文阅读

1. 解决的问题

FastReID是京东AI研究中广泛使用的软件系统,有高度模块化和可扩展的设计,有好的可管理的系统配置和工程部署。

FastReID是统一实例重标识库,允许其他人员将其他代码块插入到ReID系统,从而进一步快速的将研究思想转移到生产模型中。提供person reid,partial person reid,vehicle reid。

2. 模型概述

FastReID的亮点:

模块化和可扩展设计:可以快速实现他们的想法,无需重写数十万行代码。

可管理的系统配置:FastReID支持可选组件,主干头部聚合层损失函数训练策略。

丰富的评估体系:ROC和mINP等,以往都是用CMC评价指标。

工程部署:实现知识蒸馏模块已获得更精确更高效的轻量级模型。

提供最先进的与训练模型:容易扩展到一般的对象检索和人脸识别。

3.实验结果

3.1 Person Re-identification

Datasets:Market1501,DuKeMTMC,MSMT17.

FastReID Setting:翻转随机擦除和自动增强对训练图像进行处理。主干:Non-local IBN-ResNet101,Head:gem pooling,Aggregation:bnneck。Harder loss function。

ROC曲线请添加图片描述

请添加图片描述

实验结果

请添加图片描述

3.2 Cross-domain Person Re-identification

问题定义:训练集和数据集不是同一个环境。

设置:提出跨域方法FastReIDMLT,采用混合标签传输,通过多粒度策略学习伪标签。用源域数据集训练模型,然后用目标域数据集的伪标签对预先训练的模型进行微调。主干:ResNet50,gem pooling,bnneck。使用hard triplet loss。

请添加图片描述

结果

请添加图片描述

3.3 Partial Person Re-identification

请添加图片描述

实验设置:结果:
请添加图片描述

3.4 Vehicle Re-identification

数据集:VeRi,VehicleID,VERI-Wild。

请添加图片描述

4. 模型详述

整个模型由四个部分组成:图像预处理,主干,聚合和头部。

请添加图片描述

4.1 Image Pre-processing

将图像大小调整到固定大小的图像。Images can be packaged into batched and then input into the network。使用图像增强(随机擦除,随机补片和剪切等)。在图像中随机选择一个矩形区域,用随机值、另一个图像补片和零值擦除其像素,使模型有效降低过拟合风险,对遮挡具有鲁棒性。自动扩充是基于自动技术实现有效的数据扩充,以提高特征表示的鲁棒性。它使用自动搜索算法来寻找多种图像处理功能(如平移、旋转和剪切)的融合策略。

4.2 Backbone

将图像转化为特征图,使用三种主干网络:ResNet,ResNeXt,ResNeSt。同时还将关注非局部模块和实例BN层。

4.3 Aggregation

聚合层的作用是将主干生成的特征图聚合为全局特征图。使用四种聚合方法:最大池化,平均池化,GeM池化,注意力池化。池化层输入是: X ∈ R W × H × C \mathbf X \in \mathbb R^{W \times H \times C} XRW×H×C。以 f ∈ R 1 × 1 × C \mathbf f \in \mathbb R^{1 \times 1 \times C} fR1×1×C。全局特征向量 f = [ f 1 , . . . , f c , . . . , f C ] \mathbf f = [f_1,...,f_c,...,f_C] f=[f1,...,fc,...,fC]
M a x P o o l i n g : f c = max ⁡ x ∈ X c x A v g P o o l i n g : f c = 1 ∣ X c ∣ ∑ x ∈ X c x G e M P o o l i n g : f c = ( 1 ∣ X c ∣ ∑ x ∈ X c x α ) 1 α A t t e n t i o n P o o l i n g : f c = 1 ∣ X c ∗ W c ∣ ∑ x ∈ X c , w ∈ W c w ∗ x Max Pooling: f_c = \max_{x \in \mathbf X_c} x \\ Avg Pooling: f_c = \frac 1 {|\mathbf X_c|} \sum_{x \in \mathbf X_c} x \\ GeM Pooling: f_c = (\frac 1 {|\mathbf X_c|} \sum_{x \in \mathbf X_c} x^{\alpha})^{\frac 1 \alpha} \\ Attention Pooling: f_c = \frac 1 {|\mathbf X_c* \mathbf W_c|}\sum_{x \in \mathbf X_c,w \in \mathbf W_c} w*x MaxPooling:fc=xXcmaxxAvgPooling:fc=Xc1xXcxGeMPooling:fc=(Xc1xXcxα)α1AttentionPooling:fc=XcWc1xXc,wWcwx
α \alpha α是控制系数, W c \mathbf W_c Wc是softmax注意力权重。

4.4 Head

Head 是解决聚合模块生成的全局向量的部分。包括BN Head,线性层Head,Reduction Head。

请添加图片描述

BN:batch normalization。用于解决内部协变量偏移,因为很困难去训练饱和非线性的模型。给定一系列的特征向量 f ∈ R m × C \mathbf f \in \mathbb R^{m \times C} fRm×C,m是batch中采样的数量。特征向量bn可以表示为 f b n ∈ R m × C \mathbf f_{bn} \in \mathbf R^{m \times C} fbnRm×C:
{ μ = 1 m ∑ i = 1 m f i , σ 2 = 1 m ∑ m = 1 m ( f i − μ ) 2 , f b n = γ ⋅ f − μ σ 2 + ϵ + β \begin {cases} \mu = \frac 1 m \sum_{i=1}^m \mathbf f_i,\\ \sigma^2 = \frac 1 m \sum^m_{m=1} (\mathbf f_i - \mu)^2,\\ \mathbf f_{bn} = \gamma \cdot\frac {\mathbf f - \mu} {\sqrt{\sigma ^2 + \epsilon}} + \beta \end {cases} μ=m1i=1mfi,σ2=m1m=1m(fiμ)2,fbn=γσ2+ϵ fμ+β

γ , β \gamma,\beta γ,β是可训练尺度和变换参数, ϵ \epsilon ϵ是添加到小批量方差中的常数。

Reduction layer:使高纬度特征成为低维度特征,2048dim-> 512 dim.

Decision layer:输出不同类别的概率,为后面模型训练区分不同的类别。

4.5 Loss Function

四种损失函数:CrossEntropy loss,Arcface loss,Circle loss,Triplet loss。

Cross-Entropy Loss
L c e = ∑ i = 1 C y i log ⁡ y ^ i + ( 1 − y ^ i ) log ⁡ ( 1 − y ^ i ) \mathcal L_{ce} = \sum^C_{i=1} y_i \log \hat y_i + (1-\hat y_i)\log (1- \hat y_i) Lce=i=1Cyilogy^i+(1y^i)log(1y^i)
y ^ i = e W i T f ∑ i = 1 C e W i T f \hat y_i = \frac {e^{\mathbf W_i^T\mathbf f}} {\sum^C_{i=1}e^{\mathbf W_i^T\mathbf f}} y^i=i=1CeWiTfeWiTf,交叉熵损失使预测logit值接近真实值。交叉熵促使最大logit与其他所有的logit之间的差异变大, 这与有界梯度一起降低了模型的适应能力,导致模型对预测过于自信。反过来会导致过拟合。标签平滑使倒数第二层的激活函数靠近正确的类模板,同时远离不正确的类模板。所以可以定义为:
y i = { 1 − δ , j = c , δ C − 1 , j ≠ c . y_i = \begin{cases} 1- \delta, j=c,\\ \frac {\delta} {C-1}, j \neq c. \end{cases} yi={1δ,j=c,C1δ,j=c.
ArcFace Loss:将笛卡尔坐标映射到球面坐标。 W i T f = ∥ W i ∥ ∥ f ∥ cos ⁡ θ i \mathbf {W^T_i f}= \mathbf {\|W_i\|\|f\|\cos \theta_i} WiTf=Wifcosθi,其中 θ i \theta_i θi W i , f \mathbf {W_i,f} Wi,f之间的角度。通过l2归一化将 ∥ W i ∥ = 1 \|\mathbf W_i\|=1 Wi=1并且通过l2归一化将嵌入特征f修正re-scale至s, y ^ i = e s cos ⁡ θ i ∑ i = 1 C e s cos ⁡ θ i \hat y_i = \frac {e^{s \cos \theta_i}} {\sum^C_{i=1}e^{s\cos \theta_i}} y^i=i=1Cescosθiescosθi,为了同时增强类内紧密度和类间差异,ArcFace在类内度量中田家姨姑父家的角度惩罚m:
y ^ i = e s cos ⁡ ( θ i + m ) e s cos ⁡ ( θ i + m ) + ∑ i = 1 , i ≠ c C − 1 e s cos ⁡ θ i \hat y_i = \frac {e^{s\cos (\theta_i+m)}} {e^{s\cos (\theta_i+m)} +\sum^{C-1}_{i=1,i \neq c}e^{s\cos \theta_i}} y^i=escos(θi+m)+i=1,i=cC1escosθiescos(θi+m)
Circle Loss

Triplet Loss:保证样本离正对距离近,离负对距离远。 x i a , x i p , x i n x^a_i,x^p_i,x^n_i xia,xip,xin分别代表锚,正样本和负样本。

D ( x i a , x i p ) + m < D ( x i a , x i n ) D(x^a_i,x^p_i)+m \lt D(x^a_i,x^n_i) D(xia,xip)+m<D(xia,xin),有N个样本的三元组损失表示为:
∑ i = 1 N [ m + D ( g i a , g i p ) − D ( g i a , g i n ) ] \sum^N_{i=1}[m + D(g^a_i,g^p_i)-D(g^a_i,g^n_i)] i=1N[m+D(gia,gip)D(gia,gin)]
m表示正对和负对的边界。

4.6 Training Strategy

Learning rate warm-up:有助于建环模型训练的过早过度适应。有助于保持模型深层的稳定性。

Backbone Freezing:为了重新训练分类网络以满足我们任务的要求,我们使用从任务中收集的数据在ImageNet预训练模型上进行微调。

4.7 Distance Metric

深层空间重建:有人物图像x和y,将其特征表示为 x   f o r   x , y   f o r   y . \mathbf x ~for~ x,\mathbf y ~for~y. x for x,y for y.尺寸分别为 w x   t i m e s h x × d , w y × h y × d w_x\ times h_x \times d,w_y \times h_y \times d wx timeshx×d,wy×hy×d。来自N个位置的总N个空间特征被聚合成矩阵 X = [ x n ] n = 1 N \mathbf X = [\mathbf x_n]^N_{n=1} X=[xn]n=1N,同样构建gallery feature matrix: Y = { y m } m = 1 M ∈ R d × M , M = w y × h y \mathbf Y=\{\mathbf y_m\}^M_{m=1} \in \mathbb R^{d \times M},M=w_y \times h_y Y={ym}m=1MRd×MM=wy×hy,然后, x n \mathbf x_n xn可以再 Y \mathbf Y Y中找最相似的空间特征进行匹配,匹配得分 s n s_n sn。因此我们试图得到X所有空间特征相对于Y的相似分数,最终匹配分数定义为: s = ∑ n = 1 N s n s = \sum^N_{n=1} s_n s=n=1Nsn

4.8 Post-processing

在Fast ReID中,有两种重排序方法:K-reciprocal coding和Query Expansion。

QE:给定查询图像,使用它查找m个相似的库图像,查询特征定义为 f q \mathbf f_q fq,相似的库特征被定义为 f g \mathbf f_g fg,然后通过对验证后的库特征和查询特征求平均值,构造新的查询特征。新查询特征表示为:
f q n e w = f q + ∑ i = 1 m f g ( i ) m + 1 \mathbf f_{q_{new}} = \frac {\mathbf f_q + \sum^m_{i=1}\mathbf f^{(i)}_g} {m+1} fqnew=m+1fq+i=1mfg(i)
新查询图像特征被用于图像检索。

4.9 Evaluation

采用常用的CMC和mAP,同时增加两个:ROC和mINP衡量指标。

CMC:cumulative matching cure

mAP:mean Averaage Precision

ROC:Receiver Operating characteristic

mINP:mean inverse negative penalty

4.10 Visualization

提供rank list tool来检索结果。

4.11 Deployment

在FastReID中设计知识提取模块,实现高精度高效率的轻量级模型。

请添加图片描述

老师模型深,没有局部模型,有很多技巧,学生模型简单。使用two-stream方法训练该网络,学生模型和教师莫明星分别输出分类器 l s , l t l_s,l_t ls,lt,特征图 f s , f t f_s,f_t fs,ft,希望学生尽可能多的学习教室模型的分类能力,logits学习定义为:
L l o g i t = ∥ l s − l t ∥ 1 \mathcal L_{logit} = \|\mathbf l_s-\mathbf l_t\|_1 Llogit=lslt1
为了保证学生模型和教师模型在特征空间分布上的一致性,采用基于Kullback-Leibler散度的概率知识转移模型对学生模型进行优化:
{ L P K T = ∑ i = 1 N ∑ j = 1 , i ≠ j N p j ∣ i log ⁡ ( p j ∣ i p i ∣ j ) p i ∣ j = K ( f s i , f s j ) ∑ j = 1 , i ≠ j N K ( f s i , f s j ) p j ∣ i = K ( f s i , f s j ) ∑ j = 1 , i ≠ j N K ( f s i , f s j ) \begin{cases} \mathcal L_{PKT} = \sum^N_{i=1} \sum^N_{j=1,i \neq j} p_{j|i}\log (\frac {p_{j|i}} {p_{i|j}}) \\ p_{i|j} = \frac {K(\mathbf f^i_s,\mathbf f^j_s)} {\sum^N_{j=1,i \neq j}K(\mathbf f^i_s,\mathbf f^j_s)} \\ p_{j|i} = \frac {K(\mathcal f^i_s,\mathbf f^j_s)} {\sum^N_{j=1,i \neq j} K(\mathcal f^i_s,\mathbf f^j_s)} \end{cases} LPKT=i=1Nj=1,i=jNpjilog(pijpji)pij=j=1,i=jNK(fsi,fsj)K(fsi,fsj)pji=j=1,i=jNK(fsi,fsj)K(fsi,fsj)
K(:,:)代表余弦相似性函数。

同时,学生模型需要reid 损失优化整合网络,总的损失为:
L k d = L l o g i t + α L P K T + L r e i d \mathcal L_{kd} = \mathcal L_{logit} + \alpha \mathcal L_{PKT} + \mathcal L_{reid} Lkd=Llogit+αLPKT+Lreid
训练结束,使用 f s \mathbf f_s fs进行推理.

5. 实验复现

Market1501 bagtricks_R50.yml

方法1

下载

请添加图片描述

训练

请添加图片描述

方法2:

请添加图片描述

方法3

请添加图片描述

方法4:

请添加图片描述

请添加图片描述

MethodPretrainedRank@1Rank@5Rank@10mAPmINPmetric
BoT(R50)训练ImageNet94.40%98.37%98.99%86.25%60.34%90.36%
BoT(R50)下载ImageNet93.38%97.71%98.63%85.06%59.30%89.22%
BoT(R50-ibn)ImageNet94.36%97.75%98.78%86.55%61.79%90.46%
BoT(S50)ImageNet95.28%98.16%99.82%87.97%65.50%91.62%
BoT(R101-ibn)ImageNet95.22%98.19%98.81%87.98%65.27%91.56%
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值