/ Модель

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

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

DINOv2-Garbage-Classification

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

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

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

Бенчмарки

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

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

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

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

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

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

Модель galihkjaya/DINOv2-Garbage-Classification разработана как учебная базовая модель для классификации изображений отходов. Это дообученная модель на основе визуального трансформера DINOv2 ViT-L/14 от Meta AI: к признакам размерности 1024 добавлены нормализация и классификационная голова, выдающая один из трёх классов — перерабатываемые отходы, электроника или органические отходы. Модель реализована на PyTorch и принимает изображения с разрешением 518 × 518 пикселей.

Чекпойнт подходит для классификации отходов при обработке изображений, для экспериментов с переносом обучения и как начальная точка для дообучения на собственных категориях. При обучении основная часть backbone была заморожена, а последние четыре блока трансформера и классификационная голова дообучались. В качестве основы использован facebookresearch/dinov2.

Модель различает только три категории; качество предсказаний зависит от освещения и качества изображения, а отходы из смешанных материалов могут быть трудны для классификации. Репозиторий позиционирует её как учебную и исследовательскую базовую модель. Лицензия — MIT.

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

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

Ограничения

Модель распознаёт только три категории отходов; качество зависит от освещения и качества изображения, а смешанные материалы могут классифицироваться неверно.

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

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

Открыть на Hugging Face

DINOv2 Garbage Classification

A fine-tuned DINOv2 ViT-L/14 model for garbage image classification.

This repository is prepared as a workshop baseline model, allowing participants to quickly start experimenting with transfer learning techniques without training a Vision Transformer from scratch.

The checkpoint can be used directly for inference or as an initialization for further fine-tuning on custom datasets.


Overview

This project fine-tunes Meta AI's DINOv2 ViT-L/14 backbone for a three-class garbage classification task.

Unlike conventional CNN-based approaches, DINOv2 learns powerful visual representations through self-supervised learning, making it an excellent backbone for downstream computer vision tasks with limited labeled data.

Participants are encouraged to extend this model with techniques such as:

  • Hard Example Mining
  • Active Learning
  • Semi-supervised Learning
  • Domain Adaptation
  • Knowledge Distillation
  • Custom Classification Heads
  • Full Backbone Fine-tuning
  • Test-Time Augmentation (TTA)

Model Architecture

Input Image (518 × 518)
        │
        ▼
DINOv2 ViT-L/14 Backbone
        │
        ▼
1024-D Feature Vector
        │
        ▼
LayerNorm
        │
        ▼
Linear (1024 → 512)
        │
        ▼
GELU
        │
        ▼
Dropout (0.3)
        │
        ▼
Linear (512 → 3)
        │
        ▼
Prediction

Backbone

  • Base Model: facebookresearch/dinov2
  • Variant: dinov2_vitl14
  • Feature Dimension: 1024
  • Framework: PyTorch

Training strategy:

  • Freeze entire backbone
  • Unfreeze last 4 transformer blocks
  • Train custom classification head

Dataset

The model classifies garbage into three categories.

LabelClass
0Recyclable
1Electronic
2Organic

Sample Images

Recyclable

Electronic

Organic


Dataset Statistics

SplitImages
Training23,873
Validation2,653
Test1,458

Class Distribution

ClassImages
Recyclable12,567
Electronic9,999
Organic3,960

Data Augmentation

Training images are augmented using:

  • Random Resized Crop
  • Horizontal Flip
  • Color Jitter
  • Gaussian Blur
  • RandAugment
  • ImageNet Normalization

Input resolution:

518 × 518

Repository Structure

.
├── assets/
│   ├── 0_Recyclable/
│   ├── 1_Electronic/
│   └── 2_Organic/
│
├── best_dinov2.pth
└── README.md

Load the Model

import torch
import torch.nn as nn
from huggingface_hub import hf_hub_download

pth_path = hf_hub_download(
    repo_id="galihkjaya/DINOv2-Garbage-Classification",
    filename="best_dinov2.pth"
)

class DINOv2Classifier(nn.Module):
    def __init__(self, num_classes=3, unfreeze_blocks=4):
        super().__init__()

        self.backbone = torch.hub.load(
            "facebookresearch/dinov2",
            "dinov2_vitl14"
        )

        for p in self.backbone.parameters():
            p.requires_grad = False

        for block in self.backbone.blocks[-unfreeze_blocks:]:
            for p in block.parameters():
                p.requires_grad = True

        self.head = nn.Sequential(
            nn.LayerNorm(1024),
            nn.Linear(1024, 512),
            nn.GELU(),
            nn.Dropout(0.3),
            nn.Linear(512, num_classes)
        )

    def forward(self, x):
        features = self.backbone(x)
        return self.head(features)

model = DINOv2Classifier()

model.load_state_dict(torch.load(pth_path, map_location="cpu"))
model.eval()

Inference Example

from PIL import Image
from torchvision import transforms

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

labels = {
    0: "Recyclable",
    1: "Electronic",
    2: "Organic"
}

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

with torch.no_grad():
    logits = model(image)
    pred = logits.argmax(1).item()

print(labels[pred])

Future Improvement

This checkpoint serves as the baseline model. Suggested follow-up experiments include:

  • Fine-tune all transformer blocks
  • Hard Example Mining
  • Replace the classification head
  • Add new waste categories
  • Train with Focal Loss
  • Label Smoothing
  • Test-Time Augmentation
  • MixUp / CutMix
  • Semi-supervised Learning
  • Domain Adaptation
  • Feature Extraction using DINOv2 embeddings

The objective is to demonstrate how a strong pretrained visual backbone can be adapted efficiently for downstream classification tasks.


Limitations

  • Only supports three waste categories.
  • Performance depends on image quality and lighting conditions.
  • Mixed-material waste may be difficult to classify.
  • Intended for educational and research purposes.

Acknowledgements

This project builds upon:

  • Meta AI — DINOv2
  • PyTorch
  • Hugging Face Hub
  • Kaggle

Citation

@misc{galih2026,
  title={DINOv2 Garbage Classification},
  author={Galih Kusuma Wijaya},
  year={2026},
  publisher={Hugging Face},
  howpublished={https://huggingface.co/galihkjaya/DINOv2-Garbage-Classification}
}

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

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

GPU в ailist

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

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

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

Ревизия весов
1d1aae8

0 моделей