Skip to content

Instantly share code, notes, and snippets.

@hewumars
Last active June 13, 2022 06:05
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hewumars/bdb1fdecc9f3c27dd9657f93816a1b58 to your computer and use it in GitHub Desktop.
Save hewumars/bdb1fdecc9f3c27dd9657f93816a1b58 to your computer and use it in GitHub Desktop.
1. 论文列表 2. D2D Keypoint Extraction with Describe to Detect Approach 论文理解 3. R2D2 Repeatable and Reliable Detector and Descriptor 论文理解 4. ASLFeat Learning Local Features of Accurate Shape and Localization 论文理解 5. 局部特征检索专利技术交底书 6. Attention-Based Query

**关键问题:**尺度不变,具有辨别力的关键点,旋转不变,语义鸿沟(局部特征在表达高级视觉概念方面的局限性,如细微噪声敏感性太强,特征编码空间结构信息缺失,无法捕捉实际问题中的兴趣区域)

优化方向:

  1. 引入更多的监督信息;

  2. 不同程度、维度的attention(包括层、channel、类等等);

  3. Triplet loss及其各种变种;

  4. 不同的特征聚合方式;

  5. 2001.05027-DELG Unifying Deep Local and Global Features for Image Search 从conv4_x提取特征进入attention模块得到local feature,再经过降维从1024->40维,global feature从conv5_x经过聚合得到。端到端global和local特征提取方法

  6. cvpr2019EGT Explore-Exploit Graph Traversal for Image Retrieval 提升搜索效率的方法

  7. 2003.13827 Co-Occurrence of Deep Convolutional Features for Image Search 共现关系提取通道相关性tensor,bilinear pooling产生描述符

  8. 2001.07252-UR2KiD UR2KiD: Unifying Retrieval, Keypoint Detection, and Keypoint Description without Local Correspondence Supervision 端到端,未细看 5.1907.05794 ACTNet ACTNET: end-to-end learning of feature activations and multi-stream aggregation for effective instance image retrieval 端到端提特征方法,可学习激活层比GeM提升,主要在描述符提取方法上改进

  9. 1803.11285 Revisiting Oxford and Paris: Large-Scale Image Retrieval Benchmarking 图像检索基准,改进数据集和度量方法

  10. Key.Net: Keypoint Detection by Handcrafted and Learned CNN Filters 手工和CNN

  11. HDD-Net: Hybrid Detector Descriptor with Mutual Interactive Learning 手工和CNN

  12. D2D: Keypoint Extraction with Describe to Detect Approach.md

  13. R2D2: Repeatable and Reliable Detector and Descriptor.md

  14. 特征提取时间:包含模型推理DELF/DELG,描述符提取(aggregation聚合)GeM、GeMmp、SPoC、REMAP、R-MAC,损失函数triple loss,ArcFace Loss

  15. 检索时间:ANN、KNN search、改进的kNNsearch方法-EGT

  16. 存储代价:描述符编码PQ(笛卡尔乘积量化及各种改进)用于最近邻搜索

  17. 关键点匹配:可以归结于检索过程中,暴力方法(在第一幅图像中选取一个关键点然后依次与第二幅图像的每个关键点进行(描述符)距离测试,最后返回距离最近的关键点)

  18. 空间验证:RANSAC

  19. 查询拓展:alpha QE

PQ系列的算法大致的套路分三个阶段:训练、量化、查询 1、训练:假设样本向量维度D=64,将原始的D维向量分成M=8段,那么每段的子维度subD=8。对训练集每段分别进行k-means聚类,假设每段聚类的k=256,那么M段分别聚类之后会得到M*subD*k个类中心(也叫码本),每个类中心的维数为subD。 2、量化: 首先将样本分成M段,对于每个子段m,去256个类中心中寻找距离最近的类中心U(m),原始向量则量化成M维索引的笛卡尔乘积 3、查询:分对称SDC和非对称查询ADC。ADC距离的查询过程如下:首先计算查询向量和类中心的距离,得到距离表。遍历样本库中的向量,根据距离表,计算每个样本与查询向量的距离和。返回k个距离最接近的样本。

接口

  1. 创建特征库
  2. 删除特征库
  3. 刷新特征库
  4. 添加特征到特征库
  5. 删除特征库指定特征
  6. 特征库检索
  7. 特征库检索结果释放

