Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
120
2024 眼科AIコンテスト手法解説スライド 第5回日本眼科AI学会総会
少しでも皆様のお役に立てる部分がありましたら幸いです。
Makoto Koyama
December 03, 2024
Tweet
Share
Other Decks in Technology
See All in Technology
総会員数1,500万人のレストランWeb予約サービスにおけるRustの活用
kymmt90
3
2.9k
Empowering Customer Decisions with Elasticsearch: From Search to Answer Generation
hinatades
PRO
0
300
Explain EXPLAIN
keiko713
10
2.8k
深層学習のリペア技術の最新動向と実際 / DNN Repair Techniques for AI Performance Alignment for Safety Requirements
ishikawafyu
0
490
GDGoC開発体験談 - Gemini生成AI活用ハッカソン / GASとFirebaseで挑むパン屋のフードロス解決 -
hotekagi
1
760
多様なロール経験が導いたエンジニアキャリアのナビゲーション
coconala_engineer
1
160
Kubeshark で Kubernetes の Traffic を眺めてみよう/Let's Look at k8s Traffic with Kubeshark
kota2and3kan
0
100
リクルートのデータ基盤 Crois 年3倍成長!1日40,000コンテナの実行を支える AWS 活用とプラットフォームエンジニアリング
recruitengineers
PRO
1
210
My Generation 年配者がこの先生きのこるには (Developers CAREER Boost 2024 Edition)/My Generation How elder engineers can survive
kwappa
3
370
知らない景色を見に行こう チャンスを掴んだら道が開けたマネジメントの旅 / Into the unknown~My management journey~
kakehashi
10
1.2k
Password-less Journey - パスキーへの移行を見据えたユーザーの準備 @ AXIES 2024
ritou
2
720
【AWS re:Invent 2024】Amazon Bedrock アップデート総まとめ
minorun365
PRO
7
600
Featured
See All Featured
A designer walks into a library…
pauljervisheath
204
24k
Into the Great Unknown - MozCon
thekraken
33
1.5k
Faster Mobile Websites
deanohume
305
30k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Raft: Consensus for Rubyists
vanstee
136
6.7k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.8k
Gamification - CAS2011
davidbonilla
80
5.1k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
1
110
A Tale of Four Properties
chriscoyier
157
23k
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学会の関係者の皆 様方には深く感謝をいたします。