图神经网络2-应用:SketchGCN

CVPR2020 SketchGCN

论文:SketchGCN: Semantic Sketch Segmentation with Graph Convolutional Networks

代码:暂未开放源代码

这篇文章首次使用GCN进行手绘草图的语义分割任务,如下图中,将手绘的螃蟹的眼睛、钳子、身体、腿用不同的颜色标注。下图是SketchGCN的网络结构图。

首先将输入的草图根据笔画转化为graph,将笔画变成密集的N个点(图中仅画出部分点作示意),同一笔画中的点是有边相连的,不同笔画中的点是不相连的,每个点存储它的绝对坐标(即节点特征是二维的),将节点特征(2*N)和边的集合送入网络,经过两个图卷积 分支提取笔画内的特征(下)和笔画间的特征(上),笔画间的特征再经过Mix池化后和笔画内特征相连,送入多层感知机得到最终的结果。其中两个图卷积分支都采用了类似ResNet的残差连接。

image-20200410104004319

SConv为静态图卷积单元,在不同的层中不会更新图的连接。DConv为动态图卷积单元,在每层都会使用KNN (k=8)来更新图的连接(更新方式和对于图的解释待补充)。SConv和DConv中采用相同的图卷积操作。

图卷积操作:对于第l层的$v_i$节点 ,节点的特征$f_i^l$根据下式更新:

$$ f_{i}^{l}=\max _{j:(i, j) \in \mathcal{E}_{l}} h_{\Theta_{l}}\left(f_{i}^{l-1}, f_{j}^{l-1}\right) $$ 其中$\Theta$是$h_{\Theta}()$中可学习的参数 $$ h_{\Theta}\left(f_{i}, f_{j}\right)=\operatorname{ReLU}\left(\operatorname{MLP}_{\Theta}\left(\operatorname{concat}\left(f_{i}, f_{j}-f_{i}\right)\right)\right) $$

Mix Pooling的实现,分为两个分支:

上面的分支用来学习草图级别的特征,通过Max Pooling:

$$ f_{i}^{\text {sketch}}=\max _{f_{i} \in \mathcal{F}_{\text {global}}} \mathrm{MLP}_{\Theta_{s k}}\left(f_{i}\right) $$ 下面的分支用来学习笔画级别的特征,通过自己定义的Stroke Pooling: $$ f_{i}^{\text {stroke}}=\max _{j:(i, j) \in \mathcal{E}_{\text {pool}, f_{j} \in \mathcal{F}_{\text {global}}}} \operatorname{MLP}_{\Theta_{\text {st}}}\left(f_{j}\right) $$ 其中,$\mathcal{E}_{p o o l}=\left\{e_{p q}=\left\{v_{p}, v_{q}\right\} | v_{p}, v_{q} \in \mathcal{S}_{r}\right\}_{r=1, \cdots, s}$,$S_r$是草图中的第r个笔画。

请我喝杯咖啡吧~

支付宝
微信