🚀 模型卡片:clip-rsicd
本模型是基于 OpenAI的CLIP 进行微调的。其设计目的是专门针对遥感图像,提升零样本图像分类、文本到图像以及图像到图像的检索能力。
🚀 快速开始
模型详情
- 模型日期:2021年7月
- 模型类型:基础模型使用ViT - B/32 Transformer架构作为图像编码器,并使用掩码自注意力Transformer作为文本编码器。这些编码器通过对比损失进行训练,以最大化(图像,文本)对的相似度。
- 模型版本:我们为
clip-rsicd
模型发布了多个检查点。有关每个检查点在零样本分类上的性能指标,请参考 我们的GitHub仓库。
- 训练:要复现微调过程,可以使用发布的 脚本。该模型在1个TPU - v3 - 8上,使用批量大小为1024、带有线性预热和衰减的adafactor优化器进行训练,峰值学习率为1e - 4。完整的训练日志可以在 WandB 上找到。
- 演示:通过 此演示 查看模型的文本到图像和图像到图像的检索能力。
- 文档:在Colab上使用TPU通过HuggingFace和flax/jax对RSICD上的CLIP进行微调
与Transformers一起使用
from PIL import Image
import requests
from transformers import CLIPProcessor, CLIPModel
model = CLIPModel.from_pretrained("flax-community/clip-rsicd")
processor = CLIPProcessor.from_pretrained("flax-community/clip-rsicd")
url = "https://raw.githubusercontent.com/arampacha/CLIP-rsicd/master/data/stadium_1.jpg"
image = Image.open(requests.get(url, stream=True).raw)
labels = ["residential area", "playground", "stadium", "forrest", "airport"]
inputs = processor(text=[f"a photo of a {l}" for l in labels], images=image, return_tensors="pt", padding=True)
outputs = model(**inputs)
logits_per_image = outputs.logits_per_image
probs = logits_per_image.softmax(dim=1)
for l, p in zip(labels, probs[0]):
print(f"{l:<16} {p:.4f}")
在Colab上尝试
✨ 主要特性
模型使用
预期用途
该模型是为研究社区提供的研究成果。我们希望该模型能帮助研究人员更好地理解和探索零样本、任意图像分类。此外,我们设想它可应用于国防和执法、气候变化和全球变暖等领域,甚至一些消费级应用。部分应用列表可在 此处 找到。总体而言,我们认为此类模型可作为人类搜索大量图像集的数字助手。我们也希望它能用于跨学科研究,探讨此类模型的潜在影响 - CLIP论文中包含了对潜在下游影响的讨论,可作为此类分析的示例。
主要预期用途
这些模型的主要预期用户是AI研究人员。我们主要设想研究人员使用该模型,以更好地理解计算机视觉模型的鲁棒性、泛化能力以及其他性能、偏差和局限性。
数据
该模型在公开可用的遥感图像字幕数据集上进行训练,即 RSICD、UCM 和 Sydney。有关所用数据集的更多信息,请参阅 我们的项目页面。
性能和局限性
性能
模型名称 |
k = 1 |
k = 3 |
k = 5 |
k = 10 |
原始CLIP |
0.572 |
0.745 |
0.837 |
0.939 |
clip - rsicd(本模型) |
0.843 |
0.958 |
0.977 |
0.993 |
局限性
该模型在遥感图像数据上进行了微调,但可能包含原始CLIP模型的一些偏差和局限性。有关详细信息,请参考 CLIP模型卡片。
📦 信息表格
属性 |
详情 |
模型类型 |
基础模型使用ViT - B/32 Transformer架构作为图像编码器,并使用掩码自注意力Transformer作为文本编码器。这些编码器通过对比损失进行训练,以最大化(图像,文本)对的相似度。 |
训练数据 |
该模型在公开可用的遥感图像字幕数据集上进行训练,即 RSICD、UCM 和 Sydney。 |