Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DeepGCNs: Can GCNs Go as Deep as CNNs?

shimacos
November 21, 2019

DeepGCNs: Can GCNs Go as Deep as CNNs?

ICCV'19 で提案された 'DeepGCNs: Can GCNs Go as Deep as CNNs?' についてエルピクセルのLT会で発表しました。

shimacos

November 21, 2019
Tweet

More Decks by shimacos

Other Decks in Research

Transcript

  1. DeepGCNs: Can GCNs Go as Deep as CNNs?
    [ICCV 2019, Gunhao Li +]
    #8【画像処理 & 機械学習】論⽂LT会! @エルピクセル株式会社 2019/11/21
    Naoto Shimakoshi

    View full-size slide

  2. 自己紹介
    2
    • 名前
    • 島越 直⼈ (シマコシ ナオト)
    • よくトリゴエと間違えられますがシマコシです。
    • Twitter
    • @nt_4o54
    • 経歴
    • ⼤学時代は⽣体信号から睡眠段階を判別するシステムをDeepで作ってました。
    • 社会⼈になってからは、タクシーの位置情報データを⽤いた機械学習プロジェクト
    に関わってます。
    • Kaggle
    • @shimacos
    • 最近、Kaggle Masterになりました。

    View full-size slide

  3. Graph Convolutional Network (GCN)
    • Convolutional Neural Networkはnon-Euclidean dataを上⼿く扱えない
    • 要するに隣り合うもの同⼠の距離や結合の違いを考慮できない
    • グラフデータに対する需要の⾼まり
    • CV領域でも関⼼が⾼まっている
    • Semantic relations between objects
    • Human joints for action recognition
    • 3D point cloud processing
    3
    Graph に対して畳み込みを⾏うGraph Convolutional Network の登場

    View full-size slide

  4. DeepGCNs: Can GCNs Go as Deep as CNNs?
    • Challenges
    • ⼤規模グラフに対してGCNを適⽤した先⾏研究は、3-6層のものが多い
    • 層を深くしすぎると受容野が広がりすぎて勾配消失が起きやすい
    • Contributions
    • CNNで⽤いられている⼿法をGCNに適⽤することで56層 ( ! ) のGCNを提案
    • 3次元点群のSegmentation TaskにおいてSoTAを3.7%更新
    • 著者によるgithub実装
    • Tensorflow : http://github.com/lightaime/deep_gcns
    • Pytorch : https://github.com/lightaime/deep_gcns_torch
    4

    View full-size slide

  5. • 点群データのSegmentationには以下のような課題が存在
    • 単純にVoxelで処理をしようとすると物体の凹凸表現が⽋損する
    • 点群データは頂点のindexに意味がない
    • 回転しても等価
    • Augmentationで対応することも考えられるが組み合わせが無数で現実的でない
    • 点群をGraphとして考えると上記のようなことを意識しなくてもよい
    何故点群データにGCN?
    5
    1
    2
    3
    4
    5
    2
    3
    4
    5
    1

    View full-size slide

  6. GCNの層を深くするにはどうしたらいいか?
    • CNNの場合は?
    • ResNet / DenseNet (勾配消失問題を解決)
    • Dilated Convolutional Network
    • Poolingで失われる空間的情報を削減
    6
    [1] https://arxiv.org/pdf/1512.03385.pdf
    [2] https://arxiv.org/pdf/1608.06993.pdf
    [3] https://arxiv.org/pdf/1511.07122.pdf
    [1] [2]
    [3]

    View full-size slide

  7. CNNの概念をGCNに単純に応用 | Dilated Conv
    7
    • ⼀般的なGCNの定式化 ( : グラフ, : 重み, : レイヤーインデックス)
    周辺ノードをどのようにAggregateするか

    View full-size slide

  8. CNNの概念をGCNに単純に応用 | Dilated Conv
    8
    • ⼀般的なGCNの定式化 ( : グラフ, : 重み, : レイヤーインデックス)
    Aggregateされた特徴を使って中⼼ノードをどのように更新するか

    View full-size slide

  9. CNNの概念をGCNに単純に応用 | Dilated Conv
    9
    • ⼀般的なGCNの定式化 ( : グラフ, : 重み, : レイヤーインデックス)
    • Aggregate Function ( ) = Dilated k-NN function ( : 中⼼ノード, : 近傍ノード)
    • 近傍ノードを特徴空間上で距離が近い順にd個間隔を空けてk個選択

    View full-size slide

  10. • ⼀般的なGCNの定式化 ( : グラフ, : 重み, : レイヤーインデックス)
    • Aggregate Function ( ) = Dilated k-NN function ( : 中⼼ノード, : 近傍ノード)
    • 近傍ノードを特徴空間上で距離が近い順にd個間隔を空けてk個選択
    • Update function = MLP
    • Aggregateされた特徴と中⼼ノードの特徴をconcatさせてMLPに⼊⼒
    CNNの概念をGCNに単純に応用 | Dilated Conv
    10

    View full-size slide

  11. • ⼀般的なGCNの定式化 ( : グラフ, : 重み, : レイヤーインデックス)
    • Aggregate Function ( ) = Dilated k-NN function ( : 中⼼ノード, : 近傍ノード)
    • 近傍ノードを特徴空間上で距離が近い順にd個間隔を空けてk個選択
    • Update function = MLP
    • Aggregateされた特徴と中⼼ノードの特徴をconcatさせてMLPに⼊⼒
    CNNの概念をGCNに単純に応用 | Dilated Conv
    11
    論⽂の誤植!!
    正しくは、concatさせてMLPに
    ⼊⼒した結果のmaxを取る
    (github実装参照)

    View full-size slide

  12. Blockの中⾝でしていることは同じ
    • ResGCN / DenseGCN
    • ResGCN-56とDenseGCN-28まで構築
    12
    CNNの概念をGCNに単純に応用 | ResNet / DenseNet

    View full-size slide

  13. Result
    13
    • S3DISデータセットで実験
    • 室内データのセグメンテーションを⾏うデータセット
    • Ablation studyでは、 ResGCN-28 > ResDense-28, ResGCN-56 > ResGCN-28
    • mIOUでSoTAより3.7%改善 (何故かResGCN-56では⽐較していない)
    • GPUリソースの問題で詳細には試せなかったが、ResGCN-151まで構築してResGCN-28
    と似たような結果が得られたらしい。(Over Smoothingしてる?)

    View full-size slide

  14. 個人的感想
    • 層を深くできたのは、Residual Connectionの寄与も⼤きいかもしれないが、Aggregateに
    Max poolingを⽤いてるのが⼤きい?
    • 結局周辺ノードと⾔いつつ1ペアの情報しかAggregateされてなくない?
    • 周辺ノードの重み付け和などにすると、層を深くするにつれて受容野が広がってしまい、
    勾配消失してしまいそう
    • 層を深くしても同じパラメータで実験しているっぽいので伸びしろありそう
    • 3次元点群だけでなく、他の⼤規模グラフに対しても利⽤できそう
    • エッジが明⽰的に与えられているグラフだとAggregateに⼯夫の余地あり
    14

    View full-size slide

  15. 参考
    • Dynamic Graph CNN for Learning on Point Clouds
    • 点群DNN、3D DNN⼊⾨ -3DYOLO, VoxelNet, PointNet, FrustrumPointNetなどなど
    • 点群×ディープラーニング【⼊⾨】
    15

    View full-size slide