【点云处理之论文狂读经典版7】—— Dynamic Edge-Conditioned Filters in Convolutional Neural Networks on Graphs
ECC:图卷积神经神经网络的动态边条件滤波器
- 摘要
- 1.引言
- 2.相关工作
- 3.方法
- 3.1 Edge-Conditioned Convolution
- 3.2 Relationship to Existing Formulations
- 3.3. Deep Networks with ECC
- 3.4. Application in Point Clouds
- 4.实验
- 4.1 Sydney Urban Objects
- 4.2 ModelNet
- 生词
摘要
- 背景: 许多问题都可以表示为基于graph结构数据的预测
- 方法: 将卷积操作从网格推广到任意的graphs,同时避免了频域,能够解决不同大小和连通性的graph
- 细节: filters的权值依赖顶点到邻域的边值;开发了用于graph分类的深度神经网络
- 结果: 在点云分类上的效果很好
- 代码: https://github.com/mys007/ecc (PyTorch版本)
1.引言
- 在空间域中构建了一个图卷积神经网络,filters的权值依赖于边上的值,并且对每个特定的输入都动态更新。提出的图卷积网络适用于任意的数据结构
- 将图卷积网络应用到点云分类任务中,并取得到了较好的结果
2.相关工作
频域方法
空间域方法
3.方法
3.1 Edge-Conditioned Convolution
令l∈{0,..,lmax}l \in\left\{0, . ., l_{\max }\right\}l∈{0,..,lmax}为前馈神经网络层的索引。
令G=G=G= (V,E)(V, E)(V,E)表示无向或有向图,其中VVV是顶点(Vertex)的有限集合∣V∣=n|V|=n∣V∣=n,E⊆V×VE \subseteq V \times VE⊆V×V是边(Edge)的集合∣E∣=m|E|=m∣E∣=m。
假设图是通过顶点和边进行表示的,即Xl:V↦RdlX^{l}: V \mapsto \mathbb{R}^{d_{l}}Xl:V↦Rdl表示给每个顶点分配值(feature),L:E↦RsL: E \mapsto \mathbb{R}^{s}L:E↦Rs表示给每个边分配值(attribute)。用矩阵的形式可以表示所有的顶点Xl∈Rn×dlX^{l} \in \mathbb{R}^{n \times d_{l}}Xl∈Rn×dl和所有的边 L∈Rm×s,X0L \in \mathbb{R}^{m \times s}, X^{0}L∈Rm×s,X0表示为输入信号。
顶点iii的 neighborhood N(i)={j;(j,i)∈E}∪{i}N(i)=\{j ;(j, i) \in E\} \cup\{i\}N(i)={j;(j,i)∈E}∪{i}包含了所有相邻的顶点和iii本身。
顶点iii处的filtered信号Xl(i)∈RdlX^{l}(i) \in \mathbb{R}^{d_{l}}Xl(i)∈Rdl通过其neighborhood点信号Xl−1(j)∈Rdl−1X^{l-1}(j) \in \mathbb{R}^{d_{l-1}}Xl−1(j)∈Rdl−1,j∈N(i)j \in N(i)j∈N(i)的加权和计算得到。
尽管这种交换聚合的方式解决了permutation-invariant和neighborhood 大小可变的问题,但是这样也抹除了任意的结构信息。(意思是指聚合的方法太暴力?只用顶点进行更新会损失结构信息,所以引出了边值作为权重)
为了解决这个问题,提出在每个边值上都加入filter权值的条件。定义一个输入为边值L(j,i)L(j, i)L(j,i)的filter-generating network Fl:Rs↦Rdl×dl−1F^{l}: \mathbb{R}^{s} \mapsto \mathbb{R}^{d_{l} \times d_{l-1}}Fl:Rs↦Rdl×dl−1, 输出为特定边的权值矩阵Θjil∈Rdl×dl−1\Theta_{j i}^{l} \in \mathbb{R}^{d_{l} \times d_{l-1}}Θjil∈Rdl×dl−1,见图1。
这个被称为 Edge-Conditioned Convolution (ECC) 的卷积操作,用公式可以表示为:
Xl(i)=1∣N(i)∣∑j∈N(i)Fl(L(j,i);wl)Xl−1(j)+bl=1∣N(i)∣∑j∈N(i)ΘjilXl−1(j)+bl\begin{aligned} X^{l}(i) &=\frac{1}{|N(i)|} \sum_{j \in N(i)} F^{l}\left(L(j, i) ; w^{l}\right) X^{l-1}(j)+b^{l} \\ &=\frac{1}{|N(i)|} \sum_{j \in N(i)} \Theta_{j i}^{l} X^{l-1}(j)+b^{l} \end{aligned} Xl(i)=∣N(i)∣1j∈N(i)∑Fl(L(j,i);wl)Xl−1(j)+bl=∣N(i)∣1j∈N(i)∑ΘjilXl−1(j)+bl
其中bl∈Rdlb^{l} \in \mathbb{R}^{d_{l}}bl∈Rdl是可学习的偏置,FlF^{l}Fl的可学习参数为网络权值wlw^{l}wl。wlw^{l}wl 和 blb^{l}bl是模型参数,仅在训练时更新,Θjil\Theta_{j i}^{l}Θjil是根据输入graph的边值动态生成的参数。filter-generating network FlF^{l}Fl可以是任意可导的模型,本文使用的是多层感知机。
复杂度
对所有顶点计算XlX^lXl至多需要mmm次FlF^lFl的评估,以及m+nm+nm+n(有向图)或2m+n2m+n2m+n(无向图)次矩阵-向量乘法运算。但是在GPU上进行操作会更有效率一些。
3.2 Relationship to Existing Formulations
在规则的网格上进行卷积可以看作是ECC的一种特殊形式。
3.3. Deep Networks with ECC
网络结构包括交错卷积、全局池化和全连接层组成,见图3。通过这种方式,从局部邻域中得到的信息会逐层结合得到最终的context(增大接受域)。虽然边值对特定的graph来说是固定的,但通过filter generating networks进行了(学习的)解释,可能会从一层到另外一层时发生改变(在层之间未共享FlF^lFl的权重)。 因此,只有1-hop neighborhoods限制的ECC并不会被约束,类似于在标准CNN中使用小的3×3filter来换取更深的网络,这是有益的。
在每次卷积后使用Batch Normalization,用于快速收敛。
Pooling
尽管(non-strided)卷积层和所有point-wise层不会改变基础graph,并且只能在顶点上更新信号,但池化层被定义为在一个新的、coarsened graph的顶点上输出聚合信号。因此,必须为每个输入graph构造一个逐步coarser的graph hmaxh_{max}hmax的pyramid。
令h∈{0,…,hmax}h \in\left\{0, \ldots, h_{\max }\right\}h∈{0,…,hmax}表示pyramid中不同的 graph G(h)=(V(h),E(h))G^{(h)}=\left(V^{(h)}, E^{(h)}\right)G(h)=(V(h),E(h)),每一个G(h)G^{(h)}G(h)都与L(h)L^{(h)}L(h)和X(h),lX^{(h), l}X(h),l相关联。coarsening的过程包含3步:
- subsampling or merging vertices
- creating the new edge structure E(h)E^{(h)}E(h) and labeling L(h)L^{(h)}L(h) (so-called reduction)
- mapping the vertices in the original graph to those in the coarsened one with M(h):V(h−1)↦V(h)M^{(h)}: V^{(h-1)} \mapsto V^{(h)}M(h):V(h−1)↦V(h)
最终,索引为lhl_{h}lh的池化层将X(h−1),lh−1X^{(h-1), l_{h-1}}X(h−1),lh−1聚合到基于M(h)M^{(h)}M(h)的更低维度X(h),lhX^{(h), l_{h}}X(h),lh。
在coarsening的过程中,由于self-edge经常出现,因此会出现较小的graph减少为若干断开连接的顶点,这样也不会出现问题。因为该结构被用来处理带有变量n,mn,mn,m的graph,我们通过全局 average/max池化操作解决最低分辨率下graph的变化的顶点数量nhmaxn^{h_{max}}nhmax。
3.4. Application in Point Clouds
Graph Construction
给定一组点云PPP 和对应的点特征 XPX_{P}XP,我们构造一个有向图G=(V,E)G=(V, E)G=(V,E),并分配X0X^{0}X0 和LLL。
- 对于每个点p∈Pp \in Pp∈P都构造顶点i∈Vi \in Vi∈V,通过X0(i)=XP(p)X^{0}(i)=X_{P}(p)X0(i)=XP(p)分配对应的信号(如果没有特征,那么赋值为0)
- 通过有向边(j,i)(j, i)(j,i)连接每个顶点iii 和其在空间neighborhood中的顶点jjj ,实验表明,Ball query的表现更好
- 在笛卡尔坐标系和球面坐标系下,6D向量L(j,i)=(δx,δy,δz,∥δ∥,arccosδz/∥δ∥,arctanδy/δx)L(j, i)=\left(\delta_{x}, \delta_{y}, \delta_{z},\|\delta\|, \arccos \delta_{z} /\|\delta\|, \arctan \delta_{y} / \delta_{x}\right)L(j,i)=(δx,δy,δz,∥δ∥,arccosδz/∥δ∥,arctanδy/δx)被作为边上的值,其中δ=pj−pi\delta=p_{j}-p_{i}δ=pj−pi表示顶点j,ij,ij,i间的偏移。
Graph Coarsening
对于一组输入点云PPP,通过VoxelGrid algorithm获得下采样点云的pyramid P(h)P^{(h)}P(h),具体流程包括在点云上覆盖上分辨率为r(h)r^{(h)}r(h)的网格,对每个voxel中的点取质心。每个下采样后的点云P(h)P^{(h)}P(h)都被独立转化成neighborhood 半径为ρ(h)\rho^{(h)}ρ(h)的graph G(h)G^{(h)}G(h)和 labeling L(h)L^{(h)}L(h)。定义pooling map M(h)M^{(h)}M(h),保证P(h−1)P^{(h-1)}P(h−1)中的每个点都被分配给下采样点云P(h)P^{(h)}P(h)中距离其(P(h−1)P^{(h-1)}P(h−1)中的每个点)最近的点。
Data Augmentation
We randomly rotate point clouds about their upaxis, jitter their scale, perform mirroring, or delete random points.
4.实验
C(c)\mathrm{C}(c)C(c)表示ECC的输出通道数为ccc,后面跟着batch normalization和ReLU激活函数。MP(r,ρ)\mathrm{MP}(r, \rho)MP(r,ρ)表示最大池化层,grid分辨率为rrr,neighborhood半径为ρ\rhoρ。GAP\mathrm{GAP}GAP为平均池化层。FC(c)\mathrm{FC}(c)FC(c)是通道数为ccc的全连接层。D(p)\mathrm{D}(p)D(p)表示概率为ppp的dropouot。
4.1 Sydney Urban Objects
C(16)−C(32)−MP(0.25,0.5)−C(32)−C(32)−MP(0.75,1.5)−C(64)−MP(1.5,1.5)−GAP−FC(64)−D(0.2)−FC(14)C(16)-C(32)-MP(0.25,0.5)-C(32)-C(32)-MP(0.75,1.5)-C(64)-MP(1.5,1.5)-GAP-FC(64)-D(0.2)-FC(14)C(16)−C(32)−MP(0.25,0.5)−C(32)−C(32)−MP(0.75,1.5)−C(64)−MP(1.5,1.5)−GAP−FC(64)−D(0.2)−FC(14)
CCC里面的FlF^lFl包含FC(16)−FC(32)−FC(dldl−1)FC(16)-FC(32)-FC(d_ld_{l−1})FC(16)−FC(32)−FC(dldl−1)
4.2 ModelNet
C(16)−C(32)−MP(2.5/32,7.5/32)−C(32)−C(32)−MP(7.5/32,22.5/32)−C(64)−GAP−FC(64)−D(0.2)−FC(10)C(16)-C(32)-MP(2.5/32,7.5/32)-C(32)-C(32)-MP(7.5/32,22.5/32)-C(64)-GAP-FC(64)-D(0.2)-FC(10)C(16)−C(32)−MP(2.5/32,7.5/32)−C(32)−C(32)−MP(7.5/32,22.5/32)−C(64)−GAP−FC(64)−D(0.2)−FC(10)
CCC里面的FlF^lFl包含FC(16)−FC(32)−FC(dldl−1)FC(16)-FC(32)-FC(d_ld_{l−1})FC(16)−FC(32)−FC(dldl−1)
生词
- commutative adj. 可交换的
- interlace v. 隔行,交错
【点云处理之论文狂读经典版7】—— Dynamic Edge-Conditioned Filters in Convolutional Neural Networks on Graphs相关推荐
- 【点云处理之论文狂读经典版9】—— Pointwise Convolutional Neural Networks
Pointwise-CNN: Pointwise Convolutional Neural Networks 摘要 相关工作 Pointwise Convolution 实验 摘要 问题: 3D数据的 ...
- 【点云处理之论文狂读前沿版3】——Point Transformer
Point Transformer 摘要 1. 引言 2. 相关工作 3. Point Transformer 3.1 Background 3.2 Point Transformer Layer 3 ...
- 【点云处理之论文狂读前沿版7】—— Masked Autoencoders for Point Cloud Self-supervised Learning
Masked Autoencoders for Point Cloud Self-supervised Learning 摘要 1.引言 3. Point-MAE 3.1 Point Cloud Ma ...
- 【点云处理之论文狂读前沿版6】Surface Representation for Point Clouds
用Surface表示点云 摘要 1.引言 2.相关工作 2.1. Learning on Point Clouds 2.2. Detection on Point Clouds 2.3. Graphi ...
- 【点云处理之论文狂读前沿版11】—— Unsupervised Point Cloud Pre-training via Occlusion Completion
OcCo:Unsupervised Point Cloud Pre-training via Occlusion Completion 摘要 引言 方法 Generating Occlusions T ...
- 论文解读二代GCN《Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering》
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
- Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering论文解读( and code)
<Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering> 提供了已实现的GCN,并且 ...
- Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering 论文阅读
Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering Code link:https://git ...
- 经典论文重读---风格迁移篇(一):Image Style Transfer Using Convolutional Neural Networks
核心思想 采用深层卷积网络提取图像风格特征与内容,并将其进行融合生成效果很好的艺术图. 引言部分 将一幅图像的风格迁移到另一副图像可以看作是纹理迁移的一个分支.对于纹理迁移,它的目标是从源图合成一种纹 ...
- 【论文速读】Ordered Neurons:Integrating Tree Structures into Recurrent Neural Networks
ICLR 2019的两篇最佳论文之一.[paper] 虽然自然语言通常以序列形式呈现,但语言的基本结构并不是严格序列化的.语言学家们一致认为,该结构由一套规则或语法控制,且规定了单词组成语句的逻辑.不 ...
最新文章
- sql server 2012序列号
- 如何委婉的表达你的心思?
- 【PP生产订单】入门介绍(十一)
- MySQL-过滤数据
- ios中通过ALAssetsLibrary获取所有图片
- 排序分发“魔法照片”(洛谷P1583题题解,Java语言描述)
- 【janino】janino 加载自定义函数
- 【Linux】Linux设备驱动开发详解:基于最新的Linux 4.0内核
- 线性回归(一):一元线性回归(附python实现)
- ESP8285+WS2812+MAX9814制作的音乐律动氛围灯
- git gui here如何汉化_github的git GUI Here的使用,适合新手!!!
- matlab如何把cell转int_MATLAB数据类型及相互转换(一)
- 2017 闰秒 linux,闰秒为什么会导致Linux出现问题
- Python学习推荐
- 根据P(precision)、R(recall)计算F1和iou
- 不等号属于不等式吗_什么是不等式
- 制作一份手机录屏的 GIF 动态图片
- 使用Python的Scrapy框架编写web爬虫的简单示例
- 四川大专院校计算机,四川2021年好一点的计算机学校大专学校
- 在nsa组网架构中,3gpp定义的nr与epc的接口是什么
热门文章
- Cesium开发: Draco模型压缩
- 2020年阴历三月初九投资理财~从牛人那里吸取能量,让自己更加强大
- 海龟编程计算机,第一个海龟程序
- java取北京时间_在java中怎么获取北京时间
- 爬虫项目十五:你了解你的QQ好友吗?教你用Python采集QQ好友数据
- 记一次蓝牙音箱无声音的原因
- 公司内部分享【富有成效的每日站会】总结
- 荣耀8微信总是无法连接服务器,微信无法登陆想要登陆的王者荣耀账号,怎么办?...
- S7-PLCSIM Advance ,解决 Error Code: -30,LicenseNotFound问题解决和期限21天限制的问题,对版本V1.0 V2.0 V3.0有效
- 装配图中齿轮的画法_机械制图之装配图