关于图像检索:大厂技术实现-图像检索及其在高德的应用-计算机视觉系列

28次阅读

共计 7367 个字符,预计需要花费 19 分钟才能阅读完成。

💡 作者:韩信子 @ShowMeAI,章鱼 @高德
📘 大厂解决方案系列教程:https://www.showmeai.tech/tutorials/50
📘 本文地址:https://www.showmeai.tech/article-detail/93
📢 申明:版权所有,转载请分割平台与作者并注明出处
📢 珍藏 ShowMeAI 查看更多精彩内容

一图看懂全文

ShowMeAI 社区的技术专家小伙伴们对 图像检索的典型算法 做了实现,构建了相干利用 🏆『基于 CNN 与三元组的图像检索实现 』,对细节感兴趣的话,请返回 这里 查看 实现代码参考。代码的整顿破费了很多心理,欢送大家 PR 和 Star!

ShowMeAI 官网 GitHub:https://github.com/ShowMeAI-Hub/


💡 一、高德图像检索的业务背景

本文利用到的技术是图像检索,利用场景为高德地图,利用点是高德地图的 POI 信息更新(在高德图像数据中,POI 牌匾和 POI 一一对应)。

POI:Point of Interest,在电子地图上,POI 代表餐厅、超市、政府机关、旅游景点、交通设施等。POI 是电子地图的外围数据。

  • POI 数据蕴含的名称信息、地位信息等,能满足用户的根本需要——应用电子地图“查找目的地”,进而唤起导航服务。
  • POI 数据能够反对电子地图提供“搜寻左近”、“点评”等性能,这些操作能够进步用户的应用和沉闷时长。
  • POI 数据还是线上线下连贯互动的一个纽带,是基于位置服务(Location Based Service)产业的一个重要组件。

高德地图的业务场景,须要依据自有图像源,将每个新增或调整的 POI 及时制作成数据

一般来讲,短时间片(月度)内,同一地点的 POI 的变动量很低(如图,只有“汤火功夫”POI 是一个新增的挂牌)。因而,从技术实现的角度来看,不能采纳『每次都解决全副 POI』的计划,因为作业老本太高了。更好的实现计划是,将没有变动的 POI 自动化地过滤掉。这个场景工作是十分典型的图像检索工作,其中关键技术图像匹配。

1.1 图像检索的工作定义

图像检索问题定义:给定查问图像(Query),通过剖析视觉内容,在大型图像库中(Gallery)中搜寻出类似的图像。图像检索始终是计算机视觉畛域的一个长期研究课题,在『行人重辨认』、『人脸识别』、『视觉定位』等工作中均有宽泛的利用。

图像检索的过程须要『图像特色抽取 』+『 比对检索』两个环节:

1)图像特征提取

通常包含:全局特色、部分特色、辅助特色等,次要是针对不同工作特点进行相应的优化。例如:行人重辨认以及人脸识别具备很强的刚性束缚,并且具备显著的要害特色(行人 / 人脸关键点),因而会将人体宰割或关键点检测信息交融到模型特征提取中。

2)比对检索

核心技术是度量学习,其指标是在固定维度的特色空间中,束缚模型将同类别样本拉近,不同类别样本推远。在深度学习时代,次要有几种经典的构造,均是通过正负样本定义以及损失函数设计上进行优化:

  • 比照损失(Contractive Loss)
  • 三元组损失(Triplet Loss)
  • 核心损失(Center Loss)

1.2 高德业务问题与难点

POI 牌匾的图像检索和学术上支流检索工作(如行人重辨认)有着较大的区别,次要包含以下几点:

  • 异质数据
  • 遮挡影响
  • 文本依赖性

1)异质数据

异质数据指的是不同相机拍摄、不同环境、不同条件下的图像差别。比方,在 POI 牌匾检索场景中,有比较严重的异质数据问题。如下图所示,是不同拍摄条件下的异源图像。

