EAGLYS株式会社 AI勉強会 #7の資料になります。
今回の発表はCVPR2020に採択され、Best Paperにもノミネートされたモデル UCNetについてです。Saliency Detectionと呼ばれる人が注目する箇所を当てるタスクにおいて、全てのデータセット、指標でSOTAを出したモデルです。 人が注目する箇所はアノテーターの主観が含まれており、その不確かさを考慮することでモデルの性能を飛躍的に向上させました。
人が注目する箇所を当てるSaliencyDetectionの最新モデル UCNet(CVPR2020)EAGLYS株式会社AI 勉強会 #7 2020/11/19(Thu)吉田 慎太郎@sht_47
View Slide
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 ⇦今日
今日の発表内容- Saliency Detectionとは- Semantic Segmentation の復習- Semantic Segmentationの有名手法 FCN と UNet の紹介- UCNet- 評価指標と結果
Saliency Detectionとは- Semantic Segmentationという分野の1カテゴリーかつ設定がより高次元- 近年、RGB-D画像の入手が容易になり、RGB-D画像を用いたモデルが注目- トラッキング、画像抽出、要約動画の作成、動画理解への応用が期待される
UCNetの簡単な紹介- CVPR2020に採択、CVPR2020のBest Paper Awardにノミネート- オーストラリア国立大学の論文- RGB-D Saliency Detectionのタスクで全てのDataset, 全ての指標でSOTA- CVAE(Conditional Variational AutoEncoder)を導入- Depth Correction Networkと呼ばれる アノテーターの不確かさを考慮したモデル
Semantic Segmentationの基本Image Classification との違いピクセルごとにクラスを予測FCN(2014, Jonathan)15層の3x3 Convで1/327x7 Convと1x1Convで4096次元に1x1 Convで21次元に(VOCのクラス数)Transpose Convで 元の画像サイズ
TransposeConv2DQuiz : 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 アップサンプリング後 4x4Stride : 1Padding : 0 (Valid in Tensorflow)Dilation : 1
TransposeConv2DQuiz : 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])
TransposeConv2Dの計算方法 (Stride)Stride = 1Step(0)Stride = 2... ...OutputInputKernelStep(1) Step(1)まとめStrideはInput上をカーネルが操作する時の回数が変更
TransposeConv2Dの計算方法(Padding)Padding = 1......Output...Padding = 2Padding = 0まとめPaddingはカーネルのスタート地点が変更
TransposeConv2Dの計算方法 (Dilation)Dilation = 1 Dilation = 2...OutputInputKernelカーネル 走査スタート時...まとめPaddingはカーネルのスタート地点からInput上に行くまでの距離が変更
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])
実際のコードFCN(2014, Jonathan)15層の3x3 Convで1/327x7 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])500375
Fully Convolutional NetworkFCN-32s : そのままFCN-16s : feature4とconcatFCN-8s : feature3とconcat結果空間的な情報を補完することが可能
UNet(2015, Olaf)- 医療画像が対象- High resolutionの画像生成が可能- GAN で広く応用!
Saliency Detection- 2D, 3D(Depth), 4Dの問題 に分けることが可能- ルール⇨CNN⇨Network Engineering3D(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 ]
UCNet(2020, Jing)● 5つのモジュール(実質3つ)● 学習とテストで使うモジュールが異なる● 実際のコードを追うことは大変Contribution1 ) 初めてこのタスクでCVAEを採用2 ) 多数決をするモジュール(実装なし)3 ) Depth情報も修正
Conditional Variational AutoEncoderAutoEncoderとVariational AutoEncoderの復習AutoEncoder[ Image Credit ]Variational AutoEncoder精度の向上、Latent Vectorの分布が0中心、Latent Vetorであるzの分布が連続的平均0分散1の正規分布に近づくように KL Lossを追加[ Image Credit ]
Conditional Variational AutoEncoder- 欲しいyラベルを出力したい (Yが複数のモードを持つとき )- 効率よく学習したいEncoder, Decoderにyラベルを追加Objective Functionやモデル構成は入力を増やす以外ほぼ同じReconstruction Loss Kullback Leibler Divergence(正則化項)このyをGT画像にしてSaliency Detectionタスクに応用 = UCNetCVAEVAE
PriorNet and PosteriorNetRGB + D をもとにLatent Vector Zを作成 = PriorNetRGB + D + GTをもとにLatent Vector Zを作成 = PriorNet構造はシンプルで5層のCNN(BNとLeaky ReLU) + Flatten + MLPFeature Expandingは2次元のテンソルを4次元のB x 画像サイズ に拡大LossKL Divergence
DepthCorrectNet- Annotatorの不確かさを考慮し、Depth画像を修正- EncoderとDecoderからなり、EncoderはResNet50を使用Decoder- LayerごとのFeatureをConvでChannel数UpSamplingでサイズを揃える- Dilated Conv(6, 12, 18, 24)を挿入足し合わせるLayer 1Layer 2Layer 3Layer 4RGB-D 画像ResNet50Dilated 6,12,18,24Depth 画像C
DenseASPP- Semantic Segmentationのテクニックの一つ特徴- Dilated Convolutionの結果をConcatenateするASPP- 途中のFeatureを最終層につなげるDenseNet
SaliencyNet- EncoderとDecoder 構造- Input : RGB-D画像 + Latent VectorLatent Vectorは画像サイズと同じに- Output : 1channelのSaliency MapEncoderResNet50Decoder- それぞれのFeature Mapsに対して、DenseASPPLayer 1Layer 2Layer 3Layer 4RGB-D 画像+ Latent VectorResNet50CDenseASPPDenseASPPDenseASPPDenseASPPSaliency MapDecoder
Channel Attention Module(2018, Sangyurun)SE ModuleのAvg Poolingだけでなく、 Max PoolingとAvg Poolingを組み合わせ⇨コードにはChannel Attentionと書いているが、 実装上はSE ModuleSE Module [ Image Credit ]
Hide and Seek Module(2017, Krishna)- 画像を16個のPatchに分割- 学習中のみ50%の確率でマスキング効果- モデルがObjectの関連したパーツを学習する
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番目のクラスと予測したうちでどの程度合っているか
Mean F-Measure( Arbelaez, 2011)輪郭を正解することがタスクにおいてより重要輪郭かどうかを予測し、画像の対角成分の0.75%に設定したθ以内に収まると1
S-Measure(2017, Deng-ping)構造の類似度(Structure Similarity)を捉えたいSSIMをベースに 0.5*Sr+0.5*Soで定義Region-Aware Structure Similarity SrObject-Aware Structure Similarity So(Object Levelが高次元の問題に不可欠)Xfg, YfgはGT, SMの確率分布So = μOBG + (1-μ)OFG分布の拡散具合輝度の分布の近さ
E-Measure(2018, Deng-ping)S-MeasureはBinary MapでうまくいかないPixelだけの情報でなく、Imageレベルの量も重要IはForeground Map, Aは全てが1の行列Bias Matrix φ 輝度のコントラストと強い相関類似度をアマダール積で計算
結果1- CVAEにより多様な予測が可能に- 精度も高い- Ours(1)とOurs(2)はCVAEからrandomにサンプリング
結果2
結果3 Ablation StudiesM2 :Depth Correction Networkの有無で比較M4 :VAE vs CVAEM6 :Monte Carlo Dropout との比較( テスト中にDropoutを行うことでStochastic Inferenceを実現 )
所感- 少しずつ盛り上がってきている分野- 不確かさを考慮するDepth Correction Netや予測に確立要素を組み込むCVAEは応用が広そう- CVAEの実装が勉強になった。