/ Модель

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

Лицензия
MIT
Библиотека
pytorch
Опубликована
18 июл 2026

cifar100-cnn-resnet18

Классификация изображенийИзображение → label

Дообученная ResNet18 классифицирует небольшие цветные изображения по 100 классам CIFAR-100.

0скачиваний за 30 дней0лайковвеса обновлены21 июл 2026

Бенчмарки

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

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

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

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

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

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

Репозиторий автора maqsudxo1ja содержит классификатор изображений ResNet18, дообученный переносом обучения на CIFAR-100. Архитектура адаптирована для небольших изображений: первый свёрточный слой заменён на слой 3×3 с шагом 1, начальный MaxPool удалён, а выходной слой настроен на 100 классов. В репозитории также есть собственная CNN, обученная с нуля, но основная задача карточки — классификация изображений.

ResNet18 принимает цветные изображения размером 32×32 пикселя и предсказывает один из 100 классов CIFAR-100. В README указана точность top-1 71,13%; отдельно приведён результат независимой проверки на полном тестовом наборе — 70,53%. Модель подходит для экспериментов и классификации изображений в рамках набора CIFAR-100.

Модель ограничена 100 классами набора CIFAR-100 и рассчитана на небольшие изображения; изображения большего размера следует предварительно уменьшать до 32×32. Возможна путаница между визуально похожими классами. Лицензия репозитория — MIT.

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

  • Классификация изображений из CIFAR-100
  • Распознавание объектов на цветных изображениях 32×32
  • Эксперименты с переносом обучения на небольших наборах изображений

Ограничения

Модель распознаёт только 100 классов CIFAR-100 и рассчитана на изображения 32×32 пикселя; изображения большего размера нужно уменьшить. Возможна путаница между визуально похожими классами.

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

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

Открыть на Hugging Face

CIFAR-100 Image Classification — CNN & ResNet18

This repository contains two image classification models trained on the CIFAR-100 dataset: a Custom CNN built from scratch, and a ResNet18 model adapted via transfer learning.

📊 Model Results

ModelTop-1 AccuracyTop-5 AccuracyParametersFile Size
Custom CNN55.21%84.12%~2.1M5.57 MB
ResNet18 (Transfer Learning)71.13%—~11.2M45 MB

Independently verified: on the full CIFAR-100 test set (10,000 images), the ResNet18 model achieved 70.53% accuracy.

🗂️ About the Dataset

CIFAR-100 consists of 60,000 color images (32x32 pixels) across 100 classes: 50,000 training images and 10,000 test images, with 600 images per class.

🏗️ Model Architecture

Custom CNN

Input (3x32x32)
  → [Conv2D(32) + BatchNorm + ReLU] x2 → MaxPool → Dropout(0.25)
  → [Conv2D(64) + BatchNorm + ReLU] x2 → MaxPool → Dropout(0.3)
  → [Conv2D(128) + BatchNorm + ReLU] x2 → MaxPool → Dropout(0.4)
  → Flatten → Dense(512) → Dropout(0.5) → Dense(100)

ResNet18 (Adapted)

Based on a ResNet18 pretrained on ImageNet, adapted for small (32x32) images as follows:

  • First convolutional layer changed from 7x7, stride=2 to 3x3, stride=1
  • Initial MaxPool layer removed (replaced with nn.Identity())
  • Final fully connected layer resized for 100 output classes

🚀 Usage (Inference)

import torch
import torch.nn as nn
from torchvision.models import resnet18
from huggingface_hub import hf_hub_download

# Download the model from Hugging Face
resnet_path = hf_hub_download(
    repo_id="maqsudxo1ja/cifar100-cnn-resnet18",
    filename="resnet18_cifar100.pth"
)

# Rebuild the architecture
model = resnet18(weights=None)
model.conv1 = nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1, bias=False)
model.maxpool = nn.Identity()
model.fc = nn.Linear(model.fc.in_features, 100)

# Load the weights
model.load_state_dict(torch.load(resnet_path, map_location="cpu"))
model.eval()

Preprocessing

import torchvision.transforms as transforms

transform = transforms.Compose([
    transforms.Resize((32, 32)),
    transforms.ToTensor(),
    transforms.Normalize((0.5071, 0.4865, 0.4409), (0.2673, 0.2564, 0.2762))
])

Full Inference Example

from PIL import Image
import torch

image = Image.open("image.jpg").convert("RGB")
input_tensor = transform(image).unsqueeze(0)

with torch.no_grad():
    output = model(input_tensor)
    probs = torch.softmax(output, dim=1)[0]
    top5_prob, top5_idx = torch.topk(probs, 5)

# class names can be obtained via torchvision.datasets.CIFAR100(...).classes
for i in range(5):
    print(f"{classes[top5_idx[i]]}: {top5_prob[i]*100:.2f}%")

🎯 Training Details

ParameterValue
OptimizerAdam (weight_decay=1e-4)
Learning rate0.001 (with ReduceLROnPlateau)
Loss functionCrossEntropyLoss
Batch size128
Data augmentationRandomCrop, RandomHorizontalFlip
Early stoppingPatience = 5 epochs
EnvironmentKaggle, GPU T4 x2

📁 Files in this Repository

  • cnn_cifar100.pth — weights of the Custom CNN trained from scratch
  • resnet18_cifar100.pth — weights of the fine-tuned ResNet18 (transfer learning)

⚠️ Limitations

  • The model only recognizes CIFAR-100's 100 classes (not general real-world objects)
  • Optimized for small (32x32) images — higher-resolution images must be resized to 32x32 first
  • Higher confusion is likely between visually similar classes (e.g., different animal species)

📄 License

MIT License

✍️ Author

@maqsudxo1ja

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

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

GPU в ailist

Универсальный рантайм · pytorch · image-classification

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

В репозитории нет config.json: не понять архитектуру модели.

Ревизия весов
0ef742e

0 моделей