因为拍摄相机的品质、拍摄视角的不同,POI 牌匾最终的亮度、形态、清晰度等都存在十分大的差别。如何在差别较大的异质数据中实现 POI 牌匾检索,则是一个十分具备挑战性的问题。

2)遮挡影响

在路线场景中,常常存在树木以及车辆等烦扰信息,并且因为拍摄视角起因,拍摄到的 POI 牌匾常常会面临重大的遮挡问题。遮挡给 POI 牌匾检索带来微小的挑战。

3)文本依赖性

POI 牌匾还有一个独有个性就是对文本强依赖,次要是对 POI 名称文本的依赖。

在该场景下,心愿两个牌匾不要匹配。这就须要引入文本特色来加强特色辨别性。遮挡问题也同样会影响文本特色的无效表白,因而须要联合图像特色进行衡量。然而文本特色和图像特色来自多个模态,如何将多模信息进行交融也是该业务特有的技术难点。

💡 二、技术实现总体方案

牌匾检索的技术计划次要包含『数据生成 』和『 模型优化』两块。整体技术框架如下图所示:

2.1 数据生成模块

『数据生成』模块,分为了『冷启动主动生成数据』以及『模型迭代生成数据』两个步骤:

  • 【1】利用传统匹配算法 Sift 主动生成模型所需的训练数据,实现模型的 冷启动
  • 【2】模型上线后,对线上人工作业后果进行主动开掘,并组织成训练数据,以 迭代模型 优化。

2.2 模型优化模块

『模型优化』模块,思考到牌匾的文本信息比拟丰盛,因而将视觉信息与文本信息进行交融,高德团队基于三元组损失(Triplet Los)的度量学习框架下设计了一个『多模态检索模型』:

  • 设计了『视觉分支 』和『 文本分支』两局部。『视觉分支』的输出是 POI 牌匾的图像信息,应用双分支进行特征提取;『文本分支』的输出是 POI 牌匾的文本信息,应用 BERT 进行特征提取。
  • 针对视觉信息特色的提取,进一步设计了『全局特色分支』与『部分特色』分支,并别离进行了优化。

💡 三、数据生成模块

为训练检索模型,通常须要进行实例级标注,即依照 POI 牌匾粒度进行标注。然而在不同材料中筛选同一 POI 牌匾是一件非常复杂的工作,如果进行人工标注的话,则会带来昂扬的标注老本,并且无奈大规模标注。因而,高德设计了一套简略高效的训练数据主动生成形式,用于模型冷启动,整个环节无需任何人工标注。

具体过程为:借鉴传统特色点匹配算法思维,利用 Sift 特色点匹配算法 对两趟材料中的所有牌匾进行两两匹配,并通过内点数量对匹配后果进行筛选,即内点数量大于阈值的匹配牌匾视作同一牌匾。

3.1 传统特色点匹配算法存在的问题

传统特色点匹配算法会存在泛化性有余问题,由此生成的训练数据很可能导致模型无奈很好学习,具体体现在:

  • 【1】训练样本较为简单。
  • 【2】类别抵触,即同一牌匾分为多个类别。
  • 【3】类别谬误,即不同牌匾分为同一类别。

3.2 高德团队的优化形式

【1】采纳『多趟材料』匹配后果,晋升同一类别下牌匾的多样性;

高德应用了『多趟材料』的匹配后果来生成训练数据。因为在不同材料中,同一牌匾存在多张来自不同视角的拍摄后果,这就保障了同一类别下牌匾的多样性,防止了主动生成的样本都为简略样本问题。

【2】采纳『Batch 采样策略』以及『MDR Loss』,来升高模型对谬误标签数据的敏感性。

Batch 采样策略,即按类别进行采样,而数据中类别总数远远大于 Batch Size,因而能够缓解类别抵触的问题。

MDR Loss 是在 Triplet Loss 根底上设计了依据不同间隔区间进行正则化束缚的新的度量学习框架,从而缩小模型对对噪声样本的过拟合。

下图是 Triplet Loss 和 MDR Loss 的比照示意图。

