实验目的:验证LoFTR的Coarse/Fine特征是否可作为描述子用于多视图SFM重建
实验结论:不适合用于SFM特征提取和匹配,首先它对大角度图像对匹配效果不好,然后它是端到端直接输出匹配点对的,没有特征描述子。虽然可以抽取中间特征作为描述子,但是同一幅图像和不同图像匹配时,得到的特征位置通常不一样,无法形成轨迹。
1. 为什么要提取特征
最终目标
实现多视图3D重建中的特征点轨迹追踪,用于Structure-from-Motion (SFM) 和 Bundle Adjustment (BA)
为什么选择LoFTR
LoFTR (Detector-Free Local Feature Matching) 是CVPR 2021的方法,特点:
| 优点 | 说明 |
|---|---|
| 稠密匹配 | 半稠密匹配,不是稀疏关键点 |
| 无需检测器 | 直接在特征图上匹配,无需预先检测关键点 |
| 特征质量高 | Transformer注意力机制增强特征表示 |
假设:如果能提取LoFTR的特征向量作为描述子,用于跨图像匹配,可能比传统描述子效果更好。
2. LoFTR架构理解
LoFTR的处理流程:
输入图像 → Backbone CNN → Coarse特征图 → Transformer → Fine精化 → 匹配结果
特征层级:
┌─────────────────────────────────────────────────────┐
│ Coarse特征 │
│ - 分辨率:1/8 │
│ - 维度:256 │
│ - 经过self/cross attention增强 │
├─────────────────────────────────────────────────────┤
│ Fine特征 │
│ - 分辨率:1/2 │
│ - 维度:64 │
│ - 用于精化匹配位置 │
└─────────────────────────────────────────────────────┤
3. Plan1实验:描述子区分度验证
实验设计
验证描述子能否区分"匹配点"和"非匹配点":
正样本:LoFTR高置信度匹配的对应点(描述子应该相似)
负样本:随机选取的非匹配点(描述子应该不相似)
指标:
- 区分比例:正样本相似度 > 负样本相似度的比例
- 差距均值:正负样本相似度差值的均值
实验结果
实验一:分层抽样(200对,置信度混合)
| 特征类型 | 区分比例 | 差距均值 |
|---|---|---|
| Coarse (256维) | 100% | +0.340 |
| Fine(中心) (64维) | 31% | -0.036 |
| Fine(平均) (64维) | 55% | +0.005 |
实验二:高置信度抽样(200对,置信度>0.85)
| 特征类型 | 区分比例 | 差距均值 | 改善 |
|---|---|---|---|
| Coarse (256维) | 100% | +0.394 | ✓ 最难差距0.03→0.12 |
| Fine(中心) (64维) | 35.5% | -0.023 | ○ +4.5% |
| Fine(平均) (64维) | 67.5% | +0.010 | ○ +12.5% |
Plan1结论
| 结论 | 说明 |
|---|---|
| Coarse特征可作为描述子 | 区分比例100%,差距均值+0.39,完全可区分正负样本 |
| Fine特征区分度不足 | 区分比例仅35-67%,不建议单独使用 |
| 推荐使用Coarse描述子 | 256维,匹配相似度约0.82-0.88 |
4. Plan2实验:跨图像匹配验证
实验设计
验证Coarse描述子在真实跨图像场景中的效果:
数据集:
- 多张航拍图像(有公共视图和无公共视图两类)
- 正样本:有公共视图的图像组
- 负样本:距离远、无公共视图的图像
预处理:
- 视角差异较大时旋转对齐
- 缩放+padding到固定尺寸
Step1:基准匹配
LoFTR对视角相近图像配对匹配,获取特征点和描述子:
关键发现:视角对齐至关重要!对齐后匹配数量大幅增加(从数百→上万)
Step2:点对点描述子匹配
正确方法:图像A的N个特征点描述子 ↔ 图像B的M个特征点描述子
匹配流程:
1. 图像A用LoFTR baseline得到特征点+描述子
2. 图像B用LoFTR baseline得到特征点+描述子
3. 计算相似度矩阵 [N × M]
4. Mutual nearest neighbor筛选双向最佳匹配
5. 阈值筛选高置信匹配
Step2结果:Coarse vs Fine对比
结论:Coarse描述子更适合跨图像匹配,匹配率比Fine高约13%
Step2阈值分析
提高相似度阈值筛选位置更接近的点:
推荐阈值:0.80-0.85,平衡匹配数量和质量
Step3:负面测试验证
无公共视图图像间的特征点匹配:
结论:无有效匹配,符合预期,描述子可有效区分有无公共视图
5. 关键问题发现
问题:特征点位置偏移
即使描述子匹配成功(相似度>0.80),特征点大致看匹配没什么问题,但是细看位置仍有偏移:

