/ Модель

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

Параметры
7,1 млн
Лицензия
MIT
Архитектура
vit · dense
Библиотека
transformers
Опубликована
12 июл 2024

CoDE

Эмбеддинги изображенийИзображение → embedding3 профессии

CoDE — компактная модель на основе ViT для извлечения признаков изображений при анализе и обнаружении дипфейков.

96скачиваний за 30 дней2лайкавеса обновлены12 дек 2024

Бенчмарки

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

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

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

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

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

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

CoDE — модель aimagelab для извлечения признаков из изображений, связанная с исследованием Contrasting Deepfakes Diffusion via Contrastive Learning and Global-Local Similarities, представленным на ECCV 2024. Она предназначена для анализа изображений и получения признаковых представлений, применимых к обнаружению дипфейков. В метаданных указаны архитектура ViT, класс ViTModel, 7,1 млн параметров и формат safetensors. Модель опубликована под лицензией MIT.

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

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

Ограничения

Карточка не приводит оценок качества и подробностей о данных обучения; применимость к конкретным видам подделок следует проверять отдельно.

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

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

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

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

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

Открыть на Hugging Face

Contrasting Deepfakes Diffusion via Contrastive Learning and Global-Local Similarities (ECCV 2024)

Project page

Source code

Model Card for Model ID

import transformers
from huggingface_hub import hf_hub_download
from PIL import Image
import faiss
import timm
import torch
import torch.nn as nn
import joblib
from torchvision import transforms

if torch.cuda.is_available():
    device = torch.device('cuda')
else: device = torch.device('cpu')

'''
linear - knn --> 0 Real - 1 Fake
svm --> -1 Real - 1 Fake
'''
class VITContrastiveHF(nn.Module):
    def __init__(self, repo_name, classificator_type):
        super(VITContrastiveHF, self).__init__()
        self.model = transformers.AutoModel.from_pretrained(repo_name)
        self.model.pooler= nn.Identity()

        self.processor = transformers.AutoProcessor.from_pretrained(repo_name)
        self.processor.do_resize= False
        # define the correct classifier /// consider to use the `cache_dir`` parameter
        if classificator_type == 'svm':
            file_path = hf_hub_download(repo_id=repo_name, filename='sklearn/ocsvm_kernel_poly_gamma_auto_nu_0_1_crop.joblib')
            self.classifier = joblib.load(file_path)

        elif classificator_type == 'linear':
            file_path = hf_hub_download(repo_id=repo_name, filename='sklearn/linear_tot_classifier_epoch-32.sav')
            self.classifier = joblib.load(file_path)

        elif classificator_type == 'knn':
            file_path = hf_hub_download(repo_id=repo_name, filename='sklearn/knn_tot_classifier_epoch-32.sav')
            self.classifier = joblib.load(file_path)
            
        else:
            raise ValueError('Selected an invalid classifier')

    def forward(self, x, return_feature=False):
        features = self.model(x)
        if return_feature:
            return features
        features = features.last_hidden_state[:,0,:].cpu().detach().numpy()
        # features.last_hidden_state[:,0,:].shape
        predictions = self.classifier.predict(features)
        return torch.from_numpy(predictions)
    
# HF inference code
classificator_type = 'linear'
model = VITContrastiveHF(repo_name='aimagelab/CoDE', classificator_type=classificator_type)

transform = transforms.Compose([
    transforms.CenterCrop(224),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])

model.eval()
model.model.to(device)
y_pred= []
# Put your image to tes
img = Image.open('206496010652.png').convert('RGB')

with torch.no_grad():
    # in_tens = model.processor(img, return_tensors='pt')['pixel_values']
    in_tens = transform(img).unsqueeze(0)

    in_tens= in_tens.to(device)
    y_pred.extend(model(in_tens).flatten().tolist())

# check the correct label of the predict image
for el in y_pred:
    if el == 1:
        print('Fake')
    elif el == 0:
        print('Real')
    elif el == -1:
        print('Real')
    else:
        print('Error')

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

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

GPU в ailist

Универсальный рантайм · transformers · image-feature-extraction

Можно запустить

Подбираем GPU…

Класс архитектуры
ViTModel
Ревизия весов
c2a0c92

0 моделей