NetVlad

博客介绍了场景识别方法,先收集图片计算特征存于数据库,查询时以特征距离查找。还阐述了VLAD特征计算方法及NetVlad对其的改进,包括网络结构和训练过程,使用谷歌街景数据集训练,在匹兹堡和东京数据集测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@InProceedings{Arandjelovic16,

author = “Arandjelovi’c, R. and Gronat, P. and Torii, A. and Pajdla, T. and Sivic, J.”,

title = “{NetVLAD}: {CNN} architecture for weakly supervised place recognition”,

booktitle = “IEEE Conference on Computer Vision and Pattern Recognition”,

year = “2016”,

}

场景识别

  1. 预先收集大量图片;

  2. 人工计算出每张图片的feature(例如SIFT),保存到数据库中;

  3. 输入一张查询图片,使用相同的feature计算方法,得出查询图片的feature后,以feature之间的距离作为查询条件,到数据库中查询feature最接近的图片,作为查询结果。

VLAD

Vector of Locally Aggregated Descriptors,一种feature的计算方法。NetVlad可以看作是采用了深度学习的方法对VLAD进行的改进。

  1. 对于一张图片,先得出N个D维的局部特征。N*D

  2. 对所有的ND特征图进行K-means聚类,获得K个聚类中心。KD

  3. 通过下述公式将图片的特征图转为全局特征图。K*D

image-20201125135029572

x i x_ixi​表示第i个局部特征,c k c_kck​示第k个聚类中心,都是D维的向量。

a k ( x i ) = { 0 , x i 不 属 于 c k 1 , x i 不 属 于 c k a_k(x_i)=

{0,xi不属于ck1,xi不属于ck{0,xi不属于ck1,xi不属于ck

ak​(xi​)={0,xi​不属于ck​1,xi​不属于ck​​

以矩阵3的第一列为例,其实就是矩阵1的每一列去减矩阵2中的第一列乘上a k ( x i ) a_k(x_i)ak​(xi​)后再求和。这样做的好处:(1)这K个全局特征表达了聚类范围内局部特征的某种分布,这种分布通过x i − c k x_i-c_kxi​−ck​抹去了图像本身的特征分布差异,只保留了局部特征与聚类中心的分布差异。(2)将一个若干局部特征压缩为特定大小全局特征的方法。把原来大小不一样的矩阵1变成了大小一致的矩阵3。

image-20201125140104770

NetVlad

因为a k ( x i ) a_k(x_i)ak​(xi​)只能取1或者0,因此Vlad函数是不可导的,NetVlad将a k ( x i ) a_k(x_i)ak​(xi​)参考softmax,重新设计了a k ( x i ) a_k(x_i)ak​(xi​),将其平滑为一个0到1之间的权重函数,x i x_ixi​与c k c_kck​越近,a k ( x i ) a_k(x_i)ak​(xi​)越接近1,反之越接近0。

image-20201125140608138

α是一个大于0的参数,将img展开,约去img

img

令w k = 2 α c k w_k=2\alpha c_kwk​=2αck​ , b k = − α ∣ ∣ c k ∣ ∣ 2 b_k=-\alpha ||c_k||^2bk​=−α∣∣ck​∣∣2

image-20201125140918470

w k , b k , c k w_k,b_k,c_kwk​,bk​,ck​由网络训练得到。

网络结构

image-20201125141014130

image-20201125141020808

  1. 从N ∗ D N*DN∗D到K ∗ D K*DK∗D的转化公式img是通过1*1卷积实现(蓝色部分);

  2. 黄色部分是softmax公式,通过softmax函数实现;

  3. 绿色部分是局部特征与聚类中心的残差分布,通过VLAD core来实现。

  4. 紫色部分是两步归一化操作:

intra-normalization:是将每个中心点k的特征分别做归一化,通过此操作抹去了聚类中残差的绝对大小,只保留了残差的分布。

L2 normalization:将得到的K*D数据再整体做一次归一化处理。

训练

使用谷歌街景数据集训练,一个全景相机对着某个地方拍了很久。数据集有相机的GPS信息,但是由于是全景相机,所以即使GPS相同,可能拍摄的方向并不相同。

​ 训练数据集预处理:对于每一张图片制作正样本和负样本img,正样本img是GPS和查询图像q相近的,其中至少包含一张能与q匹配的图片;负样本img是GPS远离q的,一定不能与q匹配的。因为负样本数量远大于正样本,所以负样本采用“难例挖掘”策略生成。

使用img表示查询图片q与[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SoFRUw52-1606286529514)(C:/Users/16492/AppData/Local/Temp/msohtmlclip1/01/clip_image010.png)]的特征图距离

image-20201125141222350

img表示被匹配到的图片,其与查询图片q的特征图距离小于所有负样本。

image-20201125141249029

**损失函数:**其中img,m是一个常数(论文里取m=0.1)。如果最佳匹配图片的d+m依旧小于负样本,则取0,反正取计算得到的值。

image-20201125141311149

实验:匹兹堡和东京数据集上测试。

纵坐标表示recall

横坐标:前N个里面有一个d<=25米,就认为已经成功位置识别。The query image is deemed correctly localized if at least one of the top N retrieved database images is within d=25 meters from the ground truth position of the query.

top N retrieved database images is within d=25 meters from the ground truth position of the query.

image-20201125141326163

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值