卷积神经网络(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 TAKEOWN & ICACLS

    TAKEOWN:takeown   /f 文件名              获取该文件的所属权takeown /f /r /d n 文件夹       获取整个文件夹及其下面子目录文件的所属权 TAK ...

  2. Android GMS无法通过网络定位

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载.但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  3. javascript的继承方法

    一.构造函数继承 该方法最简单,使用call或者apply方法,将父对象的构造函数绑定到子对象上. function Parent(name){ this.name = name; this.colo ...

  4. 演练:我的第一个 WPF 桌面应用程序 https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/getting-started/walkthrough-my-first-wpf-desktop-application

    这篇文章演示如何开发简单的 Windows Presentation Foundation (WPF) 应用程序包括元素所共有的大多数 WPF 应用程序: 可扩展应用程序标记语言 (XAML) 标记. ...

  5. linux文件系统的权限简单介绍

    linux系统下,文件的权限是这样表示的: - --- --- --- 一共用10位的二进制进行表示,其中 位置 0 :  - :文件        d :目录剩下的9个位置:位置1-3 当前用户(应 ...

  6. JAVA实现N皇后问题(回溯法)

    package com.leetCode; /** * Follow up for N-Queens problem. Now, instead outputting board configurat ...

  7. MySQl 子查询,左右连接,多表连接学习笔记

    1.子查询是指在还有一个查询语句中的SELECT子句.   例句:   SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);   当中, ...

  8. struts2开发中一些概念的理解

    对象关系映射(orm)中的两个概念 VO 和 PO: 它们都包含一些属性及这些属性的get/set方法 1.VO:是值对象,可以理解为业务对象,存活在业务层,供业务逻辑使用,当前业务逻辑需要一组什么数 ...

  9. spring 的核心接口

    spring有两个核心接口,BeanFactory 和ApplicationContext  ,其中ApplicationContext 是BeanFactory的子接口.他们代表了Spring容器. ...

  10. ios34---GDC,dispatch_once

    // // ViewController.m // 09-掌握-GCD常用函数 // // Created by xiaomage on 16/2/18. // Copyright © 2016年 小 ...