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

人が注目する箇所を当てるSaliency Detectionの最新モデル UCNet(CVP...

人が注目する箇所を当てるSaliency Detectionの最新モデル UCNet(CVPR2020)

EAGLYS株式会社 AI勉強会 #7の資料になります。

今回の発表はCVPR2020に採択され、Best Paperにもノミネートされたモデル UCNetについてです。Saliency Detectionと呼ばれる人が注目する箇所を当てるタスクにおいて、全てのデータセット、指標でSOTAを出したモデルです。 人が注目する箇所はアノテーターの主観が含まれており、その不確かさを考慮することでモデルの性能を飛躍的に向上させました。

Avatar for Shintaro Yoshida

Shintaro Yoshida

November 19, 2020
Tweet

More Decks by Shintaro Yoshida

Other Decks in Research

Transcript

  1. EAGLYS株式会社 AI勉強会 1. NAS 入門 2. Out of Distribution【入門編】 3.

    Out of Distribution【実践編】画像認識 x 異常検知 4. 安定の可視化手法 「Grad-CAM 」 5. 新しい Optimizer 「Adabelief」 6. Federated Learning 入門 7. Saliency Detection最新研究 UCNet ⇦今日
  2. 今日の発表内容 - Saliency Detectionとは - Semantic Segmentation の復習 - Semantic

    Segmentationの有名手法 FCN と UNet の紹介 - UCNet - 評価指標と結果
  3. UCNetの簡単な紹介 - CVPR2020に採択、CVPR2020のBest Paper Awardにノミネート - オーストラリア国立大学の論文 - RGB-D Saliency

    Detectionのタスクで全てのDataset, 全ての指標でSOTA - CVAE(Conditional Variational AutoEncoder)を導入 - Depth Correction Networkと呼ばれる アノテーターの不確かさを考慮したモデル
  4. Semantic Segmentationの基本 Image Classification との違い ピクセルごとにクラスを予測 FCN(2014, Jonathan) 15層の3x3 Convで1/32

    7x7 Convと1x1Convで4096次元に 1x1 Convで21次元に(VOCのクラス数) Transpose Convで 元の画像サイズ
  5. TransposeConv2D Quiz : TransposeConv2DのOutput Shapeは? >> input = torch.randn(20, 16,

    50, 100) >> m = nn.ConvTranspose2d(16, 33, kernel_size=3, stride=2, padding=1,dilation=2) >> output = m(input) [ Image Credit ] 元画像 2x2 アップサンプリング後 4x4 Stride : 1 Padding : 0 (Valid in Tensorflow) Dilation : 1
  6. TransposeConv2D Quiz : TransposeConv2DのOutput Shapeは? >> input = torch.randn(20, 16,

    50, 100) >> m = nn.ConvTranspose2d(16, 33, kernel_size=3, stride=2, padding=1,dilation=2) >> output = m(input) 正解 : torch.Size([20, 33, 101, 201])
  7. TransposeConv2Dの計算方法 (Stride) Stride = 1 Step(0) Stride = 2 ...

    ... Output Input Kernel Step(1) Step(1) まとめ StrideはInput上をカーネル が操作する時の回数が変更
  8. TransposeConv2Dの計算方法(Padding) Padding = 1 ... ... Output ... Padding =

    2 Padding = 0 まとめ Paddingはカーネルの スタート地点が変更
  9. TransposeConv2Dの計算方法 (Dilation) Dilation = 1 Dilation = 2 ... Output

    Input Kernel カーネル 走査スタート時 ... まとめ Paddingはカーネルのスタート地点 からInput上に行くまでの距離が変更
  10. TransposeConv2D 解答 Quiz : TransposeConv2DのOutput Shapeは? >> input = torch.randn(20,

    16, 50, 100) >> m = nn.ConvTranspose2d(16, 33, kernel_size=3, stride=2, padding=1,dilation=2) >> output = m(input) 正解 : torch.Size([20, 33, 101, 201])
  11. 実際のコード FCN(2014, Jonathan) 15層の3x3 Convで1/32 7x7 Convと1x1Convで4096次元に 1x1 Convで21次元に(VOCのクラス数) torch.Size([1,

    21, 16, 12]) Transpose Convで 元の画像サイズ nn.ConvTranspose2d(21, 21, 64, stride=32) torch.Size([1, 21, 416, 544]) 500 375
  12. Fully Convolutional Network FCN-32s : そのまま FCN-16s : feature4とconcat FCN-8s

    : feature3とconcat 結果 空間的な情報を補完することが可能
  13. Saliency Detection - 2D, 3D(Depth), 4Dの問題 に分けることが可能 - ルール⇨CNN⇨Network Engineering

    3D(RGB-D画像)は大きくわけて2種類 - MultiModal Input Fusion ⇦◉, UCNet - MultiModal Feature Fusion ⇦◉ - UniModal Result Fusion 近年の動向 Coase to Fine , SOC [ Image Credit ] Kinect [ Image Credit ] RealSense [ Image Credit ]
  14. UCNet(2020, Jing) • 5つのモジュール(実質3つ) • 学習とテストで使うモジュールが異なる • 実際のコードを追うことは大変 Contribution 1

    ) 初めてこのタスクでCVAEを採用 2 ) 多数決をするモジュール(実装なし) 3 ) Depth情報も修正
  15. Conditional Variational AutoEncoder AutoEncoderとVariational AutoEncoderの復習 AutoEncoder [ Image Credit ]

    Variational AutoEncoder 精度の向上、Latent Vectorの分布が0中心、Latent Vetorであるzの分布が連続的 平均0分散1の正規分布に近づくように KL Lossを追加 [ Image Credit ]
  16. Conditional Variational AutoEncoder - 欲しいyラベルを出力したい (Yが複数のモードを持つとき ) - 効率よく学習したい Encoder,

    Decoderにyラベルを追加 Objective Functionや モデル構成は入力を増やす以外ほぼ同じ Reconstruction Loss Kullback Leibler Divergence(正則化項) このyをGT画像にしてSaliency Detectionタスクに応用 = UCNet CVAE VAE
  17. PriorNet and PosteriorNet RGB + D をもとにLatent Vector Zを作成 =

    PriorNet RGB + D + GTをもとにLatent Vector Zを作成 = PriorNet 構造はシンプルで5層のCNN(BNとLeaky ReLU) + Flatten + MLP Feature Expandingは2次元のテンソルを 4次元のB x 画像サイズ に拡大 Loss KL Divergence
  18. SaliencyNet - EncoderとDecoder 構造 - Input : RGB-D画像 + Latent

    Vector Latent Vectorは画像サイズと同じに - Output : 1channelのSaliency Map Encoder ResNet50 Decoder - それぞれのFeature Mapsに対して、 DenseASPP Layer 1 Layer 2 Layer 3 Layer 4 RGB-D 画像 + Latent Vector ResNet50 C DenseASPP DenseASPP DenseASPP DenseASPP Saliency Map Decoder
  19. Channel Attention Module(2018, Sangyurun) SE ModuleのAvg Poolingだけでなく、 Max PoolingとAvg Poolingを組み合わせ

    ⇨コードにはChannel Attentionと書いているが、 実装上はSE Module SE Module [ Image Credit ]
  20. Semantic Segmentationの指標 4つ 今回使用している指標 - MAE - Mean F-Measure -

    S-Measure - Mean E-Measure 従来の指標 - OP(Overall Pixel Accuracy) , PC(Per Class Accuracy), IOU - JI(Jaccard Index) i番目のクラスと予測したうちでどの程度合っているか
  21. S-Measure(2017, Deng-ping) 構造の類似度(Structure Similarity)を捉えたい SSIMをベースに 0.5*Sr+0.5*Soで定義 Region-Aware Structure Similarity Sr

    Object-Aware Structure Similarity So (Object Levelが高次元の問題に不可欠) Xfg, YfgはGT, SMの確率分布 So = μOBG + (1-μ)OFG 分布の拡散具合 輝度の分布の近さ
  22. 結果3 Ablation Studies M2 : Depth Correction Networkの有無で比較 M4 :

    VAE vs CVAE M6 : Monte Carlo Dropout との比較 ( テスト中にDropoutを行うことで Stochastic Inferenceを実現 )