2018Kaggle地标检索冠军方案1 2018Kaggle地标检索冠军方案2 2019Kaggle地标检索冠军方案 ASLFeat: Learning Local Features of Accurate Shape and Localization

图像匹配综述

一幅图像提取出来的特征点有多个,且每一个特征点都是一个多维的局部向量,为了进行相似性计算,通常需要先将这一系列特征点融合编码为一个全局特征,也就是局部特征向量融合编码为一个全局特征向量(用这个全局特征向量表示一幅图像),融合编码相关的算法包括但不限于:\

  1. BOW
  2. Fisher vector
  3. VLAD
  4. ASMK

网络通常由骨干编码器和VLAD层[2]组成,其中编码器将图像嵌入到密集的特征图中,而VLAD层将特征图进一步聚合为紧凑的特征向量。

贡献有三:

  1. 二阶相似性正则化SOSR
  2. 将SOSR结合quadratic hinge triplet loss
  3. 冯米塞斯分布(循环正态分布)

如何从dense feature的描述符选择关键点:

  1. 特征各通道均值(t.mean(dim=1, keepdim=True))与整体特征均值(nn.AdaptiveAvgPool2d(1))的平均差来衡量绝对显著性
  2. 均值特征图x,y处与邻近位置特征的距离之加权和来衡量相对显著性
  3. 绝对显著性和相对显著性之积作为某位置是否为关键点的依据,选取TopN作为最终关键点

可重复性是指要确保条件改变后能够再一次检测到,可靠性偏向于易于区分,即偏向于根据描述子匹配。 N值(patch size)方便控制关键点数量

  1. 网络输出2个分支:repeatable heatmap,reliable heatmap,部署的时候通过l2 norm提取descriptor
  2. 两个分支分别对应可重复性和可靠性两个损失函数 S为heatmap,p为patch补丁块,对位置的的余弦相似度

最大响应-均值响应 可重复性损失函数: 可靠性损失函数

  1. DCN
  2. FPN
  3. peakiness峰值测量

交通场景下局部图像的检索

1 摘要

关键词:图像检索;图像ROI区域检索;关键点特征选择;关键点特征聚合

2 技术领域

本专利方案设计图像检索技术领域,特别是属于一种基于深度学习的全局和局部图像的以图搜图方法。

3 技术背景

图像检索又称以图搜图,是将查询图像转化成向量特征,通过相似度搜索引擎返回与查询图像相似度最高的图像的一种技术。常见的商用以图搜图引擎有谷歌图像搜索、百度图像搜索,以及淘宝拍立得等。相比于图像检索,局部图像检索是由用户选择ROI区域,检索包含ROI区域特征的图像或者相似特征的图像,由于ROI区域的不确定性,不可能像图像检索时利用全局特征进行检索,通常采用关键点特征检索的方法实现,这对内存和处理器性能提出了挑战。研究在不显著增加内存和处理器性能的前提下,实现交通场景下局部图像的检索,其研究成果具有重大的经济效益,对系统具有重要意义。

我们使用全局特征和局部特征同时提取的方法,结合关键点特征选择减少关键点数量、关键点特征聚合压缩维度,同时通过图像ROI区域检索的策略方法,解决对内存和处理器的要求。

4 技术方案

本专利公开一种端到端的全局和局部图像检索算法及其以图搜图系统,该算法使用残差卷积网络作为主干网络采用多分支联合训练,同时提取全局描述符和局部描述符。其中全局描述符采用多种特征聚合方法融合生成具有辨别力的描述符,融合的聚合特征包括GeM、REMAP、MAC、SPcC等,融合特征经过PCA白化降维作为最终全局描述符;局部描述符在密集特征上引出注意力模块选择关键点特征,以便得到高响应度和高区分度的描述符,最后由于选择图像ROI区域的关键点数量随机,我们用关键点特征聚合算法生成固定长度的区域局部描述符。其中算法作为整个以图搜图系统的一个组件实现图像检索的核心功能,系统的总体处理流程(见附图1)如下:

  1. 客户端上传包含目标对象的图片
  2. 服务端进程下载图片并调用结构化算法
  3. 结构化算法进行目标检测识别及特征提取
  4. 返回结构化数据和以图搜图特征,将全局特征存入全局描述符底库
  5. 客户端选择目标对象或者目标ROI区域
  6. 若为目标对象,根据索引在底库中找到对应全局特征描述符
  7. 目标对象全局特征描述符进行1vN检索比对返回全局特征的topK检索结果
  8. 若为目标ROI区域,根据ROI区域所在目标对象的索引找到对应全局特征描述符进行目标检索
  9. 返回特征相似度最高的topN个目标对象索引,并对topN对象临时提取关键点局部特征
  10. 选取目标ROI区域内的关键点局部特征,聚合成固定长度局部特征描述符
  11. 在topN对象范围内进行局部特征检索比对,然后topK个相似度最高的图像
  12. 对topK个相似度最高的图像进行RANSAC空间一致性检验,并返回局部特征重排的topK检索结果
  13. 步骤7和12的检索结果在客户端展示

