FeaStNet: Feature-Steered
Graph Convolutions for 3D
Shape Analysis
• 任意の接続を持つフィルタ重みとグラフ近傍との間の対応関係を
確立するための新しいグラフ畳み込みを提案
• フィルタとグラフの対応関係がネットワークにより学習された特徴から
動的に計算される部分が特徴
• 提案されているGCNが機能していることを示すことを意識した実験
• 空間的アプローチ
論文概要
GCN(FeaStNet)
a b d
b a c d e
c d e
d a b
e b c
隣接情報
a b c
d e
①注目ノードを一つ選ぶ
• a を選ぶ
②注目ノードに対する隣接ノードに対して
畳み込み計算を行う
• a の隣接ノード: b , d
重み行列
2
5
3
M
https://arxiv.org/abs/1706.05206
GCN(FeaStNet)
a b d
b a c d e
c d e
d a b
e b c
隣接情報
a b c
d e
②注目ノードに対する隣接ノードに対して
畳み込み計算を行う
• a の隣接ノード: b , d
• ノードの情報と重みの積をとる
(重みの数はハイパーパラメータ)
重み行列
2
5
3
M
1aM
1bM
1cM
2aM
2bM
2cM
3aM
3bM
3cM
1,1 1,2 1,3 1,4 1,5
1 2
1,6 1,7 1,8 1,9 1,10
[ , ][ ]
M M M M M
a a
M M M M M
畳み込み後のチャネル数
畳み込み前の
チャネル数
ノード情報
GCN(FeaStNet)
a b d
b a c d e
c d e
d a b
e b c
隣接情報
a b c
d e
②注目ノードに対する隣接ノードに対して
畳み込み計算を行う
• a の隣接ノード: b , d
• 重み割り当て
重み行列
2
5
3
M
1 1( , )qaM a a
1 1( , )qbM a b
1 1( , )qcM a c
2 2 ( , )qaM a a
2 2 ( , )qbM a b
2 2 ( , )qcM a c
3 3 ( , )qaM a a
3 3 ( , )qbM a b
3 3 ( , )qcM a c
( , )mq 注目ノ ード 隣接ノ ード
1 2 3( , ) ( , ) ( , ) 1q q q  a a a a a a
1 2 3( , ) ( , ) ( , ) 1q q q  a b a b a b
1 2 3( , ) ( , ) ( , ) 1q q q  a c a c a c
GCN(FeaStNet)
a b d
b a c d e
c d e
d a b
e b c
隣接情報
a b c
d e
②注目ノードに対する隣接ノードに対して
畳み込み計算を行う
• a の隣接ノード: b , d
• 重み割り当て
• 重み割り当ては隣接ノード別の各重みの重要度を表す
• 重み割り当てによって
学習する特徴に対して柔軟なモデルになる
重み行列
2
5
3
M
1 1( , )qaM a a 2 2 ( , )qaM a a 3 3 ( , )qaM a a
( , )mq 注目ノ ード 隣接ノ ード
1 2 3( , ) ( , ) ( , ) 1q q q  a a a a a a
1( , ) 0.2q a a 2 ( , ) 0.5q a a 3 ( , ) 0.3q a a
10.2aM 20.5aM 30.3aM
GCN(FeaStNet)
a b d
b a c d e
c d e
d a b
e b c
隣接情報
a b c
d e
②注目ノードに対する隣接ノードに対して
畳み込み計算を行う
• a の隣接ノード: b , d
• 重み割り当て
• 入力が空間座標の場合有効
• 注目ノードaと隣接ノードの距離が近い
➡ expの中の値が小さくなる
➡ 重み割り当てが大きくなる
➡ その特徴が次の層へ伝わりやすい
重み行列
2
5
3
M
( , )mq 注目ノ ード 隣接ノ ード
1 1 1( , ) exp( ( ) )T
q c  a b u a b
GCN(FeaStNet)
a b d
b a c d e
c d e
d a b
e b c
隣接情報
a b c
d e
②注目ノードに対する隣接ノードに対して
畳み込み計算を行う
• a の隣接ノード: b , d
• 重み割り当て
➡この値が次の注目ノードのノード情報になる
重み行列
2
5
3
M
1 1 2 2 3 3
1 1 2 2 3 3
1 1 2 2 3 3
{ ( , ) ( , ) ( , )
( , ) ( , ) ( , )
1
( , ) ( , ) ( , )}
q q q
q q q
q q q bias
  
  
  
