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
2024 眼科AIコンテスト手法解説スライド 第5回日本眼科AI学会総会
Search
Makoto Koyama
December 03, 2024
Technology
0
580
2024 眼科AIコンテスト手法解説スライド 第5回日本眼科AI学会総会
少しでも皆様のお役に立てる部分がありましたら幸いです。
Makoto Koyama
December 03, 2024
Tweet
Share
Other Decks in Technology
See All in Technology
Lufthansa ®️ USA Contact Numbers: Complete 2025 Support Guide
lufthanahelpsupport
0
230
Four Keysから始める信頼性の改善 - SRE NEXT 2025
ozakikota
0
130
AIエージェントが書くのなら直接CloudFormationを書かせればいいじゃないですか何故AWS CDKを使う必要があるのさ
watany
14
5.9k
インフラ寄りSREの生存戦略
sansantech
PRO
8
3.3k
サイバーエージェントグループのSRE10年の歩みとAI時代の生存戦略
shotatsuge
4
710
american aa airlines®️ USA Contact Numbers: Complete 2025 Support Guide
aaguide
0
470
第4回Snowflake 金融ユーザー会 Snowflake summit recap
tamaoki
1
330
Delta airlines Customer®️ USA Contact Numbers: Complete 2025 Support Guide
deltahelp
0
1.1k
【LT会登壇資料】TROCCO新コネクタ「スマレジ」を活用した直営店データの分析
kazari0425
1
140
〜『世界中の家族のこころのインフラ』を目指して”次の10年”へ〜 SREが導いたグローバルサービスの信頼性向上戦略とその舞台裏 / Towards the Next Decade: Enhancing Global Service Reliability
kohbis
2
890
VGGT: Visual Geometry Grounded Transformer
peisuke
1
540
United Airlines Customer Service– Call 1-833-341-3142 Now!
airhelp
0
170
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
25
1.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
54k
GraphQLとの向き合い方2022年版
quramy
49
14k
Being A Developer After 40
akosma
90
590k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Code Reviewing Like a Champion
maltzj
524
40k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Transcript
古山誠(南子安眼科) E-mail:
[email protected]
眼科AIコンテスト 手法解説 Makoto Koyama (Minamikoyasu Eye Clinic) 第5回
日本眼科AI学会 (2024.12) 本資料には学会発表時の内容に加え、時間の関係で発表できなかった補足事項も含まれています
前処理 眼底写真の周辺の黒: モデルから見ると外れ値で 望ましくない 周辺の黒を中間色で 埋めて学習 • 写真を正方形に切り抜き • 画像もラベル側も全てz-score
normalization
分割手法 • Train : Testを均一に分割することは大切 • METSだけでなく、他の要素も均等に分割したい
分割手法 AGE AC SBP DBP HDCL TG BS 主成分分析による次元削減 要素1
要素2 METS METS Clusterに分類 Cluster1 Cluster2 Cluster3 Cluster4 20分割交差検証 →METSの標準偏差が最小となる Random stateをチェックして採用 最初からいきなりClusterに分けようとしても うまく行かないため、まずは次元削減 次元削減すればClusterに分けやすい Clusterごとに20分割 Random stateを0から100,000までずらして最良の値を調べた
20分割交差検証(分割しすぎです。おすすめしません。) 同様に20回繰り返し 20分割し、ずらして学習 それぞれLossが最小のmodelをload 皆さん真似しないように
注意点 • 本来はTest結果による介入行為はご法度 (Test結果による早期終了や加重平均はダメです) • 実際の精度よりも見かけ上良くなってしまう • Validationを別に作成すればOK • でも今回はコンテストのため、Validation・Testを兼用
損失関数はMSEを選択 Binary Cross Entropy (BCE) vs. Mean Squared Error (MSE)
• 一般的には二値分類はBCEと言われているが • 今回、単体で試したところ推測性能はほぼ同等 • BCEは自信がなくても0か1に近づくことが多い • MSEは自信がない場合には0.5に近づく BCE MSE 0~~1 0~~1 アンサンブル学習の場合、自信があるモデルに判断を任せるために、 自信がないモデルは0.5として出力したほう良いためMSEを採用 今回は50%の確率のMETSの推測であったためにこの手法が可能
水増し •回転 •縮小拡大 •ランダムクロップ •上下反転 (学習時だけでなくTest時にも上下反転して平均値を算出)
アンサンブル学習 ブースティング(直列)+ バギング(並列)を複数採用
バギングのmix手法 • 推測性能の高いデータの比率を上げたい → 指数による加重平均を採用 NumPyを使用すれば少ない計算コスト&簡単 • 指数はMSE, MAE, Accuracy,
AUC score, Kappaをtry → Kappaにて最も良い値が得られた AUC scoreではなかったのは意外 • Kappaが最良となるn乗をn=1から100までtestし採用 バギング毎にn=1から100までずらして計算しmix
ハイパーパラメータの探索 • ハイパーパラメータの探索は自作プログラムを使用 • 自分の好きなように自由にいじくり回せるのが良い • 自分でいじっていると、このパラメータがどのような感じ なのかという感覚が徐々に養われていく • 全て自動で探索してしまうと、なかなか理解が深まらない
• でもRay Tuneなどのツールを使うのが普通かも これぞ機械学習の醍醐味 ツールを何度か使用してみましたが、面白くないので結局使わなくなってしまいました
Optimizer • Adabelief • LION • Adam • AdamW •
AdaDerivative* • SGD モデルごとに網羅的に全ての ハイパーパラメータをチェッ クし、結局全てのモデルで Adabeliefを採用 無難です *https://github.com/ImpactCrater/OptimizerVisualizer 今回は残念な結果でした 良い手法ですが、Adabeliefにわずかに及ばず Adamとほぼ同様でした 早いけど・・・ ハイパーパラメータが多くて大変だが良い
Learning rate (LR) • 最初から大きな学習率だと、局所的な最適解に陥るriskあり • 最初は小さな学習率から開始し、徐々に学習率を上げる(up) • その後さらに学習率を下げて仕上げ(down) •
まずはLRを固定して最小値と最大値の適切な値を探索 • 次にupとdownのepoch数の最適な値を探索 • LRのcontrolはCyclicLRが便利
Early stopping • モデルごとに、最適なepoch数を検索 • Testの性能による早期終了(early stopping)を使用 • Epochごとにモデルを保存 •
Testで最良のKappaが得られたモデルを読み込み使用 注意:本来はvalidationとtestに分ける必要があります
モデル選択 PyTorchのtimmを使用し、SOTAの上位モデルを一通りチェック • eva02_base_patch14_448.mim_in22k_ft_in22k_in1k ( ) • swinv2_large_window12to16_192to256.ms_in22k_ft_in1k ( )
• tf_efficientnet_b5.ns_jft_in1k ( ) の3つを主モデルとして採用 eva swin eff RETFoundやRET-CLIPも採用すべきでした サンプル数の関係か、さらに大きいモデルでも同様の結果
ブースティング + バギング1 (モデルの肝) • PCA + • Nested k-fold
+ AGE AC SBP DBP HDCL TG BS METS METS Kappaのn乗で加重平均 swin eva eff Ridge XGBoost 眼底写真 多重共線性の問題を回避するために、 主成分分析で次元削減してからRidge XGBoostは過学習しやすいため、入れ子にした10-fold cross validationをさらに作成して学習 1/20の値からでは過学習してしまうため、Non-METSは19/20の値を使用して再度学習 METSの診断基準項目が複数入っているため、 non-METSのデータも使用したほうが良さそう DirectにMETSを推測した場合と比べて、 Ridge, XGBoostは遜色ない推測性能
バギング2 Kappaのn乗で加重平均 ・・・・・・ eva Ridge XGBoost 20-fold cross validation ✕
n METS eva Ridge XGBoost 20-fold cross validation eva Ridge XGBoost 20-fold cross validation 20分割交差検証を ひたすら繰り返し
バギング3 METS 上位x%のみ採用し、 Kappaのn乗で加重平均 eva Ridge XGBoost 20-fold cross validation
✕ n Ridge XGBoost 20-fold cross validation ✕ n swin Ridge XGBoost 20-fold cross validation ✕ n eff と同様に も処理 eva swin eff X%は1%から100%までチェックし、最良の値が 得られた%を採用。
バギング4 Final METS Random state = s1 Kappaのn乗で加重平均 swin eva
eff Ridge XGBoost 20-fold cross validation ✕ n Random state = s2 Ridge XGBoost 20-fold cross validation ✕ n swin eva eff Random stateを変えて学習
反省点 • 手元の試算では正答率80% → 実際は67% (驚きでした) • 20分割交差検証で、分割に偏りが生じた可能性が高い • 分割しすぎて自滅した感じ
• ValidationとTestに分けていれば気付いたはず • まだまだ未熟であることを痛感 → この経験を次に活かしていきます
最後に • 私にAIの世界へ入るきっかけを与えて頂いたのは、前回の眼科AIコンテストでした。 • 単なるコンピュータ大好き開業医から、コンピュータとAIいじりが大好きな開業医へと 変化しました。 • AIを利用したシステムを開発し、より良い緑内障診療ができるように試行錯誤中です。 • 共同研究を行って頂いておられる先生や関係者の方々にはいつも感謝しております。
• また、このような大変貴重な学習の機会を与えて頂きました、眼科AI学会の関係者の皆 様方には深く感謝をいたします。