5 详细内容

我们设计一个图像ROI检索模型端到端的学习全局和局部特征,通过卷积神经网络主干获取多个特征图,利用卷积神经网络的层次结构去学习不同层次表示不同类型的特征。较深层更适合编码高层次的语义信息来表示全局特征,较浅层更适合编码局部信息来表示局部特征。通常由多个较浅层融合特征用于编码局部特征。由传统局部特征检索存在大量关键点局部特征向量,对于内存和检索技术的巨大消耗,我们采用关键点特征选择、关键点特征聚合以及图像ROI区域网格化等措施,均是为了提高检索性能和精度。

5.1 关键点特征选择方法

关键点特征的提取关键在于选择具有高响应度和高区分度的关键点作为局部特征的描述符。高响应度即特征包含丰富的信息量,且相同区域的特征在不同的图像中能被找到;而高区分度即特征是具有代表性的区域,且能够区分不同图像。举个例子,小汽车的前车窗右上角标贴上面是白色的下面是蓝色的,或者车内后视镜有红色装饰物,这样的区域属于高响应高区分度,而其他区域大多数同款车基本相似,可能单单具有高响应度并不一定具有高区分度。为了使特征同时具备两种特性,我们采用高响应高区分注意力模块来学习高响应度和高区分度的关键点特征。

高响应高区分注意力模块具体操作(见附图2)如下:首先对输入特征图进行核大小1的ConvBnRelu操作缩减通道为512,分两个分支,其中高响应度分支对channel mean reduce后的特征和global average pooling后的特征做标准差,另外高区分度分支对特征点一定范围内的邻域特征求L2距离并加权求和,然后将两个分支进行元素乘积操作,再后核大小1的Conv操作缩减通道为1,经过softplus激活得到注意力得分图。若是训练阶段,注意力得分图还要与L2Normalize后的输入特征图做点积,得到HxWx1的特征图,reshape后进行交叉熵损失优化。

数学上,我们知道标准差越大表明数据越离散,幅值变化越大。高响应度分支本质上就是即筛选梯度变化大的高响应的边缘点,对像素点通道特征做标准差表示为: $$ A(x,y) = \sqrt{\mathbb{E}\left[\boldsymbol{F}^{2}(x, y)\right]-\bar{F}(x, y)^{2}} $$ 高区分度分支由高斯函数生成半径为2的权值与特征点L2范距离加权和,表示为: $$ B(x,y)=\sum_{u(0,2)} \sum_{v(0,2)} \boldsymbol{G}(u, v)|\boldsymbol{F}(x, y)-\boldsymbol{F}(x+u, y+v)|_{2} $$ 最后两分支进行元素乘积代表同时具备高响应和高区分的注意力得分图。

5.2 关键点特征聚合方法