ノ ード 数
aM a a aM a a aM a a
bM a b bM a b bM a b
cM a c cM a c cM a c
( , )mq 注目ノ ード 隣接ノ ード
グラフ上でのプーリング
• Metisの領域拡張アルゴリズムでクラスタリングを使用したプーリング
• ①と②のクラスタリング処理を学習前に行う
①ランダムにノードを選ぶ
②エッジ重みとノードの特徴の関係スコアが
最大のノードを探してクラスタリング
①と②をノード数が1つになるまで繰り返す
グラフ上でのプーリング
• Metisの領域拡張アルゴリズムでクラスタリングを使用したプーリング
• 以下の順でプーリングを行う
• グラフのクラスタリング
• プーリング
グラフ上でのプーリング
例 1 2 3 4 5
1 0 1 0 1 0
2 1 0 1 1 1
3 0 1 0 0 0
4 0 1 0 0 0
5 1 1 1 0 1
1 2 3 4 5
2 4 2 2 2
隣接行列
𝑒(𝑥, 𝑦) :頂点𝑥と𝑦との間のエッジ重み
次数
𝑤(𝑥) :頂点𝑥重み
1 2 3
4 5
グラフ上でのプーリング
①ランダムにノードを選ぶ
• ランダム選択ノード[2,1,3,5,4]
1 2 3 4 5
1 0 1 0 1 0
2 1 0 1 1 1
3 0 1 0 0 0
4 0 1 0 0 0
5 1 1 1 0 1
1 2 3 4 5
2 4 2 2 2
隣接行列
𝑒(𝑥, 𝑦) :頂点𝑥と𝑦との間のエッジ重み
次数
𝑤(𝑥) :頂点𝑥重み
1 2 3
4 5
グラフ上でのプーリング
• ランダム選択ノード[2,1,3,5,4]
②①で選んだノードを見て隣接ノードを探し、
エッジ重みとノードの特徴の関係スコアが
最大のノードを探す
• 𝑒(𝑥, 𝑦) :頂点𝑥と𝑦との間のエッジ重み
(隣接行列の値と同じ)
• 𝑤(𝑥) :頂点𝑥重み
(頂点𝑥の次数と同じ)
1 2 3 4 5
1 0 1 0 1 0
2 1 0 1 1 1
3 0 1 0 0 0
4 0 1 0 0 0
5 1 1 1 0 1
1 2 3 4 5
2 4 2 2 2
隣接行列
𝑒(𝑥, 𝑦) :頂点𝑥と𝑦との間のエッジ重み
次数
𝑤(𝑥) :頂点𝑥重み
1 2 3
4 5
グラフ上でのプーリング
• ランダム選択ノード[2,1,3,5,4]
②①で選んだノードを見て隣接ノードを探し、
エッジ重みとノードの特徴の関係スコアが
最大のノードを探す
• 𝑒(𝑥, 𝑦) :頂点𝑥と𝑦との間のエッジ重み
(隣接行列の値と同じ,すべて1)
• 𝑤(𝑥) :頂点𝑥重み
(頂点𝑥の次数と同じ)
➡ 接続数が少ないノードが優先的に選択される
1 2 3 4 5
1 0 1 0 1 0
2 1 0 1 1 1
3 0 1 0 0 0
4 0 1 0 0 0
5 1 1 1 0 1
1 2 3 4 5
2 4 2 2 2
隣接行列
𝑒(𝑥, 𝑦) :頂点𝑥と𝑦との間のエッジ重み
次数
𝑤(𝑥) :頂点𝑥重み
1 2 3
4 5
グラフ上でのプーリング
• ランダム選択ノード[2,1,3,5,4]
②①で選んだノードの隣接ノードを探し,
関係スコアが最大のノードを探す
• ノード2の隣接ノードは1,3,4,5
• 1
1
4
+
1
1
=
6
5
• 3
1
4
+
1
2
=
3
4
• 4
1
4
+
1
2
=
3
4
• 5
1
4
+
1
1
=
6
5
➡ 最大ノード1
➡ ノード2とノード1でグループを作成
1 2 3 4 5
1 0 1 0 1 0
2 1 0 1 1 1
3 0 1 0 0 0
4 0 1 0 0 0
5 1 1 1 0 1
1 2 3 4 5
2 4 2 2 2
隣接行列
𝑒(𝑥, 𝑦) :頂点𝑥と𝑦との間のエッジ重み
次数
𝑤(𝑥) :頂点𝑥重み
1 2 3
4 5
グラフ上でのプーリング
• ランダム選択ノード[2,1,3,5,4]
②①で選んだノードを見て隣接ノードを探し、
エッジ重みとノードの特徴の関係スコアが
最大のノードを探す
(ノードのグループ(1,2))
• ノード1の隣接ノードは2,4
➡ノード1はすでに選択されているので次へ
1 2 3 4 5
1 0 1 0 1 0
2 1 0 1 1 1
3 0 1 0 0 0
4 0 1 0 0 0
5 1 1 1 0 1
1 2 3 4 5
2 4 2 2 2
隣接行列
𝑒(𝑥, 𝑦) :頂点𝑥と𝑦との間のエッジ重み
次数
𝑤(𝑥) :頂点𝑥重み
1 2 3
4 5
グラフ上でのプーリング
• ランダム選択ノード[2,1,3,5,4]
②①で選んだノードを見て隣接ノードを探し、
エッジ重みとノードの特徴の関係スコアが
最大のノードを探す
(ノードのグループ(1,2),(3,5))
• ノード3の隣接ノードは2,5
➡ ノード2はすでにグループ化されている
➡ ノード3とノード5でグループを作成
1 2 3 4 5
1 0 1 0 1 0
2 1 0 1 1 1
3 0 1 0 0 0
4 0 1 0 0 0
5 1 1 1 0 1
1 2 3 4 5
2 4 2 2 2
隣接行列
𝑒(𝑥, 𝑦) :頂点𝑥と𝑦との間のエッジ重み
次数
𝑤(𝑥) :頂点𝑥重み
1 2 3
4 5
グラフ上でのプーリング
• ランダム選択ノード[2,1,3,5,4]
②①で選んだノードを見て隣接ノードを探し、
エッジ重みとノードの特徴の関係スコアが
最大のノードを探す
(ノードのグループ(1,2),(3,5),(4))
• ノード4の隣接ノードは1,2
➡ すべてグループ化されている
➡ 4のみでグループを作成
1 2 3 4 5
1 0 1 0 1 0
2 1 0 1 1 1
3 0 1 0 0 0
4 0 1 0 0 0
5 1 1 1 0 1
1 2 3 4 5
2 4 2 2 2
隣接行列
𝑒(𝑥, 𝑦) :頂点𝑥と𝑦との間のエッジ重み
次数
𝑤(𝑥) :頂点𝑥重み
1 2 3
4 5
グラフ上でのプーリング
• 隣接ノード更新
1 2 3
4 5
1 2 3 4 5
1 0 1 0 1 0
2 1 0 1 1 1
3 0 1 0 0 0
4 0 1 0 0 0
5 1 1 1 0 1
1 2
3 5
4
1
2
3
グループごとに
ノード定義変更
1 2
3 5
4
1
1
1
グループごとに
ノード定義変更
2 3
2
1 2
3 5
4
1 2 3
2 5
1
グループごとに
隣接ノードを探す
4 5
2
1 2
3 5
4
1 2 3
2 5
1
グループごとに
隣接ノードを探す
4 5
2
グラフ上でのプーリング
• 隣接ノード更新
1 2 3
1 1 1 1
2 1 1 0
3 1 0 0
1 2 3
1 0 1 1
2 1 0 0
3 1 0 0
隣接ノード作成 自分のノードの
接続を削除
1 2
3
1 2
3 5
4
1
1
1
2 3
2
1
2
3
グラフ上でのプーリング
①ランダムにノードを選ぶ
• ランダム選択ノード[3,1,2]
②エッジ重みとノードの特徴の関係スコアが
最大のノードを探す
(ノードのグループ(1,3))
• ノード3の隣接ノードは1
➡ ノード3とノード1でグループを作成
隣接行列
𝑒(𝑥, 𝑦) :頂点𝑥と𝑦との間のエッジ重み
次数
𝑤(𝑥) :頂点𝑥重み
1 2 3
1 0 1 1
2 1 0 0
3 1 0 0
1 2
3
1 2 3
2 1 1
グラフ上でのプーリング
①ランダムにノードを選ぶ
• ランダム選択ノード[3,1,2]
②エッジ重みとノードの特徴の関係スコアが
最大のノードを探す
(ノードのグループ(1,3))
• ノード1の隣接ノードは2,3
➡ ノード1はすでにグループ化
➡ 何もしない
隣接行列
𝑒(𝑥, 𝑦) :頂点𝑥と𝑦との間のエッジ重み
次数
𝑤(𝑥) :頂点𝑥重み
1 2 3
1 0 1 1
2 1 0 0
3 1 0 0
1 2
3
1 2 3
2 1 1
グラフ上でのプーリング
①ランダムにノードを選ぶ
• ランダム選択ノード[3,1,2]
②エッジ重みとノードの特徴の関係スコアが
最大のノードを探す
(ノードのグループ(1,3),(2))
• ノード2の隣接ノードは1
➡ ノード1はすでにグループ化
➡ ノード2のみでグループ化
隣接行列
𝑒(𝑥, 𝑦) :頂点𝑥と𝑦との間のエッジ重み
次数
𝑤(𝑥) :頂点𝑥重み
1 2 3
1 0 1 1
2 1 0 0
3 1 0 0
1 2 3
2 1 1
1 2
3
グラフ上でのプーリング
• 隣接ノード更新
1 3
2
1
2
グループごとに
ノード定義変更
1 3
2
1
1
グループごとに
ノード定義変更
21 3
2
2 3
1
グループごとに
隣接ノードを探す1 2 3
1 0 1 1
2 1 0 0
3 1 0 0
1 2
3
1 2
1 1 1
2 1 0
1 2
1 0 1
2 1 0
1 2
隣接ノード作成
及び
自分のノードの
接続を削除
グラフ上でのプーリング
①ランダムにノードを選ぶ
• ランダム選択ノード[1,2]
②エッジ重みとノードの特徴の関係スコアが
最大のノードを探す
• ノード1の隣接ノードは2
➡ ノード1とノード2でグループを作成
• ノード2はすでにグループ化されている
➡ 何もしない
隣接行列
𝑒(𝑥, 𝑦) :頂点𝑥と𝑦との間のエッジ重み
次数
𝑤(𝑥) :頂点𝑥重み
1 2
1 1
1 2
1 0 1
2 1 0
1 2
グラフ上でのプーリング
プーリング
• グループ化した情報に沿ってプーリングを行う
1 2
3 5
4
1
2
3
1 3
2
1
2 1 2 1
グラフ上でのプーリング
プーリング
[1,2]
[3,4]
[5,6]
[7,8]
[9,10]
1
2
3
4
5
クラスタリング
情報
[ 3 , 4]
[9 ,10]
[ 7 ,8]
1
2
3
元のノード情報 並びかえ プーリング
[1,2]
[3,4]
[5,6]
[9,10]
[7,8]
1
2
5
3
4
プーリング
1 2
3 5
4
1
2
3
プーリング前の
ノード
プーリング後の
ノード
グラフ上でのプーリング
プーリング
[1,2]
[3,4]
1
2
クラスタリング
情報
[3,4]1
元のノード情報 並びかえ プーリング
[1,2]
[3,4]
1
2
プーリング
1 2 1
[1,2]
[3,4]
[5,6]
1
2
3
クラスタリング
情報
[5,6]
[3,4]
1
2
元のノード情報 並びかえ プーリング
[1,2]
[5,6]
[3,4]
1
3
2
プーリング1 3
2
1
2
関係スコアについて
• 注目ノードに対する隣接ノードを探し,
エッジ重みとノードの特徴の関係スコアが
最大のノードを探してグループ化
• 𝑒(𝑥, 𝑦) :頂点𝑥と𝑦との間のエッジ重み
(隣接行列の値と同じ)
• 𝑤(𝑥) :頂点𝑥重み
(頂点𝑥の次数と同じ)
• 関係スコアが最大のノード
➡ 接続数が少ないノードが優先的に選択される
1 2 3 4 5
1 0 1 0 1 0
2 1 0 1 1 1
3 0 1 0 0 0
4 0 1 0 0 0
5 1 1 1 0 1
1 2 3 4 5
2 4 2 2 2
隣接行列
𝑒(𝑥, 𝑦) :頂点𝑥と𝑦との間のエッジ重み
次数
𝑤(𝑥) :頂点𝑥重み
1 2 3
4 5