MDR Loss 间隔正则束缚,心愿正样本(Positive)和 基准样本(Anchor)之间的间隔不被拉到有限近,同时负样本(Negative)也不心愿被推到有限远。

以类别谬误噪声样本来说,不同牌匾被误分为同一类别,依照 Triplet Loss 的优化指标则会强制模型将两者间隔学习到有限近。这样的话,模型会过拟合到噪声样本上,从而导致最终成果较差。

💡 四、模型优化模块

为了优化牌匾检索成果,高德的解决方案设计了多模态检索模型,对牌匾中的视觉信息与文本信息进行了交融。

  • 针对 视觉信息 ,优化模型 全局(Global)特色 部分(Local)特色 的提取能力。
  • 针对 文本信息 ,应用BERT 对牌匾的 OCR 后果进行编码,将其作为辅助特色,并与视觉特色交融后进行度量学习。

4.1 全局特色

通常对于检索工作来说,应用深度学习模型提取到的全局特色具备更高的鲁棒性,能够适应牌匾视角、色彩、光照变动等不同场景。为了进一步晋升全局特色的鲁棒性,高德的解决方案次要从以下两方面进行了优化:

  • 采纳『注意力(Attention)机制』,增强对重要特色的关注。
  • 网络 Backbone 的改良,以关注到更多细粒度特色。
1)引入注意力机制

在高德理论业务场景中,存在一些外观类似而细节有肯定差别的牌匾,在这种状况下,心愿模型能够关注到牌匾中的细粒度信息,比方『牌匾中文字的字体』、『文字排版』或者是『文字内容』自身。

注意力机制,能够帮忙模型在大量信息中精确地关注到可能辨别不同牌匾更为要害的局部。因而,正当的想法是在网络中引入了注意力模块,让模型学习要害信息,以晋升全局特色的分别能力。

高德团队采纳了『空间注意力机制(Spatial Group-wise Enhance,SGE)』。SGE 通过对特色图上的每个空间地位生成一个注意力因子,来调整每个空间地位处特色的重要性。SGE 模块如图所示:

  • 首先对特色图进行分组。
  • 对每组特色图计算语义特征向量。
  • 应用语义特征向量和特色图进行 position-wise 点乘,失去注意力图。
  • 将注意力图与特色图进行 position-wise 点乘,以此来加强特色,从而取得在空间上散布更好的语义特色。
2)改良网络 Backbone

为了缩小部分特色的损失,能够对网络 Backbone 进行改良:

  • 勾销 ResNet 网络最初一个 block 中的下采样,使得最终的特色图中蕴含更多的部分信息。
  • 应用 GeM 池化层代替最初一个 Global Average Pooling:GeM 是一种可学习的特色聚合办法,Global Max Pooling 和 Global Average Pooling 都是它的非凡状况,应用 GeM 池化能够进一步晋升全局特色鲁棒性。

4.2 部分特色

在针对全局特色进行优化当前,现有模型依然在以下三个方面体现不够好:

  • 截断的牌匾,特色学习品质差,如上图 (a)。
  • 遮挡的牌匾,特色中引入一些无关的上下文信息,如上图 (b)。
  • 类似但不同的牌匾,难以辨别,如上图 (c)。

针对以上 3 点,高德的解决方案进一步设计了 部分特色分支,让模型更加关注牌匾的『几何』、『纹理』等『部分信息』,与『全局特色』独特做牌匾检索。

针对『部分特色』的提取,次要思路是将牌匾垂直切分成几个局部,别离关注每个局部的部分特色,并对部分特色进行对齐后优化

对齐操作如上图所示:

  • 将特色图进行垂直池化,失去分块的部分特色图。
  • 计算两张图部分特色之间的类似度矩阵,而后依据公式 1 找到最短距离将两张图像进行对齐。

