3.2.1 VLAD
VLAD是一个经典的基于手工特征(Hand-engineered Feature)的特征汇合算法,配合SIFT(Scale-Invariant Feature Transform,尺度不变特征变换)(Lowe,2004)特征,在深度学习复兴之前,在图像检索(Image Retrieval)领域取得了十分突出的效果。
VLAD的计算过程分为3步:首先对各帧图像特征进行聚类,然后根据聚类结果将每帧图像的特征分配到不同的聚类中心去,最后用每个特征到聚类中心的距离表示全局特征。下面进行具体说明。
(1)特征聚类。首先对每帧图像的特征进行聚类(例如进行-means 聚类),将得到个聚类中心,每个聚类中心维度和帧特征维度一致。令表示所属的聚类中心,假设帧特征所属的聚类中心是,那么。
(2)特征分配。令分配系数为
(3.2)
其中,是指示函数(Indicator Function),当其中的判断为真(True)时,函数值为1;判断为假(False)时,函数值为0。这里的特征分配是一种硬分配(Hard Assignment)策略,即当属于第个聚类中心时,;否则,。
(3)差值求和。VLAD的输出是一组特征,每个输出特征的维度和帧特征维度一致,每个输出特征对应一个聚类中心。输出特征定义为
(3.3)
式(3.3)首先找到属于聚类中心(即)的特征,之后计算帧特征和聚类中心的差值,最后将所有属于聚类中心的差值求和,得到输出特征。VLAD的这种计算方式去除了帧图像本身的特征,只保留了帧特征与聚类中心的差异。最终将个输出特征拼接在一起,得到最终的特征向量
(3.4)
最后,总结一下 VLAD 的参数量和输出特征维度。由于特征聚类、特征分配、差值求和都不涉及可学习的参数,VLAD的参数量为0。VLAD的输出特征是由一组特征拼接而成的,其中。因此,总的输出特征维度是。