Hub documentation

Использование OpenCLIP на Hugging Face

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Использование OpenCLIP на Hugging Face

OpenCLIP — это реализация с открытым исходным кодом CLIP от OpenAI.

Исследование OpenCLIP на Hub

Модели OpenCLIP можно найти, применив фильтр слева на странице моделей.

Модели OpenCLIP, размещённые на Hub, имеют карточку модели с полезной информацией. Благодаря интеграции OpenCLIP с Hugging Face Hub вы можете загрузить модели OpenCLIP всего несколькими строками кода. Также вы можете развернуть эти модели с помощью Inference Endpoints.

Установка

Для начала вы можете воспользоваться руководством по установке OpenCLIP. Также можно установить пакет одной командой через pip:

$ pip install open_clip_torch

Использование существующих моделей

Все модели OpenCLIP можно легко загрузить из Hub:

import open_clip

model, preprocess = open_clip.create_model_from_pretrained('hf-hub:laion/CLIP-ViT-g-14-laion2B-s12B-b42K')
tokenizer = open_clip.get_tokenizer('hf-hub:laion/CLIP-ViT-g-14-laion2B-s12B-b42K')

После загрузки вы можете закодировать изображение и текст для выполнения классификации изображений в режиме zero-shot:

import torch
from PIL import Image
import requests

url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
image = preprocess(image).unsqueeze(0)
text = tokenizer(["a diagram", "a dog", "a cat"])

with torch.no_grad(), torch.cuda.amp.autocast():
    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)

print("Label probs:", text_probs) 

Он выводит вероятность каждого возможного класса:

Label probs: tensor([[0.0020, 0.0034, 0.9946]])

Если вы хотите загрузить конкретную модель OpenCLIP, нажмите Use in OpenCLIP на карточке модели — и вы получите готовый фрагмент кода!

Дополнительные ресурсы

Update on GitHub