Slide 1

Slide 1 text

人が注目する箇所を当てるSaliency Detectionの 最新モデル UCNet(CVPR2020) EAGLYS株式会社 AI 勉強会 #7 2020/11/19(Thu) 吉田 慎太郎 @sht_47

Slide 2

Slide 2 text

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 ⇦今日

Slide 3

Slide 3 text

今日の発表内容 - Saliency Detectionとは - Semantic Segmentation の復習 - Semantic Segmentationの有名手法 FCN と UNet の紹介 - UCNet - 評価指標と結果

Slide 4

Slide 4 text

Saliency Detectionとは - Semantic Segmentationという分野の1カテゴリーかつ設定がより高次元 - 近年、RGB-D画像の入手が容易になり、RGB-D画像を用いたモデルが注目 - トラッキング、画像抽出、要約動画の作成、動画理解への応用が期待される

Slide 5

Slide 5 text

UCNetの簡単な紹介 - CVPR2020に採択、CVPR2020のBest Paper Awardにノミネート - オーストラリア国立大学の論文 - RGB-D Saliency Detectionのタスクで全てのDataset, 全ての指標でSOTA - CVAE(Conditional Variational AutoEncoder)を導入 - Depth Correction Networkと呼ばれる アノテーターの不確かさを考慮したモデル

Slide 6

Slide 6 text

Semantic Segmentationの基本 Image Classification との違い ピクセルごとにクラスを予測 FCN(2014, Jonathan) 15層の3x3 Convで1/32 7x7 Convと1x1Convで4096次元に 1x1 Convで21次元に(VOCのクラス数) Transpose Convで 元の画像サイズ

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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])

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

TransposeConv2Dの計算方法 (Dilation) Dilation = 1 Dilation = 2 ... Output Input Kernel カーネル 走査スタート時 ... まとめ Paddingはカーネルのスタート地点 からInput上に行くまでの距離が変更

Slide 12

Slide 12 text

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])

Slide 13

Slide 13 text

実際のコード 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

Slide 14

Slide 14 text

Fully Convolutional Network FCN-32s : そのまま FCN-16s : feature4とconcat FCN-8s : feature3とconcat 結果 空間的な情報を補完することが可能

Slide 15

Slide 15 text

UNet(2015, Olaf) - 医療画像が対象 - High resolutionの画像生成が可能 - GAN で広く応用!

Slide 16

Slide 16 text

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 ]

Slide 17

Slide 17 text

UCNet(2020, Jing) ● 5つのモジュール(実質3つ) ● 学習とテストで使うモジュールが異なる ● 実際のコードを追うことは大変 Contribution 1 ) 初めてこのタスクでCVAEを採用 2 ) 多数決をするモジュール(実装なし) 3 ) Depth情報も修正

Slide 18

Slide 18 text

Conditional Variational AutoEncoder AutoEncoderとVariational AutoEncoderの復習 AutoEncoder [ Image Credit ] Variational AutoEncoder 精度の向上、Latent Vectorの分布が0中心、Latent Vetorであるzの分布が連続的 平均0分散1の正規分布に近づくように KL Lossを追加 [ Image Credit ]

Slide 19

Slide 19 text

Conditional Variational AutoEncoder - 欲しいyラベルを出力したい (Yが複数のモードを持つとき ) - 効率よく学習したい Encoder, Decoderにyラベルを追加 Objective Functionや モデル構成は入力を増やす以外ほぼ同じ Reconstruction Loss Kullback Leibler Divergence(正則化項) このyをGT画像にしてSaliency Detectionタスクに応用 = UCNet CVAE VAE

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

DepthCorrectNet - Annotatorの不確かさを考慮し、Depth画像を修正 - EncoderとDecoderからなり、 EncoderはResNet50を使用 Decoder - LayerごとのFeatureをConvでChannel数 UpSamplingでサイズを揃える - Dilated Conv(6, 12, 18, 24)を挿入 足し合わせる Layer 1 Layer 2 Layer 3 Layer 4 RGB-D 画像 ResNet50 Dilated 6,12,18,24 Depth 画像 C

Slide 22

Slide 22 text

DenseASPP - Semantic Segmentationの テクニックの一つ 特徴 - Dilated Convolutionの結果を ConcatenateするASPP - 途中のFeatureを 最終層につなげるDenseNet

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

Channel Attention Module(2018, Sangyurun) SE ModuleのAvg Poolingだけでなく、 Max PoolingとAvg Poolingを組み合わせ ⇨コードにはChannel Attentionと書いているが、 実装上はSE Module SE Module [ Image Credit ]

Slide 25

Slide 25 text

Hide and Seek Module(2017, Krishna) - 画像を16個のPatchに分割 - 学習中のみ50%の確率でマスキング 効果 - モデルがObjectの関連した パーツを学習する

Slide 26

Slide 26 text

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番目のクラスと予測したうちでどの程度合っているか

Slide 27

Slide 27 text

Mean F-Measure( Arbelaez, 2011) 輪郭を正解することがタスクにおいてより重要 輪郭かどうかを予測し、画像の対角成分の0.75%に設定したθ以内に収まると1

Slide 28

Slide 28 text

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 分布の拡散具合 輝度の分布の近さ

Slide 29

Slide 29 text

E-Measure(2018, Deng-ping) S-MeasureはBinary Mapでうまくいかない Pixelだけの情報でなく、Imageレベルの量も重要 IはForeground Map, Aは全てが1の行列 Bias Matrix φ 輝度のコントラスト と強い相関 類似度をアマダール積で計算

Slide 30

Slide 30 text

結果1 - CVAEにより多様な予測が可能に - 精度も高い - Ours(1)とOurs(2)はCVAEからrandomにサンプリング

Slide 31

Slide 31 text

結果2

Slide 32

Slide 32 text

結果3 Ablation Studies M2 : Depth Correction Networkの有無で比較 M4 : VAE vs CVAE M6 : Monte Carlo Dropout との比較 ( テスト中にDropoutを行うことで Stochastic Inferenceを実現 )

Slide 33

Slide 33 text

所感 - 少しずつ盛り上がってきている分野 - 不確かさを考慮するDepth Correction Netや 予測に確立要素を組み込むCVAEは応用が広そう - CVAEの実装が勉強になった。