ExchNet: A Unified Hashing Network for Large-Scale Fine-Grained Image Retrieval
ECCV 2020
ExchNet:用于大规模细粒度图像检索的统一哈希网络
文章目录
摘要
从大规模细粒度数据集中检索内容相关图像可能会遇到查询速度慢和存储高度冗余的问题,因为要区分细粒度对象的细微视觉差异需要高维的实数嵌入表示。本文研究细粒度哈希,为图像生成稠密二进制哈希码,利用哈希学习的搜索和存储效率来缓解上述问题。——ExchNet
结果 | 方法 |
---|---|
获得局部和全局特征来分别表示对象部分和整个对象 | 注意力机制和注意力约束 |
确保部分级特征在图像之间的判别能力和语义一致性 | 局部特征对齐方法执行特征交换操作 |
生成二进制哈希码 | 交替学习算法优化整个ExchNet |
1 引言
学习哈希是大规模图像检索的有效方案,因为可以降低存储成本增加查询速度。作为近似最近邻搜索的代表性研究领域,哈希旨在将数据点嵌入为保留相似性的二进制代码。细粒度哈希问题是指为细粒度对象设计哈希,为细粒度图像生成紧凑的二进制代码。
ExchNet包含三个模块:
- 表示学习:获得全局特征表示的同时,又使用注意力机制获取部分级别特征。使用空间和通道约束,协同工作以进一步提高这些局部特征的判别能力
- 局部特征对齐:将锚定的局部特征视为“原型” ,在类别所有图像上平均该部分的所有局部特征。对锚定的局部特征和其他学习到的局部特征执行特征交换操作
- 哈希码学习。
贡献:
- 研究细粒度哈希,利用哈希码的搜索和存储效率来解决大规模细粒度图像检索问题。
- 提出ExchNet,学习细粒度特征生成二进制哈希码。特别是,所提出的注意力约束、局部特征对齐和基于锚的学习方式有助于获得有区别的细粒度表示。
- 大量实验,验证有效性和效率。
2 相关研究
2.1 细粒度图像检索
深度方法分成两类:监督和无监督。
监督式中,定义为度量学习问题。
无监督式,如,SCDA定位。
2.2 深度哈希
根据是否使用训练点来学习哈希函数,哈希方法可以分为两类,即数据独立方法和数据相关方法。
数据相关的方法(称为Learning to Hash(L2H)方法)借助对训练数据的学习来获得更好的检索性能。一些L2H方法将深度特征学习集成到哈希框架中。
3 方法
3.1 表示学习
图像 x i x_i xi经过主干卷积网络得到特征图 E i ∈ R H × W × C E_i\in\mathbb R^{H\times W\times C} Ei∈RH×W×C(全局特征、局部特征之前)。注意力在特征提取器中间。
E
i
E_i
Ei经过注意力生成模块,生成
M
M
M个注意力图
A
i
∈
R
M
×
H
×
W
A_i\in\mathbb R^{M\times H\times W}
Ai∈RM×H×W,用
A
i
j
∈
R
H
×
W
A^j_i\in\mathbb R^{H\times W}
Aij∈RH×W来定义关注区域。
A
i
j
A^j_i
Aij和
E
i
E_i
Ei逐元素相乘得到相应的部分:
E
^
i
j
=
E
i
⊗
A
i
j
\hat E^j_i=E_i\otimes A^j_i
E^ij=Ei⊗Aij
这样得到局部特征
E
^
i
=
{
E
^
i
1
,
.
.
.
,
E
^
i
M
}
\hat{\mathcal E}_i=\{\hat{E}^1_i,...,\hat{E}^M_i\}
E^i={E^i1,...,E^iM}。然后,输入到由一堆卷积层组成的局部特征细化(LFR)网络中,将局部特征嵌入到更高级别的语义中:
F
i
=
f
L
F
R
(
E
^
i
)
\mathcal F_i=f_{LFR}(\hat{\mathcal E}_i)
Fi=fLFR(E^i),其中
F
i
=
{
F
i
1
,
.
.
.
,
F
i
M
}
\mathcal F_i=\{F^1_i,...,F^M_i\}
Fi={Fi1,...,FiM},代表最终的局部特征图,即高级语义。经过全局平均池化得到局部特征向量
f
i
j
∈
R
C
′
f^j_i\in \mathbb R^{C'}
fij∈RC′。
在 E i E_i Ei上经过由传统卷积组成的全局特征细化(GFR)网络得到全局特征 F i g l o b a l = f G F R ( E i ) F^{global}_i=f_{GFR}(E_i) Figlobal=fGFR(Ei)以及对应的全局特征向量 f i g l o b a l ∈ R C ′ f^{global}_i\in \mathbb R^{C'} figlobal∈RC′。
为了促进局部特征线索的学习(即捕获细粒度部分),对 F i F_i Fi中的局部特征施加了空间多样性和通道多样性约束。
对于局部特征
F
i
j
F^j_i
Fij,通过通道维度相加得到聚合图
A
^
i
j
∈
R
H
′
×
W
′
\hat A^j_i\in \mathbb R^{H'\times W'}
A^ij∈RH′×W′,并用softmax 函数转换为有效分布, 然后将其展平为向量
a
^
i
j
\hat a^j_i
a^ij。基于Hellinger距离,提出空间多样性损失为:
L
s
p
=
1
−
1
2
(
M
2
)
∑
l
,
k
=
1
M
∣
∣
a
^
i
l
−
a
^
i
k
∣
∣
2
L_{sp}=1-\frac{1}{\sqrt{2}\binom{M}{2}}\sum^M_{l,k=1}||\sqrt{\hat a^l_i}-\sqrt{\hat a^k_i}||_2
Lsp=1−2(2M)1l,k=1∑M∣∣a^il−a^ik∣∣2
(
M
2
)
\binom{M}{2}
(2M)用于表示从
M
M
M个可能性中选择2个无序结果的方法的组合数(
M
(
M
−
1
)
2
\frac{M(M-1)}{2}
2M(M−1))。空间多样性约束驱动聚合图在尽可能多样化的空间位置被激活。
对于通道多样性约束,将局部特征向量
f
i
j
f^j_i
fij转换为有效分布:
p
i
j
=
s
o
f
t
m
a
x
(
f
i
j
)
,
∀
j
∈
{
1
,
.
.
.
,
M
}
p^j_i=softmax(f^j_i),\forall j\in \{1,...,M\}
pij=softmax(fij),∀j∈{1,...,M}
通道多样性约束损失表示为:
L
c
p
(
x
i
)
=
[
t
−
1
2
(
M
2
)
∑
l
,
k
=
1
M
∣
∣
p
i
l
−
p
i
k
∣
∣
2
]
+
L_{cp}(x_i)=[t-\frac{1}{\sqrt{2}\binom{M}{2}}\sum^M_{l,k=1}||\sqrt{ p^l_i}-\sqrt{p^k_i}||_2]_+
Lcp(xi)=[t−2(2M)1l,k=1∑M∣∣pil−pik∣∣2]+
其中
t
∈
[
0
,
1
]
t\in[0,1]
t∈[0,1]是调整多样性的超参数,
[
⋅
]
+
[\cdot]_+
[⋅]+表示
max
(
⋅
,
0
)
\max(\cdot,0)
max(⋅,0) 。通道多样性约束可通过通道维度来抑制特征中的冗余
3.2 通过局部特征交换对齐
提出了一种基于锚点的局部特征对齐方法来辅助特征交换操作。
直观地,来自同一对象部分的局部特征应该嵌入几乎相同的语义。关键思想是,如果局部特征对齐良好,则为属于同一子类别的两个输入图像交换相同部分的特征不应更改生成的哈希码。通过利用特征交换操作提出了一种局部特征对齐策略,发生在学习到的局部特征和锚定的局部特征之间。
作为特征交换的基础,一组动态锚定局部特征
C
y
i
=
{
c
y
i
1
,
.
.
.
,
c
y
i
M
}
C_{y_i} = \{c^1_{y_i},...,c^M_{y_i}\}
Cyi={cyi1,...,cyiM} 对于
y
i
y_i
yi类应该保持不变,其中第
j
j
j个锚定局部特征
c
y
i
j
c^j_{y_i}
cyij 是通过对
y
i
y_i
yi类训练样本的第
j
j
j个部分的所有局部特征进行平均得到的。在每个训练时期结束时,锚定的局部特征将被重新计算和更新。对于类别为
y
i
y_i
yi的样本
x
i
x_i
xi,与锚点局部特征交换一半局部特征:
∀
j
∈
{
1
,
.
.
.
,
M
}
,
f
^
i
j
=
{
f
i
j
i
f
ξ
j
≥
0.5
c
y
i
j
.
o
.
w
\forall j\in \{1,...,M\}, \hat f^j_i=\left\{ \begin{aligned} f^j_i & & if\quad \xi_j \ge 0.5 \\ c^j_{y_i} & & .o.w \\ \end{aligned} \right.
∀j∈{1,...,M},f^ij={fijcyijifξj≥0.5.o.w
ξ
j
∼
B
(
0.5
)
\xi_j\sim\mathcal B(0.5)
ξj∼B(0.5)。交换之后的局部特征定义为
G
^
=
{
f
^
i
1
,
.
.
.
,
f
^
i
M
}
\hat{\mathcal G}=\{\hat f^1_i,...,\hat f^M_i\}
G^={f^i1,...,f^iM}用于生成哈希二进制码。
3.3 哈希码学习
全局特征和局部特征级联送入哈希学习模块。包含一个全连接层和一个符号激活函数( − 1 -1 −1或 + 1 +1 +1)。文章使用非对称哈希,用 g ( ⋅ ) g(·) g(⋅)和 h ( ⋅ ) h(·) h(⋅)的两个哈希函数来学习两种二进制代码:
只保留二进制代码 v i v_i vi并隐式设置哈希函数 h ( ⋅ ) h(·) h(⋅)(???)。哈希码长度是 q q q。
为了保持成对相似性,采用平方损失并定义以下目标函数:
S i j S_{ij} Sij是成对相似度标签, S i j S_{ij} Sij表示第 i i i个和第 j j j个样本之间的相似度。 C = { C i } i = 1 M C = \{C_i\}^M_{i=1} C={Ci}i=1M。
由于符号函数引起的零梯度问题,使用为 g ^ ( ⋅ ) = t a n h ( ⋅ ) \hat g(·) = tanh(·) g^(⋅)=tanh(⋅) 来缓解这个问题:
给定一组图像样本 X = { x 1 , . . . , x n } X = \{x_1,...,x_n\} X={x1,...,xn}和它们的成对标签 S = { S i j } i , j = 1 n S = \{S_{ij}\}^n_{i,j=1} S={Sij}i,j=1n,可以得到以下目标函数:
3.4 学习算法
交替优化 V , Θ , C V,\Theta,C V,Θ,C(哈希值、深度神经网络和哈希层的参数、锚点)。学习一个参数,其他参数固定。
3.5 样本外扩展
完成训练时,通过 u i = s i g n ( W ( g ) [ G i ; f i g l o b a l ] c a t ) u_i=sign(W^{(g)}[\mathcal G_i;f^{global}_i ]_{cat}) ui=sign(W(g)[Gi;figlobal]cat) 生成二进制代码。
4 实验
对于ExchNet,检索过程分为粗排序以选择前 N 个和重新排序以从前 N 个候选者中返回前 K 个(K < N)