🚀 WhyLesionCLIP 👍🏽
WhyLesionCLIPは、皮膚病変画像とテキスト記述を対応付けることができるモデルです。GPT - 4Vによって生成された臨床レポート付きのISICデータセットで、OpenCLIP (ViT - L/14)をファインチューニングしています。様々な皮膚病変データセットでのゼロショットと線形プロービングにおいて、PubMedCLIPやBioMedCLIPなどを大きく上回る性能を発揮します。
🚀 クイックスタート
以下のコードを使って、モデルを始めることができます。
pip install open_clip_torch
import torch
from PIL import Image
import open_clip
model, _, preprocess = open_clip.create_model_and_transforms("hf-hub:yyupenn/whylesionclip")
model.eval()
tokenizer = open_clip.get_tokenizer("ViT-L-14")
image = preprocess(Image.open("test_skin.jpg")).unsqueeze(0)
text = tokenizer(["dark brown", "bleeding", "irregular shape"])
with torch.no_grad(), torch.cuda.amp.autocast():
image_features = model.encode_image(image)
text_features = model.encode_text(text)
image_features /= image_features.norm(dim=-1, keepdim=True)
text_features /= text_features.norm(dim=-1, keepdim=True)
text_probs = (100.0 * image_features @ text_features.T).softmax(dim=-1)
print("Label probs:", text_probs)
✨ 主な機能
直接的な利用
WhyLesionCLIPは、ゼロショットの皮膚病変分類に使用できます。皮膚病変画像とテキスト記述の間の類似度を計算することができます。
下流タスクでの利用
WhyLesionCLIPは、下流タスクの特徴抽出器として使用できます。皮膚病変画像とテキスト記述から特徴を抽出し、他の下流タスクに利用することができます。
想定外の利用
WhyLesionCLIPは、臨床診断や治療には使用しないでください。臨床的な意思決定に使用することを意図していません。ユーザー(直接的なユーザーと下流タスクのユーザー)は、モデルのリスク、バイアス、制限について認識する必要があります。
📦 インストール
pip install open_clip_torch
💻 使用例
基本的な使用法
import torch
from PIL import Image
import open_clip
model, _, preprocess = open_clip.create_model_and_transforms("hf-hub:yyupenn/whylesionclip")
model.eval()
tokenizer = open_clip.get_tokenizer("ViT-L-14")
image = preprocess(Image.open("test_skin.jpg")).unsqueeze(0)
text = tokenizer(["dark brown", "bleeding", "irregular shape"])
with torch.no_grad(), torch.cuda.amp.autocast():
image_features = model.encode_image(image)
text_features = model.encode_text(text)
image_features /= image_features.norm(dim=-1, keepdim=True)
text_features /= text_features.norm(dim=-1, keepdim=True)
text_probs = (100.0 * image_features @ text_features.T).softmax(dim=-1)
print("Label probs:", text_probs)
📚 ドキュメント
モデルの詳細
WhyLesionCLIPは、皮膚病変画像とテキスト記述を対応付けることができます。GPT - 4Vによって生成された臨床レポート付きのISICデータセットで、OpenCLIP (ViT - L/14)をファインチューニングしています。様々な皮膚病変データセットでのゼロショットと線形プロービングにおいて、PubMedCLIPやBioMedCLIPなどを大きく上回る性能を発揮します。(評価の結果を参照)
- 論文: https://arxiv.org/pdf/2405.14839
- ウェブサイト: https://yueyang1996.github.io/knobo/
- リポジトリ: https://github.com/YueYANG1996/KnoBo
学習の詳細
学習データ
ISICデータセットを使用し、GPT - 4Vで56,590枚の画像に対する臨床レポートを生成しました。これらのレポートを前処理して、医学的に関連する所見を抽出し、それぞれを短く簡潔な用語で記述しました。合計で438Kの画像 - テキストペアを組み立て、WhyLesionCLIPの学習に使用しました。
学習の詳細
OpenCLIPの学習スクリプトを利用し、ViT - L/14をバックボーンとして選択しました。4台のRTX A6000 GPUで10エポック、バッチサイズ128、学習率1e−5で学習を行いました。検証セットでの最低の対照損失に基づいてチェックポイントを選択しました。
評価
テストデータ
5つの皮膚病変分類データセットで評価を行いました:HAM10000、BCN20000、PAD - UFES - 20、Melanoma、およびUWaterloo。上記の5つのデータセットでのゼロショットと線形プロービングの精度を報告します。
ベースライン
様々なCLIPモデルを比較しました。OpenAI - CLIP、OpenCLIP、PubMedCLIP、BioMedCLIP、PMC - CLIP、およびMedCLIPです。これらのモデルをゼロショットと線形プローブのシナリオで評価しました。ゼロショットでは、GPT - 4が各クラスのプロンプトを生成し、画像とプロンプトのコサイン類似度のアンサンブルを各クラスのスコアとして使用します。線形プロービングでは、CLIPモデルを画像エンコーダとして使用し、ロジスティック回帰のための特徴を抽出します。さらに、DenseNet - 121(事前学習データセットで交差エントロピー損失を使ってファインチューニング)を線形プロービングのベースラインとして含めました。
結果
以下の図は、5つの皮膚病変データセットでの異なるモデルの平均ゼロショットと線形プローブの性能を示しています。

🔧 技術詳細
WhyLesionCLIPは、現在の対照目的がデータからの情報を十分に活用できていない可能性があり、例えば異なる患者の画像を比較するなどのショートカットを取っている可能性があります。今後の研究では、より適切な目的と大規模なデータ収集を探索し、より堅牢な医療基盤モデルを開発する必要があります。
📄 ライセンス
このモデルはMITライセンスの下で提供されています。
📄 引用
このモデルをあなたの研究で使用する場合は、以下の論文を引用してください。
@article{yang2024textbook,
title={A Textbook Remedy for Domain Shifts: Knowledge Priors for Medical Image Analysis},
author={Yue Yang and Mona Gandhi and Yufei Wang and Yifan Wu and Michael S. Yao and Chris Callison-Burch and James C. Gee and Mark Yatskar},
journal={arXiv preprint arXiv:2405.14839},
year={2024}
}