Rclip
RCLIP是基於CLIP模型在放射影像領域微調的視覺-語言模型,專為醫學影像分析優化。
下載量 42
發布時間 : 7/6/2023
模型概述
該模型結合了CLIP的圖像編碼能力和BiomedVLP-CXR-BERT的文本編碼能力,在ROCO數據集上微調,適用於醫學影像的零樣本分類和檢索任務。
模型特點
醫學領域優化
針對放射影像和醫學報告進行專門微調,提升醫學領域的表現
雙編碼器架構
結合視覺和文本編碼器,支持跨模態檢索和理解
零樣本能力
無需特定訓練即可對新類別進行圖像分類
模型能力
醫學圖像分類
跨模態檢索
零樣本學習
醫學圖像理解
使用案例
醫學影像分析
放射影像分類
對胸部X光、CT掃描等醫學影像進行分類
在ROCO測試集上驗證損失0.3388
醫學圖像檢索
根據文本描述檢索相關醫學影像
🚀 RCLIP(在放射影像及其說明上微調的Clip模型)
RCLIP是一個經過微調的模型,可用於放射影像的檢索和零樣本圖像分類,在醫學影像領域具有重要的應用價值。
🚀 快速開始
本模型是 openai/clip-vit-large-patch14 作為圖像編碼器和 microsoft/BiomedVLP-CXR-BERT-general 作為文本編碼器,在 ROCO數據集 上微調後的版本。在評估集上取得了以下結果:
- 損失值:0.3388
✨ 主要特性
- 圖像檢索:可以對放射影像進行檢索,通過保存圖像嵌入和查詢圖像的方式,找到相似的圖像。
- 零樣本圖像分類:無需大量標註數據,即可對圖像進行分類。
- 可視化:可以生成圖像與說明之間相似度得分的熱力圖。
📦 安裝指南
文檔未提及安裝步驟,故跳過此章節。
💻 使用示例
基礎用法
保存圖像嵌入
點擊查看代碼
from PIL import Image
import numpy as np
import pickle, os, torch
from transformers import VisionTextDualEncoderModel, VisionTextDualEncoderProcessor
# 加載模型
model = VisionTextDualEncoderModel.from_pretrained("kaveh/rclip")
processor = VisionTextDualEncoderProcessor.from_pretrained("kaveh/rclip")
# 待辦事項
images_path = "/path/to/images/"
images = [os.path.join(images_path,i) for i in os.listdir(images_path) if i.endswith(".jpg")]
# 生成數據集中圖像的嵌入
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)
# 將圖像嵌入保存到pickle文件中
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
# 在嵌入中搜索查詢
query = "Chest X-Ray photos"
# 對查詢進行嵌入
inputs = processor(text=query, images=None, return_tensors="pt", padding=True)
with torch.no_grad():
query_embedding = model.get_text_features(**inputs)[0].numpy()
# 加載圖像嵌入
with open("embeddings.pkl", 'rb') as f:
image_embeds = pickle.load(f)
# 查找相似圖像的索引
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)
# 待辦事項
images_path = "/path/to/images/"
images = [os.path.join(images_path,i) for i in os.listdir(images_path) if i.endswith(".jpg")]
# 獲取圖像路徑
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
框架版本
- Transformers 4.31.0.dev0
- Pytorch 2.0.1+cu117
- Datasets 2.13.1
- Tokenizers 0.13.3
🔧 技術細節
本模型基於CLIP架構,通過在放射影像及其說明上進行微調,使其能夠更好地適應醫學影像領域的任務。在微調過程中,使用了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架構的中文抽取式問答模型,適用於從給定文本中提取答案的任務。
問答系統 中文
R
uer
2,694
98