模型概述
模型特點
模型能力
使用案例
🚀 RS-M-CLIP:遙感領域的多語言視覺語言預訓練模型
RS-M-CLIP是一個用於遙感領域的多語言視覺語言模型,它通過對多語言CLIP模型進行微調,結合自監督方法和標準CLIP目標,在多種視覺語言任務中取得了先進的成果,支持包括英語、中文等多種語言。
🚀 快速開始
這是文章“Multilingual Vision-Language Pre-training for the Remote Sensing Domain”的官方代碼庫。
作者信息
- João Daniel Silva,INESC-ID,里斯本大學高等理工學院
- João Magalhães,NOVA-LINCS,新里斯本大學科學與技術學院
- Devis Tuia,ECEO,洛桑聯邦理工學院
- Bruno Martins,INESC-ID & LUMLIS,里斯本大學高等理工學院
✨ 主要特性
- 多語言支持:支持英語、葡萄牙語、西班牙語、法語、德語、荷蘭語、意大利語、中文、韓語和俄語。
- 先進性能:在多種視覺語言任務中取得了最先進的結果,包括跨模態和多語言圖像文本檢索,以及零樣本圖像分類。
- 數據高效:在不增加訓練數據量的情況下,通過聚合可用的圖像 - 文本對數據集、使用自蒸餾方法和多語言翻譯數據,提高了CLIP的性能。
📦 安裝指南
文檔未提及安裝步驟,暫不提供。
💻 使用示例
基礎用法
要加載模型,OpenCLIP庫將加載存儲在Hugging Face Hub上的權重。
import torch
import open_clip
model, preprocess, preprocess_val = open_clip.create_model_and_transforms('hf-hub:joaodaniel/RS-M-CLIP')
tokenizer = open_clip.get_tokenizer('hf-hub:joaodaniel/RS-M-CLIP')
高級用法
英文圖像分類
model = model.eval()
from PIL import Image
image = preprocess(Image.open('figs/airplane_004.jpg')).unsqueeze(0)
text_queries = [
"A residential area with houses.",
"Blocks of buildings can be seen in the factory .",
"Dense residential areas on both sides of the road .",
"Many airplanes in the open area.",
"A cute cat",
]
text = tokenizer(text_queries)
with torch.no_grad():
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).cpu().numpy()[0]
for query, prob in zip(text_queries, text_probs):
print(f"{query:<40} {prob * 100:5.1f}%")
輸出結果如下:
A residential area with houses. 0.0%
Blocks of buildings can be seen in the factory . 0.0%
Dense residential areas on both sides of the road . 0.0%
Many airplanes in the open area. 100.0%
A cute cat 0.0%
西班牙文圖像分類
model = model.eval()
from PIL import Image
image = preprocess(Image.open('figs/golf_course_004.jpg')).unsqueeze(0)
text_queries = [
"Una zona residencial con casas.",
"Se pueden ver bloques de edificios en la fábrica.",
"Zonas residenciales densas a ambos lados de la carretera.",
"Muchos aviones en el área abierta.",
"Un lindo gato",
"Un campo de golf con bunkers."
]
text = tokenizer(text_queries)
with torch.no_grad():
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).cpu().numpy()[0]
for query, prob in zip(text_queries, text_probs):
print(f"{query:<60} {prob * 100:5.1f}%")
輸出結果如下:
Una zona residencial con casas. 0.0%
Se pueden ver bloques de edificios en la fábrica. 0.0%
Zonas residenciales densas a ambos lados de la carretera. 0.0%
Muchos aviones en el área abierta. 0.0%
Un lindo gato 0.0%
Un campo de golf con bunkers. 100.0%
📚 詳細文檔
摘要
基於對比語言 - 圖像預訓練(CLIP)的方法如今廣泛用於支持涉及遙感數據的視覺語言任務,如跨模態檢索。CLIP在該特定領域的適應主要依賴於使用標準對比目標對模型進行微調,使用現有的人工標註圖像 - 文本數據集,或使用從遙感圖像的其他註釋(如對象類別)派生的圖像 - 文本對合成數據。不同預訓練機制的使用受到的關注較少,只有少數例外考慮了多語言輸入。這項工作提出了一種用於遙感領域的新型視覺語言模型,探索了對多語言CLIP模型的微調,並測試了一種基於對齊單個輸入圖像的局部和全局表示的自監督方法,同時結合標準CLIP目標。模型訓練依賴於組裝預先存在的與英文文本配對的遙感圖像數據集,然後使用自動機器翻譯將文本翻譯成另外九種語言。我們表明,翻譯數據確實有幫助,例如也提高了在英文上的性能。我們得到的模型,我們稱之為遙感多語言CLIP(RS - M - CLIP),在各種視覺語言任務中取得了最先進的結果,包括跨模態和多語言圖像 - 文本檢索,或零樣本圖像分類。
描述
(Remote Sensing Multilingual CLIP)RS - M - CLIP是一個基於CLIP的遙感領域模型。我們通過聚合可用的圖像 - 文本對數據集、結合自蒸餾方法和標準對比學習目標,並使用不同語言的翻譯文本,在不增加訓練數據量的情況下提高了CLIP的性能。我們從一個具有多語言文本編碼器和ViT - B視覺編碼器的CLIP模型開始訓練:https://huggingface.co/laion/CLIP-ViT-B-32-xlm-roberta-base-laion5B-s13B-b90k。我們的模型在跨模態圖像 - 文本檢索中取得了最先進的結果,並且具有多語言能力,能夠處理英語以外的其他語言。
支持的語言:英語、葡萄牙語、西班牙語、法語、德語、荷蘭語、意大利語、中文、韓語和俄語。
你可以從Hugging Face Hub倉庫下載RS - M - CLIP:https://huggingface.co/joaodaniel/RS-M-CLIP
🔧 技術細節
文檔未提及技術實現細節,暫不提供。
📄 許可證
本項目採用MIT許可證。
📖 引用
如果您覺得我們的工作有用,請按以下格式引用:
@article{silva2024large,
title={Multilingual Vision-Language Pre-training for the Remote Sensing Domain},
author={Silva, Jo{\~a}o Daniel and Magalh{\~a}es, Jo{\~a}o and Tuia, Devis and Martins, Bruno},
journal={arXiv:2410.23370},
year={2024}
}








