🚀 RS-M-CLIP: リモートセンシングドメイン向けの多言語ビジョン言語事前学習モデル
このリポジトリは、論文「Multilingual Vision-Language Pre-training for the Remote Sensing Domain」の公式リポジトリです。
著者:
João Daniel Silva, INESC-ID , Instituto Superior Técnico, University of Lisbon
João Magalhães, NOVA-LINCS, Faculty of Science and Technology, NOVA University
Devis Tuia, ECEO, Ecole Polytechnique Fédérale de Lausanne
Bruno Martins, INESC-ID & LUMLIS, Instituto Superior Técnico, University of Lisbon
概要
対照的な言語画像事前学習(CLIP)に基づく手法は、現在、クロスモーダル検索などのリモートセンシングデータを含むビジョンと言語のタスクをサポートするために広く使用されています。CLIPをこの特定のドメインに適応させるには、既存の人間がラベル付けした画像キャプションデータセットを使用して、またはリモートセンシング画像上の他の注釈(例えば、オブジェクトクラス)から派生した画像キャプションペアに対応する合成データを使用して、標準的な対照的目的でモデルを微調整することに依存しています。異なる事前学習メカニズムの使用にはあまり注目が集まっておらず、多言語入力を考慮した例外はほとんどありません。この研究では、リモートセンシングドメイン向けの新しいビジョンと言語のモデルを提案し、多言語CLIPモデルの微調整を探索し、個々の入力画像からの局所的およびグローバルな表現を整列させることに基づく自己教師付き学習手法を標準的なCLIP目的とともにテストします。モデルのトレーニングは、英語のキャプションが付けられた既存のリモートセンシング画像のデータセットを集め、その後自動機械翻訳を使用してさらに9つの言語に翻訳することに依存しています。翻訳されたデータが実際に役立つことを示しており、例えば英語でのパフォーマンスも向上します。私たちがリモートセンシング多言語CLIP(RS-M-CLIP)と名付けた結果のモデルは、クロスモーダルおよび多言語の画像テキスト検索やゼロショット画像分類など、さまざまなビジョンと言語のタスクで最先端の結果を得ています。
説明
(Remote Sensing Multilingual CLIP)RS-M-CLIPは、リモートセンシングドメイン向けのCLIPベースのモデルです。利用可能な画像キャプションペアのデータセットを集約し、対照的学習目的とともに自己蒸留手法を使用し、異なる言語に翻訳されたキャプションを使用することで、トレーニングデータの量を増やさずにCLIPのパフォーマンスを向上させます。私たちは、多言語テキストエンコーダを持つCLIPモデルからトレーニングを開始し、ビジョンエンコーダとしてViT-Bを使用しました:https://huggingface.co/laion/CLIP-ViT-B-32-xlm-roberta-base-laion5B-s13B-b90k。当社のモデルは、クロスモーダル画像テキスト検索において最先端の結果を達成し、多言語能力を持ち、英語以外の言語も処理できます。
サポートされる言語: 英語、ポルトガル語、スペイン語、フランス語、ドイツ語、オランダ語、イタリア語、中国語、韓国語、ロシア語。
RS-M-CLIPは、huggingface-hubのリポジトリからダウンロードできます:https://huggingface.co/joaodaniel/RS-M-CLIP
🚀 クイックスタート
💻 使用例
基本的な使用法
モデルをロードするには、OpenCLIPライブラリを使用してhuggingface 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%
📄 ライセンス
このモデルは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}
}