Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
2.1k
Other Decks in Programming
See All in Programming
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
430
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
490
SwiftUIで本格音ゲー実装してみた
hypebeans
0
420
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
120
Go コードベースの構成と AI コンテキスト定義
andpad
0
130
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
7
2.2k
Github Copilotのチャット履歴ビューワーを作りました~WPF、dotnet10もあるよ~ #clrh111
katsuyuzu
0
110
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
1.2k
sbt 2
xuwei_k
0
300
TestingOsaka6_Ozono
o3
0
160
愛される翻訳の秘訣
kishikawakatsumi
3
330
AIコーディングエージェント(Gemini)
kondai24
0
240
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Designing for humans not robots
tammielis
254
26k
BBQ
matthewcrist
89
9.9k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.3k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Raft: Consensus for Rubyists
vanstee
141
7.2k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
How to Ace a Technical Interview
jacobian
281
24k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
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としてどの程度有効か、では? (私見)