$$
\displaystyle
S_{i, j}=\left\{\begin{array}{ll}
d_{i, j} & i=1, j=1 \\
S_{i-1, j}+d_{i, j} & i \neq 1, j=1 \\
S_{i, j-1}+d_{i, j} & i=1, j \neq 1 \\
\min (S_{i-1, j}, S_{i, j-1})+d_{i, j} & i \neq 1, j \neq 1
\end{array}\right.
$$

  • \(i \),\(j \) 别离示意两张图中的第 i 块特色和第 j 块特色。
  • \(d_{ij} \) 示意两张图中第 \(i \) 块和第 \(j \) 块特色的欧式间隔。

通过这种形式进行部分特色对齐,能够很好地晋升牌匾在截断、遮挡、检测框不准等状况下的检索成果。

4.3 文本特色

POI 牌匾对文本强依赖,可能存在『仅牌匾名称文本发生变化』的场景。在上述设计的全局特色分支以及部分特色分支,可肯定水平上学习到文本特色,然而文本信息在整体信息中占比拟小,并且监督信号仅为两张图是否类似,导致文本特色并没有被很好的学习到。

解决的办法是,利用已有的文本 OCR 辨认后果,引入 BERT 对 OCR 后果进行编码失去文本特色,作为辅助特色分支和视觉特色进行交融,交融后的特色用于最终的牌匾检索度量学习。

解决方案中的一个细节点:在对牌匾提取 OCR 后果时,为了缩小单帧内辨认后果不准的影响,利用了一趟材料内同一牌匾的多帧 OCR 后果,并且将所失去的 OCR 后果进行拼接,应用 BERT 对 OCR 后果特色编码时,对来自不同帧的 OCR 后果之间插入 SEP 符号做辨别。

💡 五、业务成果

在新的技术计划下,高德 POI 牌匾图像检索获得了十分好的成果。准确率和召回率都大于 95%,大幅晋升了线上指标,并且模型速度也有了微小的晋升。在优化过程中,有一些十分难的 Case 也在逐步被解决,如图所示。

(a)、(b)、(c)展现的是此计划之前的 Bad Case(左图为 query 图像,右图为 Rank1 检索后果)。
从 Bad Case 中不难发现,牌匾检索对细粒度特征提取要求十分高,因为这些 Case 广泛特点是具备整体相似性,然而部分特色有区别。这些 Bad Case 也是设计多模态检索模型的初衷,并且也在优化过程逐步得以解决,如图 (d)、(e)、(f) 所示。

  • 多模态检索模型通过对全局特色优化以及引入部分特色对齐,使得模型更多关注到牌匾上更有辨别性的部分特色,如文字信息,文字字体、板式,牌匾纹理等,因而模型对于外观类似的不同牌匾具备更好的辨别能力,如图 (a) 和图(d) 成果比照
  • 此外,因为不同视角牌匾存在遮挡、拍摄时的光照强度不同以及不同相机色调差别大等因素,局部牌匾只利用视觉特色检索十分艰难。因而,通过辅助特色分支退出了 OCR 信息,进一步加强了特色的鲁棒性,使得牌匾检索能够综合思考牌匾的视觉信息和牌匾中的文本信息进行检索,如图 (b) 和图(e) 成果比照

💡 六、总结与下一步优化方向

上述图像检索计划在高德理论业务中利用,帮忙实现肯定的数据自动化生产。然而模型并不是完满的,仍会存在 Bad Case,能够思考:

  • 半监督学习 / 被动学习主动补充数据。
  • 引入 Transformer 构造。

6.1 半监督学习 / 被动学习数据挖掘

数据是十分重要的,模型自身是数据驱动的,补充数据对于模型有十分大的帮忙,针对性补充数据能帮忙模型解决极其的 Case。补充数据的要害是如何开掘 Corner Case 并主动针对性标注,半监督学习以及被动学习是比拟有前景的办法。

1)半监督学习
  • 利用有标签数据训练出的模型来对海量无标签数据产生伪标签,进一步标签数据和伪标签数据混合后再优化模型。
  • 半监督学习是齐全由模型本身产生标签,然而可能导致模型成果存在下限。
