模型简介
模型特点
模型能力
使用案例
🚀 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}
}