将每个关键点特征描述符独立存储在数据库中会导致内存和搜索计算的巨大成本。我们在关键点特征选择的基础上进一步将某区域内的任意个数关键点特征聚合,产生具有区分性的区域局部聚合描述符向量。将交通场景中的人车物目标特征图划分成k*k的网格,每个网格对应一个局部聚合描述符向量,负责以该网格为中心的原图感受野区域的特征表示。在图像ROI区域检索时,ROI区域与感受野区域重叠最多的那个网格的局部聚合描述符用作查询特征。区域局部聚合描述符向量的生成方法如下:

  1. 对训练集所有样本提取关键点特征,假设特征向量D维度是1024维,将原始的特征向量维度分成M=32段,那么每个子段subD的维度是32维。使用k-mean分别对每段聚类,假设每段聚类K=16类,分别聚类之后得到M*K大小的码本;
  2. 有了码本以后,初始化查询目标的局部聚合描述符矩阵O;
  3. 对查询目标经过关键点特征选择方法后,获取任意个数关键点特征,遍历每一个关键点特征,寻找每个子段向量最近的聚类中心id,根据id取最近的聚类中心向量,与原始子段subD特征向量相减,获得残差向量resD;
  4. 将残差向量resD累加到聚类中心id对应局部聚合描述符矩阵O分段位置处,并记录该id累加次数;
  5. 局部聚合描述符矩阵O除以对应分段位置累加次数,得到平均结果矩阵;
  6. 展开连接每行平均结果矩阵,得到维度为K*D的向量,最后再进行PCA降维得到固定长度的区域局部聚合描述符向量。

5.3 可学习重排序方法

重排序(也叫查询扩展)是图像检索中常用的技术,由于照明、姿态、视角和遮挡的变化,正样本图像可能不在topK相似特征中,但是却在topK相似特征的检索子集中,这样可以通过对原始查询到的topK相似特征进行处理获取相关性信息,生成新的扩展查询特征,并利用新查询特征对原始查询结果进行重新排序,提高查全率和准确率。我们用原始查询和前TopK相似的特征作为输入,训练一个堆叠自注意力编码器模块的Transformer模型,学习不同topK相似项之间的相关信息,从而为所有排名靠前的相关特征生成一个最优的新扩展查询特征。该方法可以为全局特征和关键点聚合特征的检索结果做重排序操作。在训练阶段,我们使用已训练好的图像ROI检索模型对训练数据集提取特征,由检索结果生成新的训练数据集,每类数据包含一个查询特征和topK相似的特征,并且采用TripletLoss损失函数对Transformer自注意力模型进行优化,流程示意图如图3。自注意力是Transformer模型用来将当前输入特征与其他输入特征联系起来的一种机制,这种相关性信息可以很好地用于学习生成新的查询特征时所需要的权重参数。在实际训练中,输入特征与排序位置编码之和首先通过多头注意力机制共享信息,然后进行层归一化层和全连接层将输入特征重新映射到新的嵌入空间中。通过堆叠多个相同的编码器增加模型的容量,能共享更多的上下文信息。最后求转换后的嵌入空间中,查询嵌入特征与其他topK嵌入特征之间的点积(相似性)作为度量原始查询特征与topK相似特征的权重(公式1),这种查询特征加权方法在其他很多重排序方法中都有用到,而我们利用学习方法获得了这个权重,该权重再与原始topK相似特征做点积并L2归一化即得到新的查询特征(公式2),这个查询特征由TripletLoss损失函数迭代优化。其中推理过程结构示意图如图4,堆叠Transformer编码器模块如图5。 $$ w_{i}=\operatorname{sim}\left(\tilde{\mathbf{q}}, \tilde{\mathbf{d}}_{i}\right) -- 1 $$

$$ \hat{\mathbf{q}}=\Sigma{w_{i} \mathbf{d}_{i}} -- 2 $$

5.4 图像ROI区域检索方法

当数据库中累积了大量特征数据之后,查询性能和精度会逐渐下降。我们结合交通场景目标图像的特点,对进行k*k网格划分,将其按照一定规则在物理存储成多个部分,对应网格只需要查询比对数据库中对应网格的向量即可。图像ROI区域检索方法作为以图搜图系统的子模块(系统总体流程步骤8-11)的具体描述:首先对目标图像进行结构化分析,提取全局特征向量,存入数据库;从客户端选择目标ROI区域,对原图进行二次结构化分析,提取全局特征向量和关键点局部特征向量;根据全局特征向量调用Milvus搜索返回topN个最相似图像;对topN个最相似图像进行二次结构化分析,提取全局特征和关键点局部特征;根据图像ROI区域找到对应网格,再根据码本将该网格内的关键点局部特征聚合,生成topN个局部聚合描述符向量;在topN对象范围内进行1vN暴力检索比对,返回topK个局部特征最相似图像;对topK个局部特征最相似图像的关键点进行RANSAC空间一致性检验,并返回局部特征重排的topK检索结果。