2)被动学习
  • 利用有标签数据训练出的模型对海量无标签数据进行数据挖掘,并人工标注挖掘出的有价值数据。
  • 被动学习则能够肯定水平进步半监督学习能达到的下限。
  • 无效地联合两者,能够更好地补充训练数据,解决 Corner Case。

6.2 Transformer 特征提取与交融

Transformer 是近年来十分无效的模型构造,在 NLP 畛域早就大放异彩,大部分预训练模型都采纳了它的构造和设计思路。其在计算机视觉畛域大量场景工作(分类、检测、宰割、跟踪以及行人重辨认)上也有优异的体现。

  • Transformer 相比于 CNN,具备全局感触野,并且能进行高阶相关性建模,在很多工作的特征提取上有着更好的表征能力。
  • Transformer 的输出也很灵便,能够不便地将其余模态信息进行编码,并和图像特色一起输出到模型中,因而其在多模特色交融上也有较大的劣势。

一个优化方向是,通过 Transformer 对图像 Patch 的相关性建模来解决 POI 牌匾在遮挡 / 截断场景下的匹配成果,并通过对文本特色编码来实现多模特色的交融。

参考文献

  • [1] Zhang X, Luo H, Fan X, et al. Alignedreid: Surpassing human-level performance in person re-identification[J]. arXiv preprint arXiv:1711.08184, 2017.
  • [2] Kim, Yonghyun, and Wonpyo Park. “Multi-level Distance Regularization for Deep Metric Learning.” arXiv preprint arXiv:2102.04223,2021.
  • [3] Radenović F, Tolias G, Chum O. Fine-tuning CNN image retrieval with no human annotation[J]. IEEE transactions on pattern analysis and machine intelligence, 2018, 41(7): 1655-1668.
  • [4] Li X, Hu X, Yang J. Spatial group-wise enhance: Improving semantic feature learning in convolutional networks[J]. arXiv preprint arXiv:1905.09646, 2019.

ShowMeAI 大厂技术实现计划举荐

  • 大厂解决方案系列 | 数据集 & 代码集(继续更新中):https://www.showmeai.tech/tutorials/50
  • ShowMeAI 官网 GitHub(实现代码):https://github.com/ShowMeAI-Hub/
  • 『举荐与广告』大厂解决方案

    • 大厂技术实现 | 多指标优化及利用(含代码实现)@举荐与广告计算系列
    • 大厂技术实现 | 爱奇艺短视频举荐业务中的多指标优化实际 @举荐与计算广告系列
    • 大厂技术实现 | 腾讯信息流举荐排序中的并联双塔 CTR 构造 @举荐与计算广告系列
  • 『计算机视觉 CV』大厂解决方案

    • 大厂技术实现 | 图像检索及其在淘宝的利用 @计算机视觉系列
    • 大厂技术实现 | 图像检索及其在高德的利用 @计算机视觉系列
  • 『自然语言解决 NLP』大厂解决方案

    • 大厂技术实现 | 详解常识图谱的构建全流程 @自然语言解决系列
    • 大厂技术实现 | 爱奇艺娱乐常识图谱的构建与利用实际 @自然语言解决系列
  • 『金融科技』大厂解决方案
  • 『生物医疗』大厂解决方案
  • 『智能制作』大厂解决方案
  • 『其余 AI 垂直畛域』大厂解决方案

ShowMeAI 系列教程精选举荐

  • 图解 Python 编程:从入门到精通系列教程
  • 图解数据分析:从入门到精通系列教程
  • 图解 AI 数学根底:从入门到精通系列教程
  • 图解机器学习算法:从入门到精通系列教程
  • 机器学习实战:手把手教你玩转机器学习系列
  • 深度学习教程:吴恩达专项课程 · 全套笔记解读
  • 自然语言解决教程:斯坦福 CS224n 课程 · 课程带学与全套笔记解读
  • 深度学习与计算机视觉教程:斯坦福 CS231n · 全套笔记解读
正文完
 0