Rclip
RCLIPは、放射線画像分野でCLIPモデルをファインチューニングした視覚-言語モデルで、医療画像分析に最適化されています。
ダウンロード数 42
リリース時間 : 7/6/2023
モデル概要
このモデルは、CLIPの画像エンコーディング能力とBiomedVLP-CXR-BERTのテキストエンコーディング能力を組み合わせ、ROCOデータセットでファインチューニングされており、医療画像のゼロショット分類や検索タスクに適しています。
モデル特徴
医療分野最適化
放射線画像と医療レポートに特化してファインチューニングされ、医療分野でのパフォーマンスを向上
デュアルエンコーダーアーキテクチャ
視覚とテキストのエンコーダーを組み合わせ、クロスモーダル検索と理解をサポート
ゼロショット能力
特定のトレーニングなしで新しいカテゴリの画像分類が可能
モデル能力
医療画像分類
クロスモーダル検索
ゼロショット学習
医療画像理解
使用事例
医療画像分析
放射線画像分類
胸部X線、CTスキャンなどの医療画像を分類
ROCOテストセットで検証損失0.3388
医療画像検索
テキスト記述に基づいて関連する医療画像を検索
🚀 RCLIP (放射線画像とそのキャプションでファインチューニングされたClipモデル)
このモデルは、画像エンコーダとしてopenai/clip-vit-large-patch14、テキストエンコーダとしてmicrosoft/BiomedVLP-CXR-BERT-generalを使用し、ROCOデータセットでファインチューニングされたバージョンです。評価セットでは以下の結果を達成しています。
- 損失: 0.3388
🚀 クイックスタート
このモデルは、画像検索やゼロショット画像分類などのタスクに使用できます。以下に具体的な使用方法を説明します。
✨ 主な機能
- 画像検索: 画像の埋め込みを保存し、クエリに基づいて類似する画像を検索できます。
- ゼロショット画像分類: 事前に学習していないクラスに対しても画像を分類できます。
📦 インストール
このモデルを使用するには、transformers
ライブラリが必要です。以下のコマンドでインストールできます。
pip install transformers
💻 使用例
基本的な使用法
画像検索
画像の埋め込みを保存するコードは以下の通りです。
from PIL import Image
import numpy as np
import pickle, os, torch
from transformers import VisionTextDualEncoderModel, VisionTextDualEncoderProcessor
# load model
model = VisionTextDualEncoderModel.from_pretrained("kaveh/rclip")
processor = VisionTextDualEncoderProcessor.from_pretrained("kaveh/rclip")
# TO-DO
images_path = "/path/to/images/"
images = [os.path.join(images_path,i) for i in os.listdir(images_path) if i.endswith(".jpg")]
# generate embeddings of images in your dataset
image_embeds = []
for img in images:
with torch.no_grad():
inputs = processor(text=None, images=Image.open(img), return_tensors="pt", padding=True)
outputs = model.get_image_features(**inputs)[0].numpy()
image_embeds.append(outputs)
# save images embeddings in a pickle file
with open("embeddings.pkl", 'wb') as f:
pickle.dump(np.array(image_embeds), f)
クエリに基づいて画像を検索するコードは以下の通りです。
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
from PIL import Image
import pickle, torch, os
from transformers import VisionTextDualEncoderModel, VisionTextDualEncoderProcessor
# search a query in embeddings
query = "Chest X-Ray photos"
# embed the query
inputs = processor(text=query, images=None, return_tensors="pt", padding=True)
with torch.no_grad():
query_embedding = model.get_text_features(**inputs)[0].numpy()
# load image embeddings
with open("embeddings.pkl", 'rb') as f:
image_embeds = pickle.load(f)
# find similar images indices
def find_k_similar_images(query_embedding, image_embeds, k=2):
similarities = cosine_similarity(query_embedding.reshape(1, -1), image_embeds)
closest_indices = np.argsort(similarities[0])[::-1][:k]
return closest_indices
similar_image_indices = find_k_similar_images(query_embedding, image_embeds, k=k)
# TO-DO
images_path = "/path/to/images/"
images = [os.path.join(images_path,i) for i in os.listdir(images_path) if i.endswith(".jpg")]
# get image paths
similar_image_names = [images[index] for index in similar_image_indices]
Image.open(similar_image_names[0])
ゼロショット画像分類
ゼロショット画像分類のコードは以下の通りです。
import requests
from PIL import Image
import matplotlib.pyplot as plt
from transformers import VisionTextDualEncoderModel, VisionTextDualEncoderProcessor
model = VisionTextDualEncoderModel.from_pretrained("kaveh/rclip")
processor = VisionTextDualEncoderProcessor.from_pretrained("kaveh/rclip")
url = "https://huggingface.co/spaces/kaveh/radiology-image-retrieval/resolve/main/images/ROCO_09402.jpg"
image = Image.open(requests.get(url, stream=True).raw)
possible_class_names = ["Chest X-Ray", "Brain MRI", "Abdominal CT Scan", "Ultrasound", "OPG"]
inputs = processor(text=possible_class_names, images=image, return_tensors="pt", padding=True)
probs = model(**inputs).logits_per_image.softmax(dim=1).squeeze()
print("".join([x[0] + ": " + x[1] + "\n" for x in zip(possible_class_names, [format(prob, ".4%") for prob in probs])]))
image
📚 ドキュメント
ヒートマップ
ROCOデータセットのテスト分割における最初の30サンプルの画像とそのキャプションの類似度スコアのヒートマップは以下の通りです。
メトリクス
トレーニングと検証の損失メトリクスは以下の表に示されています。
トレーニング損失 | エポック | ステップ | 検証損失 |
---|---|---|---|
0.0974 | 4.13 | 22500 | 0.3388 |
すべてのステップを表示するには展開してください
トレーニング損失 | エポック | ステップ | 検証損失 |
---|---|---|---|
0.7951 | 0.09 | 500 | 1.1912 |
0.5887 | 0.18 | 1000 | 0.9833 |
0.5023 | 0.28 | 1500 | 0.8459 |
0.4709 | 0.37 | 2000 | 0.8479 |
0.4484 | 0.46 | 2500 | 0.7667 |
0.4319 | 0.55 | 3000 | 0.8092 |
0.4181 | 0.64 | 3500 | 0.6964 |
0.4107 | 0.73 | 4000 | 0.6463 |
0.3723 | 0.83 | 4500 | 0.7893 |
0.3746 | 0.92 | 5000 | 0.6863 |
0.3667 | 1.01 | 5500 | 0.6910 |
0.3253 | 1.1 | 6000 | 0.6863 |
0.3274 | 1.19 | 6500 | 0.6445 |
0.3065 | 1.28 | 7000 | 0.5908 |
0.2834 | 1.38 | 7500 | 0.6138 |
0.293 | 1.47 | 8000 | 0.6515 |
0.303 | 1.56 | 8500 | 0.5806 |
0.2638 | 1.65 | 9000 | 0.5587 |
0.2593 | 1.74 | 9500 | 0.5216 |
0.2451 | 1.83 | 10000 | 0.5283 |
0.2468 | 1.93 | 10500 | 0.5001 |
0.2295 | 2.02 | 11000 | 0.4975 |
0.1953 | 2.11 | 11500 | 0.4750 |
0.1954 | 2.2 | 12000 | 0.4572 |
0.1737 | 2.29 | 12500 | 0.4731 |
0.175 | 2.38 | 13000 | 0.4526 |
0.1873 | 2.48 | 13500 | 0.4890 |
0.1809 | 2.57 | 14000 | 0.4210 |
0.1711 | 2.66 | 14500 | 0.4197 |
0.1457 | 2.75 | 15000 | 0.3998 |
0.1583 | 2.84 | 15500 | 0.3923 |
0.1579 | 2.94 | 16000 | 0.3823 |
0.1339 | 3.03 | 16500 | 0.3654 |
0.1164 | 3.12 | 17000 | 0.3592 |
0.1217 | 3.21 | 17500 | 0.3641 |
0.119 | 3.3 | 18000 | 0.3553 |
0.1151 | 3.39 | 18500 | 0.3524 |
0.119 | 3.49 | 19000 | 0.3452 |
0.102 | 3.58 | 19500 | 0.3439 |
0.1085 | 3.67 | 20000 | 0.3422 |
0.1142 | 3.76 | 20500 | 0.3396 |
0.1038 | 3.85 | 21000 | 0.3392 |
0.1143 | 3.94 | 21500 | 0.3390 |
0.0983 | 4.04 | 22000 | 0.3390 |
0.0974 | 4.13 | 22500 | 0.3388 |
ハイパーパラメータ
トレーニング中に使用されたハイパーパラメータは以下の通りです。
- 学習率: 5e-05
- トレーニングバッチサイズ: 24
- 評価バッチサイズ: 24
- シード: 42
- オプティマイザ: Adam (betas=(0.9,0.999), epsilon=1e-08)
- 学習率スケジューラタイプ: cosine
- 学習率スケジューラウォームアップステップ: 500
- エポック数: 8.0
フレームワークバージョン
使用されたフレームワークのバージョンは以下の通りです。
属性 | 詳細 |
---|---|
モデルタイプ | RCLIP (Clipモデルを放射線画像とそのキャプションでファインチューニング) |
トレーニングデータ | ROCOデータセット |
Transformers | 4.31.0.dev0 |
Pytorch | 2.0.1+cu117 |
Datasets | 2.13.1 |
Tokenizers | 0.13.3 |
🔧 技術詳細
このモデルは、画像エンコーダとしてopenai/clip-vit-large-patch14
、テキストエンコーダとしてmicrosoft/BiomedVLP-CXR-BERT-general
を使用し、ROCOデータセットでファインチューニングされています。トレーニングにはAdamオプティマイザとコサイン学習率スケジューラが使用されています。
📄 ライセンス
このモデルはGPL-3.0ライセンスの下で提供されています。
引用
@misc{https://doi.org/10.57967/hf/0896,
doi = {10.57967/HF/0896},
url = {https://huggingface.co/kaveh/rclip},
author = {{Kaveh Shahhosseini}},
title = {rclip},
publisher = {Hugging Face},
year = {2023}
}
Clip Vit Large Patch14 336
Vision Transformerアーキテクチャに基づく大規模な視覚言語事前学習モデルで、画像とテキストのクロスモーダル理解をサポートします。
テキスト生成画像
Transformers

C
openai
5.9M
241
Fashion Clip
MIT
FashionCLIPはCLIPを基に開発された視覚言語モデルで、ファッション分野に特化してファインチューニングされ、汎用的な製品表現を生成可能です。
テキスト生成画像
Transformers 英語

F
patrickjohncyh
3.8M
222
Gemma 3 1b It
Gemma 3はGoogleが提供する軽量で先進的なオープンモデルシリーズで、Geminiモデルと同じ研究と技術に基づいて構築されています。このモデルはマルチモーダルモデルであり、テキストと画像の入力を処理し、テキスト出力を生成できます。
テキスト生成画像
Transformers

G
google
2.1M
347
Blip Vqa Base
Bsd-3-clause
BLIPは統一された視覚言語事前学習フレームワークで、視覚質問応答タスクに優れており、言語-画像共同トレーニングによりマルチモーダル理解と生成能力を実現
テキスト生成画像
Transformers

B
Salesforce
1.9M
154
CLIP ViT H 14 Laion2b S32b B79k
MIT
OpenCLIPフレームワークを使用してLAION-2B英語データセットでトレーニングされた視覚-言語モデルで、ゼロショット画像分類とクロスモーダル検索タスクをサポートします
テキスト生成画像
Safetensors
C
laion
1.8M
368
CLIP ViT B 32 Laion2b S34b B79k
MIT
OpenCLIPフレームワークを使用し、LAION-2B英語サブセットでトレーニングされた視覚-言語モデルで、ゼロショット画像分類とクロスモーダル検索をサポート
テキスト生成画像
Safetensors
C
laion
1.1M
112
Pickscore V1
PickScore v1はテキストから生成された画像に対するスコアリング関数で、人間の選好予測、モデル性能評価、画像ランキングなどのタスクに使用できます。
テキスト生成画像
Transformers

P
yuvalkirstain
1.1M
44
Owlv2 Base Patch16 Ensemble
Apache-2.0
OWLv2はゼロショットテキスト条件付き物体検出モデルで、テキストクエリを使用して画像内のオブジェクトを位置特定できます。
テキスト生成画像
Transformers

O
google
932.80k
99
Llama 3.2 11B Vision Instruct
Llama 3.2はMetaがリリースした多言語マルチモーダル大規模言語モデルで、画像テキストからテキストへの変換タスクをサポートし、強力なクロスモーダル理解能力を備えています。
テキスト生成画像
Transformers 複数言語対応

L
meta-llama
784.19k
1,424
Owlvit Base Patch32
Apache-2.0
OWL-ViTはゼロショットのテキスト条件付き物体検出モデルで、特定カテゴリの訓練データなしにテキストクエリで画像内のオブジェクトを検索できます。
テキスト生成画像
Transformers

O
google
764.95k
129
おすすめAIモデル
Llama 3 Typhoon V1.5x 8b Instruct
タイ語専用に設計された80億パラメータの命令モデルで、GPT-3.5-turboに匹敵する性能を持ち、アプリケーションシナリオ、検索拡張生成、制限付き生成、推論タスクを最適化
大規模言語モデル
Transformers 複数言語対応

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-TinyはSODAデータセットでトレーニングされた超小型対話モデルで、エッジデバイス推論向けに設計されており、体積はCosmo-3Bモデルの約2%です。
対話システム
Transformers 英語

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
RoBERTaアーキテクチャに基づく中国語抽出型QAモデルで、与えられたテキストから回答を抽出するタスクに適しています。
質問応答システム 中国語
R
uer
2,694
98