/ Модель

Характеристики

Лицензия
Своя лицензия
Опубликована
1 ноя 2023

japanese-stable-clip-vit-l-16

ЭмбеддингиТекст → embedding7 профессий

Японская CLIP-модель Stability AI для сопоставления изображений и текстов, классификации изображений без обучения и поиска изображений по запросу.

131скачиваний за 30 дней28лайковвеса обновлены10 июл 2024

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Japanese Stable CLIP ViT-L/16 — модель Stability AI, которая сопоставляет японские тексты и изображения в общем пространстве эмбеддингов. Она подходит для классификации изображений без специального обучения и поиска изображений по текстовому запросу, а также может быть компонентом систем генерации изображений и описаний.

В модели используется визуальный энкодер ViT-L/16 и 12-слойный текстовый энкодер BERT с японским токенизатором на основе rinna/japanese-roberta-base. Для обучения применялась функция потерь SigLIP; среди обучающих данных — CC12M с переводами описаний на японский и MS-COCO со STAIR Captions. Модель рассчитана на японский язык и задачи сопоставления текста с изображением.

Модель распространяется по STABILITY AI COMMUNITY LICENSE; по вопросам коммерческого использования Stability AI предлагает обращаться отдельно. Обучающие данные могли содержать неприемлемые материалы, несмотря на фильтрацию, поэтому результаты требуют осторожной проверки при использовании в производственных системах.

Сценарии применения

  • классификация изображений по японским текстовым меткам без дообучения
  • поиск изображений по японскому запросу
  • сопоставление японских описаний с изображениями
  • извлечение совместимых эмбеддингов текста и изображений
  • использование как компонента японской системы генерации изображений или описаний

Ограничения

Обучающие данные могли содержать оскорбительный или неприемлемый контент, несмотря на фильтрацию; результаты следует проверять перед производственным использованием. Коммерческое использование регулируется STABILITY AI COMMUNITY LICENSE; для таких вопросов разработчик предлагает обращаться к Stability AI.

Для каких профессий подходит7

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Japanese Stable CLIP ViT-L/16

Please note: for commercial usage of this model, please see https://stability.ai/license

商用利用に関する日本語での問い合わせは partners-jp@stability.ai までお願い致します。

Model Details

Japanese Stable CLIP is a Japanese CLIP (Contrastive Language-Image Pre-Training) model that enables to map both Japanese texts and images to the same embedding space. This model alone is capable of tasks such as zero-shot image classification and text-to-image retrieval. Furthermore, when combined with other components, it can be used as part of generative models, such as image-to-text and text-to-image generation.

Usage

  1. Install packages
pip install ftfy pillow requests transformers torch sentencepiece protobuf
  1. Run!
from typing import Union, List
import ftfy, html, re, io
import requests
from PIL import Image
import torch
from transformers import AutoModel, AutoTokenizer, AutoImageProcessor, BatchFeature

# taken from https://github.com/mlfoundations/open_clip/blob/main/src/open_clip/tokenizer.py#L65C8-L65C8
def basic_clean(text):
    text = ftfy.fix_text(text)
    text = html.unescape(html.unescape(text))
    return text.strip()

def whitespace_clean(text):
    text = re.sub(r"\s+", " ", text)
    text = text.strip()
    return text

def tokenize(
    tokenizer,
    texts: Union[str, List[str]],
    max_seq_len: int = 77,
):
    """
    This is a function that have the original clip's code has.
    https://github.com/openai/CLIP/blob/main/clip/clip.py#L195
    """
    if isinstance(texts, str):
        texts = [texts]
    texts = [whitespace_clean(basic_clean(text)) for text in texts]

    inputs = tokenizer(
        texts,
        max_length=max_seq_len - 1,
        padding="max_length",
        truncation=True,
        add_special_tokens=False,
    )
    # add bos token at first place
    input_ids = [[tokenizer.bos_token_id] + ids for ids in inputs["input_ids"]]
    attention_mask = [[1] + am for am in inputs["attention_mask"]]
    position_ids = [list(range(0, len(input_ids[0])))] * len(texts)

    return BatchFeature(
        {
            "input_ids": torch.tensor(input_ids, dtype=torch.long),
            "attention_mask": torch.tensor(attention_mask, dtype=torch.long),
            "position_ids": torch.tensor(position_ids, dtype=torch.long),
        }
    )

device = "cuda" if torch.cuda.is_available() else "cpu"
model_path = "stabilityai/japanese-stable-clip-vit-l-16"
model = AutoModel.from_pretrained(model_path, trust_remote_code=True).to(device)
tokenizer = AutoTokenizer.from_pretrained(model_path)
processor = AutoImageProcessor.from_pretrained(model_path)

# Run!
image = Image.open(io.BytesIO(requests.get('https://images.pexels.com/photos/2253275/pexels-photo-2253275.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260').content))
image = processor(images=image, return_tensors="pt").to(device)
text = tokenize(
    tokenizer=tokenizer,
    texts=["犬", "猫", "象"],
).to(device)

with torch.no_grad():
    image_features = model.get_image_features(**image)
    text_features = model.get_text_features(**text)
    text_probs = (100.0 * image_features @ text_features.T).softmax(dim=-1)

print("Label probs:", text_probs) 
# [[1.0, 0.0, 0.0]]

Model Details

ModelImageNet top-1 accuracy*
Japanese Stable CLIP ViT-L/1662.06
rinna/japanese-cloob-vit-b-1654.64
laion/CLIP-ViT-H-14-frozen-xlm-roberta-large-laion5B-s13B-b90k53
rinna/japanese-clip-vit-b-1650.69

* Computed scores based on https://github.com/rinnakk/japanese-clip.

Training

The model uses a ViT-L/16 Transformer architecture as an image encoder and a 12-layer BERT as a text encoder with the Japanese tokenizer from rinna/japanese-roberta-base. During training, the image encoder was initialized from the AugReg vit-large-patch16-224 model and we applied SigLIP (Sigmoid loss for Language-Image Pre-training).

Training Dataset

The training dataset includes the following public datasets:

Use and Limitations

Intended Use

This model is intended to be used by the open-source community in vision-language applications.

Limitations and bias

The training dataset may have contained offensive or inappropriate content even though we applied data filters. We recommend users exercise reasonable caution when using these models in production systems. Do not use the model for any applications that may cause harm or distress to individuals or groups.

How to cite

@misc{JapaneseStableCLIP, 
    url    = {[https://huggingface.co/stabilityai/japanese-stable-clip-vit-l-16](https://huggingface.co/stabilityai/japanese-stable-clip-vit-l-16)}, 
    title  = {Japanese Stable CLIP ViT-L/16}, 
    author = {Shing, Makoto and Akiba, Takuya}
}

Contact

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Нельзя запустить

Доступ к модели ограничен автором; у платформы нет доступа к весам.

Ревизия весов
cf1e8ee

0 моделей