Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SkrGAN: Sketching-rendering Unconditional Gener...
Search
koshian
October 11, 2019
Programming
0
370
SkrGAN: Sketching-rendering Unconditional Generative Adversarial Networks for Medical Image Synthesis
#番外編【画像処理 & 機械学習】論文LT会!〜MICCAI 2019 予習編〜 @ LPIXEL
koshian
October 11, 2019
Tweet
Share
More Decks by koshian
See All by koshian
Wasserstein GANからSpectral Normalizationへ
koshian2
3
2k
Other Decks in Programming
See All in Programming
開発チーム・開発組織の設計改善スキルの向上
masuda220
PRO
20
11k
Ruby Parser progress report 2025
yui_knk
1
430
実用的なGOCACHEPROG実装をするために / golang.tokyo #40
mazrean
1
260
請來的 AI Agent 同事們在寫程式時,怎麼用 pytest 去除各種幻想與盲點
keitheis
0
120
Compose Multiplatform × AI で作る、次世代アプリ開発支援ツールの設計と実装
thagikura
0
140
GitHubとGitLabとAWS CodePipelineでCI/CDを組み比べてみた
satoshi256kbyte
4
210
Improving my own Ruby thereafter
sisshiki1969
1
160
ぬるぬる動かせ! Riveでアニメーション実装🐾
kno3a87
1
210
ユーザーも開発者も悩ませない TV アプリ開発 ~Compose の内部実装から学ぶフォーカス制御~
taked137
0
150
基礎から学ぶ大画面対応(Learning Large-Screen Support from the Ground Up)
tomoya0x00
0
420
AI時代のUIはどこへ行く?
yusukebe
18
8.8k
さようなら Date。 ようこそTemporal! 3年間先行利用して得られた知見の共有
8beeeaaat
3
1.4k
Featured
See All Featured
A designer walks into a library…
pauljervisheath
207
24k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Designing for Performance
lara
610
69k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
4 Signs Your Business is Dying
shpigford
184
22k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Code Review Best Practice
trishagee
70
19k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Music & Morning Musume
bryan
46
6.8k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Transcript
SkrGAN: Sketching-rendering Unconditional Generative Adversarial Networks for Medical Image Synthesis
2019/10/11 こしあん(koshian2) #番外編【画像処理 & 機械学習】論文LT会! 〜MICCAI 2019 予習編〜 @ LPIXEL
論文紹介 SkrGANの論文:MICCAI 2019にAccept Tianyang Zhang, Huazhu Fu, Yitian Zhao,
Jun Cheng, Mengjie Guo, Zaiwang Gu, Bing Yang, Yuting Xiao, Shenghua Gao, Jiang Liu. SkrGAN: Sketching-rendering Unconditional Generative Adversarial Networks for Medical Image Synthesis. MICCAI 2019 https://arxiv.org/abs/1908.04346 ざっくりとした特徴 • 医用画像の生成を目的としたGAN(Generative adversarial networks) • Uncodintional GANでProgressive GAN(PGGAN)の応用 • PGGANにはないスケッチ画像によるガイドを追加することで、GANでぼやけがちな輪郭を明 瞭にすることに成功。各評価指標でPGGANを上回り、医用画像の生成ではSoTA。 なぜこの論文を選んだか • 医用画像がテーマだが、本質的には応用範囲は広そう(イラストやアニメの生成にも使えそう) • ありがちな「医用画像はデータが少ないのでGANでAugmentationしましょう」がメインではない。 Data Augmentationについても議論しているがおまけ程度。より本質的な側面に切り込んでお り、意義がありそう。 • 人間が絵を描くプロセスを踏襲しており、直感的に理解しやすい。 • Conditional GANではいろいろな条件(Semantic Segmentation、クラスラベル、ポーズ……) を追加情報として与える風潮があるが、アノテーションデータが必要。スケッチに限れば機械的 に作り出せるので、Uncodintionalでもいける(アノテーション不要)。そこが面白い。
GANとは DiscriminatorとGeneratorという2つのネットワークが敵対するよう に学習することで、高画質な画像生成が可能 最近では非常に高画質な出力が可能に(BigGAN, StyleGAN等) 作った偽物で D(警察)を騙 したい
偽物か本物 か見分けたい Generator (偽造者) Discriminator (警察)
SkrGANの特徴 問題意識 GANで失われがちな前面構造(血管、骨)は医療診断では重要。ここを鮮明に出したい スケッチと着色の2ステージに分ける ⚫ 通常GAN:ノイズ→カラー画像という1ステージ ⚫ SkrGAN:ノイズ→スケッチ(モノクロ)、スケッチ→カラー画像という2ステージ
2ステージにするのはS2GANなど前例はある。SkrGANは損失関数を工夫していて、2ステージ だがEnd-to-Endに訓練できる(はず)。SkrGANは訓練の誘導としてスケッチを入れる。 発想は「現実の絵画の描画手順( realistic drawing procedures of human painting )」からと記 されている。 眼底写真の生成 既存手法で一番まともそうなのがPGGAN 緑の矢印がSkrGANで改善してるポイント (各GANについては後述)
SkrGANの全体図 (1) スケッチの生成 (2) カラーレンダリング Noise→ImageのGAN (普通のGAN) Image→ImageのGAN (pix2pixなど) Noise→ImageのGANを分解し、
スケッチによる「ガイド」を入れる
スケッチの生成 本物のスケッチはどうするの?ス ケッチのデータが必要では? 不要。カラー画像を、 I. Sobelフィルターによるエッジ検出 II. ガウシアンローパスフィルターでノイズ を除去(ガウシアンぼかし)
III. モルフォロジー変換でオープニングした あとクロージングする(詳しくは OpenCVのドキュメント参照) OpenCV等で機械的にスケッチは生成可能! スケッチ生成のG/Dの構成は? PGGANを使う。低解像度→高解像度で訓練 スケッチ生成の損失関数は? 普通のGANと同じ。zはノイズ、lというlatent codeを用意し、要素積取ってるのが特徴
カラーレンダリング Image to imageのGAN。スケッチを 着色する。Gの構成はU-Net。 カラーレンダリングの損失関数は? (Adversarial loss)
+ λ×(L1 loss) L1 lossは教師あり学習と同じ。訓練を加速さ せる。λ=100(多少変えてもほとんど影響な い)。着色部分はpix2pixと同じ。 全体の損失関数は? スケッチと着色が一本の損失関数で表せるの でEnd-to-Endで訓練できるはず(コードが公 開されていないので詳細不明) 疑問点:PG-GANのProgressive Growing(低解像度→高解像度)の訓練をやっている間に 着色部分のU-Netはどう訓練するの? 訓練段階をスケッチと着色で分割する? U-NetもProgressive Growingするの? 偽のスケッチが出力されたらリサイズしてU-Netに入力するの?(特に記述がない)
データと評価指標 3つのPublic dataと1つのPrivate data を使用 Public data 1.
Chest X-Ray dataset:胸部X線画像 肺炎or正常、5863枚。Kaggleより 2. Kaggle Lung dataset:CTスキャン画像 肺のセグメンテーション。267枚。Kaggle 3. Brain MRI dataset:脳のMRI画像 147枚。有料らしい Private data 病院から集めた6432枚の眼底写真からなる データセット どのデータにおいても、ラベル情報 は不要(アノテーション要らない) 512x512の解像度で生成 TITAN XP2枚でバッチサイズ16で訓練 評価指標3つ→ MS-SSIM (multi-scale structural similarity) ピクセルの相関に注目した2画像間の類似度。 完全に同一画像なら1。 →本論文では「高いほうが良い」とあるが、 高すぎるとモード崩壊していることがあり、 低いほうが良いとする文献も多いのに注意。 SWD (Sliced Wasserstein Distance) ラプラシアンピラミッド(≒画像を周波数分 解)からパッチを取り、乱数で1次元に投射し たときのWasserstein距離。PGGANの指標。 Inceptionモデルに左右されないメリットがあ る。→「低い方が良い」 FID (Freshet Inception Distance) 訓練済みInceptionモデルの出力層における特 徴量で見たときの、本物-偽物間の2乗距離。 ただのL2距離ではなく、平均や共分散行列で 計算。 →「低いほうが良い」。直感的にはL2距離に 似ている。Inception scoreは本物の分布を見 ないのでその欠陥を補うために使われる。
実験結果 すべてのデータ、評価指標に対してSkrGANが一番良かった 他のGAN補足 1. DCGAN:多くのGANの雛形となった元祖 2. ACGAN:DCGANにクラスラベル、Dに画像分類を入れたConditional GAN。SNGANやSAGAN、BigGANの祖先。
3. WGAN:Dにリプシッツ連続の制約を入れ、損失関数をWasserstein距離にしたGAN。モード崩壊が(ほぼ)起きな い。GPではなくWeight Clip版。 4. PGGAN:低→高解像度と段階的に訓練するGAN。速度・安定性、高解像度に強み。4つの中では結果がまとも。 眼底 (6432枚) 胸部X線 (5863枚) 肺CT (267枚) 脳MRI (147枚) ↑画像数が少ないとDCGAN, ACGAN, WGANが悪すぎ
実験結果 eがSkrGAN。非常に高画質 特にCTスキャン(一番上)では 他のGANが明らかにおかしい (脊髄に違和感がある) DRIVEという糖尿病性網膜症の 血管のセグメンテーションタスク でのパフォーマンス。 DRIVEはtrain/testが20枚ずつ SEN=TP/(TP+FN)
SkrGANで2000枚生成し 生成されたスケッチをラベルとして利用 (スケッチをラベルとして使っていい?pseudo-label的な発想?)
まとめ スケッチによる「ガイド」を入れ、noise→imageのGANを、 noise→image + image→imageのタスクに分解したのが SkrGAN。データ数が少ない+ラベルがなくてもうまくいく。 最初にスケッチを作るというのは、人間と同じなので発想が とてもわかりやすい(私見)
PGGAN+pix2pixなので、GANの割に訓練は安定しそう(私 見) スケッチ(線画)が重要なのは、イラストでも変わりないの でSkrGANでお絵かきしたら楽しそう(私見) Data Augmentationとして使えるかは、そのタスクにおいて スケッチがPseudo labelingとしてどの程度有効か、では? (私見)