此文章来自AI产品部 - 张婷
一、前言
最近在做素材侵权检测项目的调研,素材监修过程中,需要去检测美术制作的素材是否和参考素材存在相似的地方,如果出现过于相似的细节就会引发侵权的问题。素材监修需要关注的是细节,比如:发饰、角色、LOGO、UI、配饰、服饰等等,属于是局部特征的侵权检测。这种如果单纯去用两张图片的整体向量相似度计算是不太行的,因为参考图片和美术制作的素材画风可能不一致,大小不一致,颜色不一致。这个时候就需要去做局部特征匹配。
二、图像局部匹配算法
图像局部匹配算法最早最早都是普通的CV算法,甚至不涉及到深度学习算法,例如SIFT、ORB,再到后来的superpoint、D2-Net、LoFTR、ASLFeat。
以下是一些常用的算法的对比。
| 算法类型 | 特征维度 | 计算复杂度 | 抗旋转性 | 适用场景 |
|---|---|---|---|---|
| SIFT | 128维 | O(n²) | ★★★★★ | 高精度侵权判定 |
| ORB | 256 bits | O(n) | ★★★☆☆ | 实时快速筛查 |
| SuperPoint | 256维 | O(nlogn) | ★★★★☆ | 复杂形变素材 |
| D2-Net | 512维 | O(n²) | ★★★★☆ | 跨风格匹配 |
| LoFTR | Transformer | O(n²) | ★★★★★ | 低纹理素材 |
| ASLFeat | 256维 | O(nlogn) | ★★★★☆ | 遮挡场景 |
上面的表格我们可以看到不同的算法有不同的适用场景。
图片匹配算法可以分为传统的图像匹配算法和基于深度学习的图像匹配算法:
传统图像匹配算法
-
模板匹配:在待匹配图像中搜索与模板图像最相似的区域。常用的方法有归一化积相关灰度匹配,通过计算模板与待匹配图像中各子区域的归一化相关系数,找到最匹配的位置。
-
特征点匹配:
- SIFT(尺度不变特征变换) :提取图像中的关键点和描述子,这些特征对尺度、旋转和光照变化具有一定的不变性,通过匹配两幅图像的SIFT特征点来实现局部匹配。
- SURF(加速稳健特征) :是对SIFT的改进,计算速度更快。它同样提取图像的关键点和描述子,用于图像的局部匹配。
- ORB(Oriented FAST and Rotated BRIEF) :结合了FAST关键点检测和BRIEF描述子,同时引入方向信息,具有较好的旋转不变性,是一种高效的特征点匹配算法。
-
基于局部二值模式(LBP)的匹配:LBP对图像的灰度变化具有较强的鲁棒性,可以用于局部特征的提取和匹配,在表面缺陷检测、人脸识别等领域有应用。
基于深度学习的图像匹配算法
- LoFTR(Detector-Free Local Feature Matching with Transformers) :提出了一种无检测器的局部特征匹配方法。它从卷积神经网络中抽取特征,然后使用Transformer推理特征之间的交互关系,最后通过显式匹配层提取对应关系。该算法在低纹理、运动模糊或重复图案等复杂场景下也能生成高质量的匹配。
- MatchNet:通过卷积神经网络进行图像区域特征提取和相似性度量,将图像块对匹配问题视为二分类问题,采用双塔结构联合训练特征网络和度量网络。
- DeepCompare:比较灰度图像块对的相似性,采用深度网络、中心环绕双流网络和空间金字塔池化等技术提升性能。
- MatchAnything:这是一个大规模的预训练框架,利用合成的跨模态训练信号和多源数据训练模型,使其能够识别和匹配跨图像的基本结构,从而实现跨模态图像匹配,具有很强的泛化能力
- SuperPoint:SuperPoint 使用全卷积网络(FCN)在全尺寸图像上运行,能够在一个前向传递中同时计算像素级的兴趣点位置和相关描述子。它采用多尺度自注意力机制,能够在不同尺度上捕捉图像的特征。同时,SuperPoint还采用了类似于Transformer结构的编码器-解码器网络,能够在不同位置上提取特征,并将它们有机地结合起来。SuperPoint 通过自监督的方式进行训练,无需人工标注的兴趣点数据。它利用合成的几何数据集进行训练,使模型能够检测出在透视变换下具有重复性的兴趣点。SuperGlue 是一种用于特征点匹配的算法,与 SuperPoint 结合后,可以进一步提高特征点匹配的准确性和效率。
以下是做的一些基于SIFT算法的局部匹配的结果,绿线代表是相似的特征点。
三、 原理
-
模板匹配
- 基本原理:将一个已知的模板图像在目标图像中逐像素滑动,通过计算模板与目标图像中每个子区域的相似度,找到最相似的区域。
- 相似度度量:常用的方法包括归一化互相关系数(Normalized Cross-Correlation, NCC)、均方误差(Mean Squared Error, MSE)、零均值归一化互相关(Zero-Mean Normalized Cross-Correlation, ZNCC)等。
- 示例:假设模板图像大小为 M×N,目标图像大小为 W×H,则模板会在目标图像中滑动 (W−M+1)×(H−N+1) 次,每次计算一个相似度值,最终选择相似度最高的位置作为匹配结果。
-
特征点匹配
- 基本原理:先提取图像中的特征点(如角点、边缘点等),然后计算每个特征点的描述子(特征向量),最后通过匹配描述子来找到两幅图像之间的对应关系。
- 特征点检测:常用的检测算法包括 SIFT、SURF、ORB、Harris 等。
- 描述子计算:每个特征点会生成一个描述子,描述子是一个固定长度的向量,用于表征特征点的局部信息。
- 匹配方法:常用的方法是最近邻匹配(如欧氏距离、汉明距离)或基于距离比值的匹配(如 Lowe's ratio test)。
- 示例:假设图像 A 中有 N 个特征点,图像 B 中有 M 个特征点,则需要计算 N×M 次描述子之间的距离,找到匹配的特征点对。
四、 应用场景
-
模板匹配
- 优点:实现简单,对目标的形状和大小变化较为敏感,适合目标清晰且背景简单的场景。
- 缺点:计算量大,对目标的旋转、缩放和变形不具有鲁棒性,对光照变化和噪声较为敏感。
- 适用场景:适用于目标图像与模板图像非常相似的情况,例如在工业检测中检测零件的固定位置、在文档图像中查找特定的标志等。
-
特征点匹配
- 优点:对旋转、缩放和光照变化具有一定的鲁棒性,能够处理更复杂的场景和目标变形。
- 缺点:特征点提取和描述子计算较为复杂,计算量较大,对特征点的提取质量依赖较高。
- 适用场景:适用于目标图像与模板图像存在旋转、缩放或部分遮挡的情况,例如三维重建、图像拼接、目标识别等。
五、性能特点
-
模板匹配
- 时间复杂度:时间复杂度较高,尤其是当模板和目标图像较大时,计算量会显著增加。
- 空间复杂度:空间复杂度较低,主要存储模板和目标图像。
- 鲁棒性:对目标的旋转、缩放和变形不具有鲁棒性,对光照变化和噪声较为敏感。
-
特征点匹配
- 时间复杂度:时间复杂度较高,主要集中在特征点提取和描述子计算上,但可以通过优化算法(如 ORB)降低计算量。
- 空间复杂度:空间复杂度较高,需要存储特征点和描述子。
- 鲁棒性:对旋转、缩放和光照变化具有一定的鲁棒性,但对特征点的提取质量依赖较高。
六、 总结
- 模板匹配适用于目标图像与模板图像非常相似、背景简单且对计算效率要求不高的场景。
- 特征点匹配适用于目标图像与模板图像存在旋转、缩放或部分遮挡、背景复杂且对鲁棒性要求较高的场景。