三维卷积:全景图像Spherical CNNs(Code)
卷积神经网络(CNN)可以很好的处理二维平面图像的问题。然而,对球面图像进行处理需求日益增加。例如,对无人机、机器人、自动驾驶汽车、分子回归问题、全球天气和气候模型的全方位视觉处理问题。
将球形信号的平面投影作为卷积神经网络的输入的这种Too Naive做法是注定要失败的,Cnns的巨大成就来源于局部感受野的权值共享,而多层结构总能找到不同rect的相同目标,给出响应。而对于球形图像,一个目标在图片的不同位置是发生形变的,若要使用CNNs直接共享,构建的局部感受野理应描述这种转换。如下图所示,而这种平面投影引起的空间扭曲会导致CNN无法共享权重。
We propose a definition for the spherical cross-correlation that is both expressive and rotation-equivariant. The spherical correlation satisfies a generalized Fourier theorem, which allows us to compute it efficiently using a generalized(non-commutative) Fast Fourier Transform (FFT) algorithm. We demonstrate the computational efficiency, numerical accuracy, and effectiveness of spherical CNNs applied to 3D model recognition and atomization energy regression.
如何使三维图像由二维图像重构出来,解决在不同位置产生形变问题,经典的FFT方法和李群模型就成为这种桥梁。
关于SO3 作为刚体变换的阐述,参考:半闲居士视觉SLAM十四讲笔记(3)三维空间刚体运动 - par..._CSDN博客 。
wocao,这个大纲写的更简洁明了:高翔《视觉SLAM十四讲》从理论到实践。
区分出三维图像和平面的细微差别,把球面图像看做是三维流形,把球面展开为离散的三维李群,把SO(3)的关系用CNNs的高层进行表示。
As shown in Figure 1, there is no good way to use translational convolution or cross-correlation1 to analyze spherical signals. The most obvious approach, then, is to change the definition of crosscorrelation by replacing filter translations by rotations. Doing so, we run into a subtle but important difference between the plane and the sphere: whereas the space of moves for the plane (2D translations) is itself isomorphic to the plane, the space of moves for the sphere (3D rotations) is a different, three-dimensional manifold called SO(3)2. It follows that the result of a spherical correlation (the output feature map) is to be considered a signal on SO(3), not a signal on the sphere, S2. For this reason, we deploy SO(3) group correlation in the higher layers of a spherical CNN (Cohen and Welling, 2016).
The implementation of a spherical CNN (S2-CNN) involves two major challenges. Whereas a square grid of pixels has discrete translation symmetries, no perfectly symmetrical grids for the sphere exist. This means that there is no simple way to define the rotation of a spherical filter by one pixel. Instead, in order to rotate a filter we would need to perform some kind of interpolation. The other challenge is computational efficiency; SO(3) is a three-dimensional manifold, so a naive implementation of SO(3) correlation is O(n6).
球形CNNs的两个难点:图像网格化的粒度,多大的粒度分解能保证重建的准确性;SO(3)的三维流形计算复杂度问题,时间复杂度是O(n6)的。
........................................
The Key moments:
使用G-FFT进行快速相关性卷积,的相关结构。It is well known that correlations and convolutions can be computed efficiently using the Fast Fourier Transform (FFT). This is a result of the Fourier theorem, which states that[f = ^ f ^ . Since the FFT can be computed in O(n log n) time and the product has linear complexity, implementing the correlation using FFTs is asymptotically faster than the naive O(n2) spatial implementation.
.................
.......................................
最重要的一点,Our code is available at: https://github.com/jonas-koehler/s2cnn .
实验效果:
Results We evaluate by RMSE and compare our results to Montavon et al. (2012) and Raj et al. (2016) (see table 3). Our learned representation outperforms all kernel-based approaches and a MLP trained on sorted Coulomb matrices. Superior performance could only be achieved for an MLP trained on randomly permuted Coulomb matrices. However, sufficient sampling of random permutations grows exponentially with N, so this method is unlikely to scale to large molecules.
文中定义了S2和SO(3)的互相关,并分析了它们的属性,进而实现了一个通用的RRT相关算法。实验的数值结果证实了该算法的稳定性和准确性,即使在深度网络上依然有效。
总之,在准确率、可扩展性、等方面是综合最有前途的一个三维网络。
进一步优化:
For intrinsically volumetric tasks like 3D model recognition, we believe that further improvements can be attained by generalizing further beyond SO(3) to the roto-translation group SE(3). The development of Spherical CNNs is an important first step in this direction. Another interesting generalization is the development of a Steerable CNN for the sphere (Cohen and Welling, 2017), which would make it possible to analyze vector fields such as global wind directions, as well as other sections of vector bundles over the sphere.
把SO(3)上的计算往SE(3)上进行转化,把旋转相关性变换到切空间的平移SE(3),应该可以达到新的加速效果。
Appendix:
李群与李代数
三维旋转矩阵构成了特殊正交群SO(3),而变换矩阵构成了特殊欧氏群SE(3)
但无论SO(3),还是SE(3),它们都不符合加法封闭性,即加之后不再符合旋转矩阵的定义,但是乘法却满足,将这样的矩阵称为群。即只有一种运算的集合叫做群。
群记作G=(A, .),其中A为集合,.表示运算。群要求运算满足以下几个条件:
(1)封闭性。(2)结合律。
(3)幺元。一种集合里特殊的数集。
(4)逆。
可以证明,旋转矩阵集合和矩阵乘法构成群,而变换矩阵和矩阵乘法也构成群。
介绍了群的概念之后,那么,什么叫李群呢?
李群就是连续(光滑)的群。一个刚体的运动是连续的,所以它是李群。
每个李群都有对应的李代数。那么什么叫李代数呢?
李代数就是李群对应的代数关系式。
李群和李代数之间的代数关系如下:
可见两者之间是指数与对数关系。
那么exp(φ^)是如何计算的呢?它是一个矩阵的指数,在李群和李代数中,它称为指数映射。任意矩阵的指数映射可以写成一个泰勒展开式,但是只有在收敛的情况下才会有结果,它的结果仍然是一个矩阵。
同样对任意一元素φ,我们亦可按此方式定义它的指数映射:
由于φ是三维向量,我们可以定义它的模长θ和方向向量a满足使φ=θa。那么,对于a^,可以推导出以下两个公式:
设a=(cosα, cosβ, cosγ),可知(cosα)^2+(cosβ)^2+(cosγ)^2=1
(1)a^a^=aaT-I
(2)a^a^a^=-a^
上面两个公式说明了a^的二次方和a^的三次方的对应变换,从而可得:
exp(φ^)=exp(θa^)=∑(1/n!(θa^)n)=...=a^a^+I+sinθa^-cosθa^a^=(1-cosθ)a^a^+I+sinθa^=cosθI+(1-cosθ)aaT+sinθa^.
回忆前一讲内容,它和罗德里格斯公式如出一辙。这表明,so(3)实际上就是由旋转向量组成的空间,而指数映射即罗德里格斯公式。通过它们我们把so(3)中任意一个向量对应到了一个位于SO(3)中的旋转矩阵。反之,如果定义对数映射,我们也能把SO(3)中的元素对应到so(3)中:
但通常我们会通过迹的性质分别求解转角和转轴,那种方式会更加省事一些。
OK,讲了李群和李代数的对应转换关系之后,有什么用呢?
主要是通过李代数来对李群进行优化。比如说,对李群中的两个数进行运算,对应的他们的李代数会有什么变化?
首先是,两个李群中的数进行乘积时,对应的李代数是怎么样的变化,是不是指数变化呢?但是注意,李群里的数是矩阵,不是常数,所以不满足ln(exp(A+B))=A+B,因为A,B是矩阵,不是常数,那么是怎么的对应关系呢?
是
三维卷积:全景图像Spherical CNNs(Code)的更多相关文章
- [置顶] 实现360度全景图像的利器--PanoramaGL
传送门 ☞轮子的专栏 ☞转载请注明 ☞ http://blog.csdn.net/leverage_1229 介绍 本指南将介绍一个PanoramaGL 0.1类库的简单用法,更多的细节请签出 Hel ...
- [DeeplearningAI笔记]卷积神经网络4.11一维和三维卷积
4.4特殊应用:人脸识别和神经网络风格转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 4.11一维和三维卷积 二维和一维卷积 对于2D卷积来说,假设原始图像为\(14*14*3\)的三通 ...
- Opencv 使用Stitcher类图像拼接生成全景图像
Opencv中自带的Stitcher类可以实现全景图像,效果不错.下边的例子是Opencv Samples中的stitching.cpp的简化,源文件可以在这个路径里找到: \opencv\sourc ...
- Spherical CNNs代码配置过程
ICLR18 best paper: Spherical CNNs 论文链接:https://arxiv.org/abs/1801.10130 GITHUB地址:https://github.com/ ...
- 卷积神经网络(CNN)之一维卷积、二维卷积、三维卷积详解
作者:szx_spark 由于计算机视觉的大红大紫,二维卷积的用处范围最广.因此本文首先介绍二维卷积,之后再介绍一维卷积与三维卷积的具体流程,并描述其各自的具体应用. 1. 二维卷积 图中的输入的数据 ...
- python+opencv中最近出现的一些变化( OpenCV 官方的 Python tutorial目前好像还没有改过来?) 记一次全景图像的拼接
最近在学习过程中发现opencv有了很多变动, OpenCV 官方的 Python tutorial目前好像还没有改过来,导致大家在学习上面都出现了一些问题,现在做一个小小的罗列,希望对大家有用 做的 ...
- 昇腾CANN论文上榜CVPR,全景图像生成算法交互性再增强!
摘要:近日,CVPR 2022放榜,基于CANN的AI论文<Interactive Image Synthesis with Panoptic Layout Generation>强势上榜 ...
- 跟我学Python图像处理丨基于灰度三维图的图像顶帽运算和黑帽运算
摘要:本篇文章结合灰度三维图像讲解图像顶帽运算和图像黑猫运算,通过Python调用OpenCV函数实现. 本文分享自华为云社区<[Python图像处理] 十三.基于灰度三维图的图像顶帽运算和黑帽 ...
- 【opencv】 solvepnp 和 solvepnpRansac 求解 【空间三维坐标系 到 图像二维坐标系】的 三维旋转R 和 三维平移 T 【opencv2使用solvepnp求解rt不准的问题】
参考: pnp问题 与 solvepnp函数:https://www.jianshu.com/p/b97406d8833c 对图片进行二维仿射变换cv2.warpAffine() or 对图片进行二维 ...
随机推荐
- VS打包部署图文具体步骤及程序防卸载的制作(password验证卸载)
1. 在vs2010 选择"新建项目->"其它项目类型"->" Visual StudioInstallerà "安装项目": ...
- 一张图搞定OAuth2.0 在Office应用中打开WPF窗体并且让子窗体显示在Office应用上 彻底关闭Excle进程的几个方法 (七)Net Core项目使用Controller之二
一张图搞定OAuth2.0 目录 1.引言 2.OAuth2.0是什么 3.OAuth2.0怎么写 回到顶部 1.引言 本篇文章是介绍OAuth2.0中最经典最常用的一种授权模式:授权码模式 非常 ...
- 秒懂C#通过Emit动态生成代码 C#使用Emit构造拦截器动态代理类
秒懂C#通过Emit动态生成代码 首先需要声明一个程序集名称, 1 // specify a new assembly name 2 var assemblyName = new Assembly ...
- QML与C++交互:登陆界面设计
QML与C++交互:登陆界面设计 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 开发环境:Qt5.2.1 说明: QML设计前 ...
- ImportError: No module named 'ConfigParser'
Resolve Method: I found the problem. I had manually installed a newer version of python (version 3.2 ...
- JavaScript基础 -- ECMAscript
ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)通过ECMA-262标准化的脚本 ...
- ramfs、rootfs和initramfs【转】
ramfs, rootfs and initramfs October 17, 2005 Rob Landley <rob@landley.net> =================== ...
- Oracle 11g密码过期问题及解决方案
问题: 在自用的一个系统里,连接的是本地自建的一个数据库.用sqldeveloper登录数据库.提示如下图: 提示:密码过期 解决方案: 密码过期一般存在两种可能: 由于Oracle中默认在defau ...
- POJ 2260:Error Correction
Error Correction Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6014 Accepted: 3886 ...
- NOI.AC #31 MST —— Kruskal+点集DP
题目:http://noi.ac/problem/31 好题啊! 题意很明白,对于有关最小生成树(MST)的题,一般是要模拟 Kruskal 过程了: 模拟 Kruskal,也就是把给出的 n-1 条 ...