论文阅读笔记|Deep Image Homography Estimation
前言
D. DeTone, T. Malisiewicz, and A. Rabinovich. Deep image homography estimation. arXiv preprint arXiv:1606.03798, 2016
传统的单应性估计流程一般使用人工设计的局部特征描述方法(例如SIFT、SURF、ORB等)进行特征提取,对特征进行匹配获取初始匹配点;再利用RANSAC算法从初始匹配点中滤除错误匹配点,获取特征匹配内点;最后使用直接线性变换(DLT)方法从特征匹配内点中计算出单应性矩阵。ORB等局部特征描述方法在纹理丰富的区域能够提取到质量较好的特征,但在纹理不丰富的区域往往效果欠佳。
基于卷积神经网络强大的特征提取能力,本文构造了一个VGG风格的回归网络,可以从两幅图像中直接学习单应性变换的参数,在合成数据集上取得了比ORB更好的效果。
Pytorch源码地址
本文的主要贡献如下:①设计了一个VGG风格的网络来进行单应性估计②使用了4点参数化进行单应性估计③提出了一个合成数据集的方法。此外,本文还设计了一个分类网络,用来生成单应性的分布,这里不详细讨论,只专注于回归网络。
4点参数化(The 4-point Homography Parameterization)
单应性可以由一个3×3的矩阵表示,如下式所示:
(
u
′
v
′
1
)
∼
(
H
11
H
12
H
13
H
21
H
22
H
23
H
31
H
32
H
33
)
(
u
v
1
)
\left(\begin{array}{l} u^{\prime} \\ v^{\prime} \\ 1 \end{array}\right) \sim\left(\begin{array}{lll} H_{11} & H_{12} & H_{13} \\ H_{21} & H_{22} & H_{23} \\ H_{31} & H_{32} & H_{33} \end{array}\right)\left(\begin{array}{l} u \\ v \\ 1 \end{array}\right)
⎝⎛u′v′1⎠⎞∼⎝⎛H11H21H31H12H22H32H13H23H33⎠⎞⎝⎛uv1⎠⎞其中,
u
u
u、
v
v
v表示变换前X和Y方向上的坐标,
u
′
u^{\prime}
u′、
v
′
v^{\prime}
v′表示变换后X和Y方向上的坐标,
∼
\sim
∼表示比例。
直接使用单应性矩阵的向量形式来作为回归的标签是不合理的,因为单应性矩阵是由旋转、平移等混合组成的,无法量化,直接用来回归会很不稳定,且无法直观地理解。
一种替代的方法是使用图像的四个顶点的位置,设
Δ
u
1
=
u
1
′
−
u
1
\Delta u_{1}=u_{1}^{\prime}-u_{1}
Δu1=u1′−u1为第一个变换后的顶点位置与原顶点位置的偏移量,4点参数化可以这样表示
H
4
p
o
i
n
t
=
(
Δ
u
1
Δ
v
1
Δ
u
2
Δ
v
2
Δ
u
3
Δ
v
3
Δ
u
4
Δ
v
4
)
H_{4 p o i n t}=\left(\begin{array}{cc} \Delta u_{1} & \Delta v_{1} \\ \Delta u_{2} & \Delta v_{2} \\ \Delta u_{3} & \Delta v_{3} \\ \Delta u_{4} & \Delta v_{4} \end{array}\right)
H4point=⎝⎜⎜⎛Δu1Δu2Δu3Δu4Δv1Δv2Δv3Δv4⎠⎟⎟⎞其中,
Δ
u
\Delta u
Δu和
Δ
v
\Delta v
Δv分别为图像的四个顶点在X和Y方向上的偏移量,总共8个参数。一旦知道了输出的4个点的偏移量,就可以用直接线性变换方法计算出单应性矩阵。可见,以4点参数化作为回归的标签,更容易进行学习,理解起来也更加直观。
数据集生成

图示为生成数据集的一个样本的方法,主要分为5个步骤:
- 在图像上随机裁剪一块区域作为Patch A,如图中蓝色框所示(注意,这里的位置p要进行限定,防止扰动前后的顶点坐标落在图像边界外);
- 在 [ − ρ , ρ ] [-\rho, \rho] [−ρ,ρ]的范围内对Patch A的四个顶点进行随机扰动;
- 根据扰动前后的顶点计算出单应性矩阵HAB(Step3中蓝色框到绿色框的单应性矩阵);
- 对图像应用 (HAB)-1=HBA 变换,在位置p处裁剪出Patch B;
- 将Patch A和Patch B堆叠作为网络的输入,网络的输出标签是HAB。
根据4点参数化,在实际使用中,HAB 应该替换为Patch的四个顶点的偏移量 H 4 p o i n t H_{4 p o i n t} H4point,即Step2中的随机扰动值。
网络结构

回归网络的结构如图所示,可以看出这是一个VGG风格的网络。
网络的输入是128×128×2的两个堆叠的Patch,网络使用了8个卷积层,每个卷积层的窗口形状为3×3,填充为1,并紧接BatchNorm和ReLU;8个卷积层对应的滤波器数量为64,64,64,64,128,128,128,128。每两个卷积层后使用一个窗口形状为2、步幅为2的最大池化层。全连接层有1024个隐藏单元,输出层单元数为8,在最后一个卷积层之后和全连接层之后使用DropOut。
回归网络的损失函数使用L2损失。
实验
超参数:
(1) 迭代次数: 90k
(2) 初始学习率: 0.005
(3) 学习率衰减: 每30,000次迭代后,学习率乘0.1
(4) Batch size: 64
(5) 优化器: SGD, momentum=0.9
训练用的数据集在MS-COCO训练集上生成,所有的图片缩放至320×240尺寸并转化为灰度图,然后共生成500,000对128×128尺寸的Patch对,Patch的扰动范围
ρ
\rho
ρ = 32。验证集同理。
测试用的数据集在MS-COCO测试集上生成,所有的图片缩放至640×480尺寸并转化为灰度图,然后共生成5000对256×256尺寸的Patch对,Patch的扰动范围
ρ
\rho
ρ = 64。这是为了与传统的ORB方法比较,因此在使用网络进行预测时,Patch要再缩放至128×128,相应的4点参数化预测结果要乘2。
2万+

被折叠的 条评论
为什么被折叠?



