在知乎问题:深度学习应用在哪些领域让你觉得「我去,这也能行!」?中遇到一篇提交在arXiv 2016(arXiv不是正式发表,只是可以证明原创性,提供时间戳的网站)的文章《Deep Image Homography Estimation》,感觉对自己帮助很大,所以记录在这里。
之前自己也在思考如何利用神经网络实现图像的配准,没思考出什么结果来。大部分的深度学习中使用的是单幅图像进行训练,如果输入的是变形图像和参考图像,其实可以借鉴图像匹配的网络,但是还是不清楚具体如何进行。甚至开始怀疑配准的意义,既然都有一幅ground truth了,为什么不直接使用而需要将另外一幅进行配准。最后这个问题后来想通了:配准指的是形态配准到一致,但在异源图像的融合中,还需要两幅图像之间的互补信息才能得到更多的有效信息。剩下的问题在这篇文章中给出了一些思路。
总的来说,这篇文章的创新点主要有两个,一个是如知乎回答中的,将神经网络与图像处理的专业知识结合起来了,不再是使用一个黑箱直接得到结果,而是使用神经网络得到一个中间变量Homography,再使用Homography进行配准,而不必再将特征点检测和变换估计分开,因为传统的方法是先使用ORB等特征点检测找到一些角点,然后再使用RANSAC等方法进行变换矩阵的估计。因为关于Homography的研究其实已经很成熟了,只要是共面变换,就可以使用Homography单应矩阵描述图像之间的变换。文章中提到Homography的应用场景有三个:只有旋转的变换;平面场景;离观察者很远的场景。这三种条件正如之前博客中对于Homography的分析。
还有一个创新点我认为是作者以一种很简单的方式建立了训练样本并且得到了真正的Homography。作者借助了图像集MS-COCO(Microsoft COCO: Common Objects in Context)构建自己的训练样本。
首先Homography有8个自由度(8-dof),所以理论上只需要4对匹配点就可以估计出单应矩阵。所以参考图像就是在图像样本中随机裁剪得到一个128x128大小的图像patch A,然后对于图像的四个顶点坐标的x,y值分别在[-p,p]范围内进行偏移(偏移最大值为128的四分之一),于是就得到了一个变形的绿色的框B,并且可以得到A到B之间的变换矩阵HAB作为ground-truth training label。但是在训练网络中我们希望变形图像和参考图像都是大小一样的正方形,所以我们借助HAB矩阵的逆矩阵,将原图变形,同时将绿框恢复为正方形,对应Step4,Step4中的图像中的绿框就是变形图像B。A和B都是灰度图,二者构建一个2通道的图像作为网络的输入。关于2通道图像在神经网络中的训练,可以参考这个博客。
此外,还可以人为地在训练集上做一些模糊等处理来增强网络的鲁棒性。
关于网络的一些细节
常规操作:使用3x3的卷积模板,使用BatchNorm归一化,使用ReLU作为激活函数。整个网络的结构和Oxford VGG很相似,整个网络有10层,其中有8个卷积层,两个全连接层,每两个卷积层后面跟一个最大池化层,在最后一个卷积层和第一个全连接层之间还有一个Dropout,Dropout以0.5的概率随机丢弃神经元,避免过拟合。
在此基础上,其实作者提出了两个结构,一个是回归网络regression network,直接估计出Homography矩阵的参数值;一个是分类网络classification network,输出对于量化矩阵的分布函数produces a distribution over quantized homographies.
可以看到,两种网络只有最后一层是不同的。
回归网络在训练时最后一层使用的是L2 损失函数。这种方法的优点是计算简单,然而,没有计算出预测值的置信度confidence,这在某些应用中是不允许的prohibitive。
分类网络在最后一层使用的是softmax分类器训练时使用交叉熵cross entrop作为损失函数。文章中使用了量化方法,我的理解是这样的:文章首先将对单应矩阵的预测转换成对4对匹配点的预测,具体形式是横纵坐标的偏移量(对应于测试样本的构建),4个点对的偏移量构成的矩阵和单应矩阵是一一对应的。
所以,量化就是把当前点坐按概率分配给对应点。因为会产生量化误差,所以对每一个角点会生成一个关于偏移量的分布函数。
X和y坐标都可以在正向和负方向偏移。对8个维度,每个维度用21bins量化,这样输出就是168个神经元。
怎么实验的
实验使用了Titan X GPU进行训练,耗时8小时,使用了随机梯度下降法,动量momentum是0.9,学习率是0.005,每30000次迭代进行因子为10的下降。Batch size是64,total iteration为90000.使用Caffe深度学习框架。网络参数的初始值为随机值。
测试集和训练集的生成方法类似,只不过图像更大,patch也更大(256x256).因为在patch是128x128时,ORB检测出的特征点过少,而神经网络没有这个问题。因为网络的输入必须是固定大小的,所以测试时的patch必须进行因子为2的下采样,在计算得到homography时再乘2.
作者将HomographyNet的两个版本回归和分类网络与两个baseline进行了比较。一个baseline是ORB特征点检测+RANSAC+OpenCV中的getPerspectiveTransform函数的方法;一个baseline是对于测试集中的图像对使用单位矩阵identity matrix。ORB方法的效果与特征点的数目有关:In scenarios where too few ORB features are computed, the ORB+RANSAC approach outputs an identity estimate. In scenarios where the ORB+RANSAC’s estimate is too extreme, the 4-point homography estimate is clipped at [-64,64].
下图是实验结果。评价指标是对应点之间的平均距离。
可以看到回归的方法效果最好,但是分类的方法可以得到置信度,且可以可视化地纠正实验结果,在某些应用中是有优势的。
作者总结了这个系统的两个优势,一个是速度快,借助英伟达的泰坦显卡,可以实现每秒处理300帧的图像,with a batch size of one。第二,将计算机视觉中最基础的单应矩阵的估计问题转化为机器学习的问题,可以针对应用情景如使用SLAM的室内导航机器人做特定优化。事实上,单应矩阵在图像拼接,ORB-SLAM算法和Augmented Reality(AR),相机标定中都有很重要的应用。这篇文章的三个作者都来自Magic Leap公司,一家做AR的公司,已经得到了Google和阿里巴巴等公司是十几亿美金的投资。
Reference:
https://blog.csdn.net/ajing2014/article/details/53998866