原因分析:
┌─────────────────────────────────────────────────────┐
│ LoFTR是稠密匹配器,不是关键点检测器 │
│ │
│ 特征点位置来源: │
│ - 来自两图像匹配的结果 │
│ - 换一个图像对,同一物理点的位置可能不同 │
│ - 位置依赖匹配过程,不是独立检测 │
└─────────────────────────────────────────────────────┘
与SIFT的区别:
┌─────────────────────────────────────────────────────┐
│ SIFT │
│ - 先检测稳定关键点(位置独立) │
│ - 再计算描述子 │
│ - 关键点位置在不同图像中更一致 │
├─────────────────────────────────────────────────────┤
│ LoFTR │
│ - 无独立检测器 │
│ - 位置依赖图像对匹配结果 │
│ - 同一物理点在不同匹配中位置可能偏移 │
└─────────────────────────────────────────────────────┘
对轨迹追踪的影响
问题示例:
图像1 → 图像2 → 图像3 → 图像4
点P在图像1中:位置(x1, y1),描述子D1
图像1-2匹配:P匹配到点Q,位置(x2, y2) ← 可能偏移
图像2-3匹配:Q匹配到点R,位置(x3, y3) ← 可能偏移
图像3-4匹配:R匹配到点S,位置(x4, y4) ← 可能偏移
结果:轨迹不连续,同一物理点在不同图像中位置不一致
影响:三角化误差大,BA优化效果差
6. 效率记录
单对图像处理耗时
| 操作 | 耗时 | 说明 |
|---|---|---|
| 模型加载 | ~1s | 一次性 |
| 图像预处理 | ~0.05s | resize + normalize |
| LoFTR匹配 | ~0.3s | 两图像稠密匹配 |
| 特征提取 | ~0.3s | 提取匹配点描述子 |
| 点对点匹配(优化后) | ~0.03s | GPU批量操作 |
| 总计(模型加载后) | ~0.7s | 单对图像 |
优化前后对比
| 方法 | 耗时 | 提速 |
|---|---|---|
| Python循环逐点匹配 | 1.2s | - |
| 批量numpy操作 | 0.46s | 2.6x |
| 全GPU批量操作 | 0.03s | 40x |
处理多张图像全配对的预估
组合数:C(N,2)对
耗时取决于图像数量和尺寸
7. 最终结论
LoFTR描述子验证结果
| 验证项 | 结果 |
|---|---|
| 描述子区分度 | ✓ Coarse特征100%可区分正负样本 |
| 跨图像匹配 | ✓ Coarse匹配率40%,优于Fine |
| 负面测试 | ✓ 无公共视图时匹配数为0 |
| 位置稳定性 | ✗ 位置偏移,不适合多视图轨迹 |
核心结论
┌─────────────────────────────────────────────────────┐
│ LoFTR的Coarse描述子质量很好 │
│ 但LoFTR不适合多视图SFM场景 │
│ │
│ 原因: │
│ 1. 无独立关键点检测器 │
│ 2. 特征点位置依赖图像对匹配 │
│ 3. 同一物理点在不同图像中位置不稳定 │
│ │
│ 结论: │
│ - LoFTR适合:两图像稠密匹配 │
│ - LoFTR不适合:多视图轨迹追踪 │
└─────────────────────────────────────────────────────┘
8. 替代方案
适合多视图SFM的方法
| 方法 | 年份 | 特点 | 推荐度 |
|---|---|---|---|
| XFeat | 2024 | 最轻量,CPU实时,位置稳定 | ★★★★★ |
| ALIKED + LightGlue | 2023 | 轻量+关键点感知,效果好 | ★★★★ |
| SuperPoint + LightGlue | 2018+2023 | 成熟稳定,广泛使用 | ★★★★ |
| DISK | 2020 | 专为多视图设计 | ★★★ |
| SIFT | 2004 | 经典可靠 | ★★★ |
推荐流程
多视图SFM重建推荐方案:
1. 用XFeat/ALIKED/SuperPoint检测稳定关键点
2. 每个关键点自带描述子
3. 多图像间描述子匹配建立轨迹
4. 几何验证(三角化 + 重投影误差)
5. 供SFM+BA使用
这是COLMAP的标准流程,不需要LoFTR