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
360
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
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
710
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
660
来たるべき 8.0 に備えて React 19 新機能と React Router 固有機能の取捨選択とすり合わせを考える
oukayuka
2
880
ふつうの技術スタックでアート作品を作ってみる
akira888
0
290
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
1.8k
Deep Dive into ~/.claude/projects
hiragram
10
2.2k
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
260
イベントストーミング図からコードへの変換手順 / Procedure for Converting Event Storming Diagrams to Code
nrslib
1
570
初学者でも今すぐできる、Claude Codeの生産性を10倍上げるTips
s4yuba
3
1.4k
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
1
720
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
620
0626 Findy Product Manager LT Night_高田スライド_speaker deck用
mana_takada
0
140
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
Fireside Chat
paigeccino
37
3.5k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
124
52k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
RailsConf 2023
tenderlove
30
1.1k
Music & Morning Musume
bryan
46
6.6k
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としてどの程度有効か、では? (私見)