🎨 Author_ID — Anime Artist Style Recognition


🇬🇧 English Description

Author_ID is an AI model that recognizes the artistic style of anime illustrations and identifies the most likely artist from Danbooru database.

Think of it as "Shazam for anime art" — upload any illustration and instantly discover who drew it or whose style it resembles.

🧠 Architecture: Face ID for Art

This model is built using the same architectural principles as Apple Face ID:

Face ID Author_ID
Encodes facial features into embedding Encodes artistic style into embedding
Compares with stored face template Compares with artist style centroids
Works with one photo enrollment Works with few-shot artist samples

The model generates a 512-dimensional style embedding and compares it against precomputed artist centroids using cosine similarity.

⚡ Few-Shot Learning

Unlike traditional classifiers that require thousands of samples per class, Author_ID uses a metric learning approach:

  • No retraining needed to add new artists
  • Just compute centroid from 3-5 sample images
  • Instantly searchable in the embedding space

📦 Model Versions

Version Authors Availability
Demo (this repo) 500 Free download
Full 3000+ Telegram Bot

🏷️ Output Format

Returns top-5 most similar artists with confidence scores:

(artist:hiten:0.87), (artist:saitom:0.72), (artist:anmi:0.68), ...

🇷🇺 Описание на русском

Author_ID — это ИИ-модель, которая распознаёт художественный стиль аниме-иллюстраций и определяет наиболее вероятного автора из базы Danbooru.

Можно сказать, это "Shazam для аниме-артов" — загрузите любую картинку и мгновенно узнайте, кто её нарисовал или чей стиль она напоминает.

🧠 Архитектура: Face ID для арта

Модель построена по тем же принципам, что и Apple Face ID:

Face ID Author_ID
Кодирует черты лица в эмбеддинг Кодирует стиль рисунка в эмбеддинг
Сравнивает с сохранённым шаблоном Сравнивает с центроидами авторов
Работает с одним фото при регистрации Работает с few-shot примерами

Модель генерирует 512-мерный вектор стиля и сравнивает его с предрассчитанными центроидами авторов через косинусное сходство.

⚡ Few-Shot обучение

В отличие от классических классификаторов, Author_ID использует metric learning:

  • Не требует переобучения для новых авторов
  • Достаточно 3-5 примеров для создания центроида
  • Мгновенный поиск в пространстве эмбеддингов

📦 Версии модели

Версия Авторов Доступность
Demo (этот репо) 500 Бесплатно
Full 3000+ Telegram Bot

🚀 How to Use / Как использовать

Installation / Установка

pip install onnxruntime onnx pillow numpy huggingface_hub
# or for GPU / или для GPU:
pip install onnxruntime-gpu onnx pillow numpy huggingface_hub

Inference / Инференс

import onnxruntime as ort
import onnx
import numpy as np
from PIL import Image
import json
from huggingface_hub import hf_hub_download

# Download model from HuggingFace (cached automatically)
MODEL_PATH = hf_hub_download(
    repo_id="AugustLabs/Author_ID",
    filename=" style_predictor_500.onnx"
)

class AuthorID:
    """
    Author_ID: Anime Artist Style Recognition
    Single ONNX file contains: model + centroids + author names
    """
    
    def __init__(self, onnx_path):
        # Load metadata (author names embedded in ONNX)
        model_onnx = onnx.load(onnx_path)
        self.names = []
        self.input_size = 384
        
        for prop in model_onnx.metadata_props:
            if prop.key == "author_names":
                self.names = json.loads(prop.value)
            elif prop.key == "input_size":
                self.input_size = int(prop.value)
        
        providers = ['CUDAExecutionProvider', 'CPUExecutionProvider']
        self.session = ort.InferenceSession(onnx_path, providers=providers)
        
        self.mean = np.array([0.485, 0.456, 0.406], dtype=np.float32).reshape(1, 3, 1, 1)
        self.std = np.array([0.229, 0.224, 0.225], dtype=np.float32).reshape(1, 3, 1, 1)

    def preprocess(self, image_path):
        img = Image.open(image_path)
        
        # Handle transparency
        if img.mode in ('RGBA', 'LA') or (img.mode == 'P' and 'transparency' in img.info):
            bg = Image.new('RGB', img.size, (255, 255, 255))
            img = img.convert('RGBA')
            bg.paste(img, mask=img.split()[3])
            img = bg
        else:
            img = img.convert('RGB')
        
        img = img.resize((self.input_size, self.input_size), Image.BILINEAR)
        
        img_np = np.array(img, dtype=np.float32) / 255.0
        img_np = img_np.transpose(2, 0, 1)[np.newaxis, ...]
        img_np = (img_np - self.mean) / self.std
        
        return img_np

    def predict(self, image_path, top_k=5):
        """Returns list of (author_name, similarity_score)"""
        img_np = self.preprocess(image_path)
        top_indices, top_scores = self.session.run(None, {'image': img_np})
        
        results = []
        for idx, score in zip(top_indices[0][:top_k], top_scores[0][:top_k]):
            results.append((self.names[idx], float(score)))
        
        return results

    def predict_tags(self, image_path, top_k=5):
        """Returns formatted tags: (artist:name:score)"""
        results = self.predict(image_path, top_k)
        return [f"(artist:{name}:{score:.2f})" for name, score in results]


# === Example Usage ===
if __name__ == "__main__":
    # Initialize (once) — model downloads automatically
    model = AuthorID(MODEL_PATH)
    
    # Predict
    results = model.predict("your_image.jpg", top_k=5)
    
    print("🎨 Detected artist styles:")
    for author, score in results:
        print(f"   {author}: {score:.1%}")
    
    # Or get formatted tags
    tags = model.predict_tags("your_image.jpg")
    print("\n📝 Tags:", ", ".join(tags))

Expected Output / Пример вывода

🎨 Detected artist styles:
   hiten_(hitenkei): 87.3%
   saitom: 71.8%
   anmi: 68.2%
   kantoku: 65.1%
   mishima_kurone: 62.4%

📝 Tags: (artist:hiten_(hitenkei):0.87), (artist:saitom:0.72), (artist:anmi:0.68), (artist:kantoku:0.65), (artist:mishima_kurone:0.62)

📊 Technical Details / Технические детали

Parameter Value
Backbone ConvNeXt-Tiny
Embedding dim 512
Input size 384×384
Training data Danbooru (filtered)
Metric Cosine similarity
Format ONNX (opset 17)

⚠️ Limitations / Ограничения

  • Works best on anime/manga style illustrations
  • May confuse artists with very similar styles
  • Confidence drops on heavily cropped or low-quality images
  • Demo version limited to 500 authors

🔥 Want the full 3000+ artist version?

Telegram Bot



More AI Models & News:

Website Channel HuggingFace
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for AugustLabs/Author_ID

Quantized
(3)
this model