FeaStNet: Feature-Steered Graph Convolutions for 3D Shape Analysis

Editor's Notes

  • #6 重みごと 注目ノードに対する隣接ノード別 で計算
  • #10 理由は中
  • #11 理由は中
  • #12 Wは次元行列の要素のみ 次元行列は対角行列だけど Wはその対角成分のみの行列
  • #13 Wは次元行列の要素のみ 次元行列は対角行列だけど Wはその対角成分のみの行列
  • #14 Wは次元行列の要素のみ 次元行列は対角行列だけど Wはその対角成分のみの行列
  • #15 Wは次元行列の要素のみ 次元行列は対角行列だけど Wはその対角成分のみの行列
  • #16 Wは次元行列の要素のみ 次元行列は対角行列だけど Wはその対角成分のみの行列
  • #17 Wは次元行列の要素のみ 次元行列は対角行列だけど Wはその対角成分のみの行列
  • #18 Wは次元行列の要素のみ 次元行列は対角行列だけど Wはその対角成分のみの行列
  • #19 Wは次元行列の要素のみ 次元行列は対角行列だけど Wはその対角成分のみの行列
  • #20 Wは次元行列の要素のみ 次元行列は対角行列だけど Wはその対角成分のみの行列
  • #22 Wは次元行列の要素のみ 次元行列は対角行列だけど Wはその対角成分のみの行列
  • #23 Wは次元行列の要素のみ 次元行列は対角行列だけど Wはその対角成分のみの行列
  • #24 Wは次元行列の要素のみ 次元行列は対角行列だけど Wはその対角成分のみの行列
  • #25 Wは次元行列の要素のみ 次元行列は対角行列だけど Wはその対角成分のみの行列
  • #26 Wは次元行列の要素のみ 次元行列は対角行列だけど Wはその対角成分のみの行列
  • #27 Wは次元行列の要素のみ 次元行列は対角行列だけど Wはその対角成分のみの行列
  • #28 Wは次元行列の要素のみ 次元行列は対角行列だけど Wはその対角成分のみの行列
  • #29 実装はグリッド上でのプーリングでできる 赤い四角形は同じチャンネル
  • #30 実装はグリッド上でのプーリングでできる 赤い四角形は同じチャンネル
  • #31 Wは次元行列の要素のみ 次元行列は対角行列だけど Wはその対角成分のみの行列