6 保护创新点

  1. 关键点特征选择方法
  2. 关键点特征聚合方法
  3. 可学习重排序方法
  4. 图像ROI区域检索方法
  5. 以图搜图系统及流程

7 附图

附图1

graph TB;
	A>客户端上传一张包含目标对象的图片]
	B(服务端进程下载图片并调用结构化算法)
	C[结构化算法进行目标检测识别和特征提取]
	D(返回结构化数据和以图搜图特征)
	E[(结构化数据和全局特征)]
	F>客户端选择目标对象或者ROI区域]
	G[基于全局特征的目标检索]
	J{{返回特征相似度最高的topN图像索引}}
	K[对topN图像临时提取局部特征]
	L[找ROI区域对应网格]
	M[topN个对应网格关键点局部特征聚合]
	N[topN个局部特征进行1vN暴力比对]
	O{{返回topK个相似度最高的图像索引}}
	P[RANSAC空间一致性重排]
	Q{{返回重排后的topK个检索结果}}
	R>客户端展示检索结果并异步加载结构化信息]
	A-->B-->C-->D-->E;
	D-->F-->G-->J--若选择ROI区域-->K-->L-->M-->N-->O--重排-->P-->Q-->R;
	J--若选择目标对象,可学习重排序-->R;
	J--若选择目标对象,不重排序-->R;
	E-->G;
	O--不重排-->R

附图2

graph LR;
    A(input)-->B[conv1x1-bn-relu channel512]
    B-->H[channel mean reduction]
    B-->I[global average pooling]
    H-->K[standard deviation]
    I-->K
    B-->M[sum of L2 distance within window]
    K-->N((broadcast mul))
    M-->N
    N-->L[conv1x1 channel1]--score-->D[softplus]
    A-->E[L2-Normalize]
    E-->F((dot product))
    D--prob-->F
    F-->G[H,W,1]
    G--feat-->output

附图3

graph LR;
A[查询特征]
B[Top1相似特征]
C[Top2相似特征]
D[TopK相似特征]
E[Transformer自注意力网络]
F[加权聚合新查询特征]
G[TripletLoss损失]
H((正样本))
I((负样本))
A-->E
B-->E
C-->E
D-->E
E-->F
F-->G
H-->G
I-->G

附图4

ReRanking模型

附图5

image-20201020110024772

Attention-Based Query Expansion Learning

训练一个Transformer多头自注意力查询扩展模型: 1.将查询扩展方法当成判别学习(度量学习),在监督行为下,训练出聚合模型 2. 通过自注意力模型来共享查询图像和topk图像信息。 3. 同时利用排序位置和上下文内容信息

Dual Embedding Expansion for Vehicle Re-identification

用于车辆Re-ID的双嵌入扩展

tracklet是做视频或bai者物体跟踪(object tracking)里面du的专业词汇,一般翻译为zhi“跟踪小片段”,

HyNet: Local Descriptor with Hybrid Similarity Measure and Triplet Loss

在本文中,我们研究了L2归一化如何在训练过程中影响反向传播的描述符梯度。 根据我们的观察,我们提出HyNet,这是一种新的局部描述符,可导致最新的匹配结果。 HyNet引入了针对triplet margin损失的混合相似性度量,用于约束描述符范数的正则项以及用于对所有中间特征图和输出描述符执行L2归一化的新网络体系结构。 HyNet在包括patch匹配,验证和检索在内的标准基上大大超越了以前的方法,并且在3D重建任务上的性能优于端到端的完整方法。

采样策略对三元组Loss非常重要

向量方向而不是大小是区分描述符的关键

1)可以平衡正样本和负样本的梯度贡献的混合相似性度量 2)对描述符范数提供适当约束的正则项 3)能够L2归一化中间特征图的新网络架构

L2-Normalization 正则化约束:不同光照强度引起的图像强度变化

改进Triplet Loss为正样本余弦距离和负样本欧式距离的混合度量方法,其中alpha=2,gamma=0.1

网络替换BN+ReLu为FRN+TLU(max(-1,x)),其中gamma和beta是可学习参数

这几个组件改进ablation实验

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment