卷积神经网络(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)的更多相关文章

  1. [置顶] 实现360度全景图像的利器--PanoramaGL

    传送门 ☞轮子的专栏 ☞转载请注明 ☞ http://blog.csdn.net/leverage_1229 介绍 本指南将介绍一个PanoramaGL 0.1类库的简单用法,更多的细节请签出 Hel ...

  2. [DeeplearningAI笔记]卷积神经网络4.11一维和三维卷积

    4.4特殊应用:人脸识别和神经网络风格转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 4.11一维和三维卷积 二维和一维卷积 对于2D卷积来说,假设原始图像为\(14*14*3\)的三通 ...

  3. Opencv 使用Stitcher类图像拼接生成全景图像

    Opencv中自带的Stitcher类可以实现全景图像,效果不错.下边的例子是Opencv Samples中的stitching.cpp的简化,源文件可以在这个路径里找到: \opencv\sourc ...

  4. Spherical CNNs代码配置过程

    ICLR18 best paper: Spherical CNNs 论文链接:https://arxiv.org/abs/1801.10130 GITHUB地址:https://github.com/ ...

  5. 卷积神经网络(CNN)之一维卷积、二维卷积、三维卷积详解

    作者:szx_spark 由于计算机视觉的大红大紫,二维卷积的用处范围最广.因此本文首先介绍二维卷积,之后再介绍一维卷积与三维卷积的具体流程,并描述其各自的具体应用. 1. 二维卷积 图中的输入的数据 ...

  6. python+opencv中最近出现的一些变化( OpenCV 官方的 Python tutorial目前好像还没有改过来?) 记一次全景图像的拼接

    最近在学习过程中发现opencv有了很多变动, OpenCV 官方的 Python tutorial目前好像还没有改过来,导致大家在学习上面都出现了一些问题,现在做一个小小的罗列,希望对大家有用 做的 ...

  7. 昇腾CANN论文上榜CVPR,全景图像生成算法交互性再增强!

    摘要:近日,CVPR 2022放榜,基于CANN的AI论文<Interactive Image Synthesis with Panoptic Layout Generation>强势上榜 ...

  8. 跟我学Python图像处理丨基于灰度三维图的图像顶帽运算和黑帽运算

    摘要:本篇文章结合灰度三维图像讲解图像顶帽运算和图像黑猫运算,通过Python调用OpenCV函数实现. 本文分享自华为云社区<[Python图像处理] 十三.基于灰度三维图的图像顶帽运算和黑帽 ...

  9. 【opencv】 solvepnp 和 solvepnpRansac 求解 【空间三维坐标系 到 图像二维坐标系】的 三维旋转R 和 三维平移 T 【opencv2使用solvepnp求解rt不准的问题】

    参考: pnp问题 与 solvepnp函数:https://www.jianshu.com/p/b97406d8833c 对图片进行二维仿射变换cv2.warpAffine() or 对图片进行二维 ...

随机推荐

  1. Windows Update 的工具

    Windows Update MiniTool 是一款管理 Windows Update 的工具,可以取得微軟 Windows 修補程式更新包,Windows Update 是我們用來升級系統的元件, ...

  2. jQuery异步框架探究1:jQuery._Deferred方法

    jQuery异步框架应用于jQuery数据缓存模块.jQuery ajax模块.jQuery事件绑定模块等多个模块,是jQuery的基础功能之中的一个.实际上jQuery实现的异步回调机制能够看做ja ...

  3. Spring_2_Spring中lazy-init和scope属性

    1)springTest类: public class springTest { @Test public void instanceSpring() { AbstractApplicationCon ...

  4. SNAPSHOTTING

    /etc/redis.conf ################################ SNAPSHOTTING ################################## Sav ...

  5. USACO Section1.1PROB Broken Necklace

    有点麻烦的一道模拟(官方题解好像有复杂度为$O(n)$DP的姿势?,感觉好烦,以后再细看~ 在一些细节上调试了很久很久,囧RZ /* ID: jusonal1 PROG: beads LANG: C+ ...

  6. hdu 6035(树形dp)

    题意:给你棵树,树上每个节点都有颜色,每条路径上有m种颜色  问你所有路径上出现的颜色的和 思路:答案求的是每种颜色对路径的贡献  我们可以反过来每种颜色不经过的路径的条数 假设根节点的颜色为x  我 ...

  7. luogu 4630 [APIO2018] Duathlon 铁人两项

    题目大意: 无向图上找三个点 a b c使存在一条从a到b经过c的路径 求取这三个点的方案数 思路: 建立圆方树 这个圆方树保证没有两个圆点相连或两个方点相连 对于每个节点x 设该节点为路径的中间节点 ...

  8. windows 下操作目录(使用DOS命令)

    Attrib 更改单个文件或目录的属性.该命令设置或删除指派给文件或目录的只读.系统.存档.隐藏以及压缩属性. 含有下列参数的 attrib 命令仅当使用故障恢复控制台时才可用.含有不同参数的 att ...

  9. python-----删除小于2k的文件

    删除小于2k的文件,代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/1/10 15:34 # @Author : ...

  10. 关于flask的错误:ImportError: cannot import name 'Flask'

    刚开始接触flask,新创建后不能运行,报错如下图: 导致该错误有两种可能,没安装flask:文件名为flask. 可尝试如下两种方法解决: 方法一:若没安装过flask,则进入cmd,输入pip i ...