Dog Breed Classifier
70 пород собак по фото
ONNX-модель от jakobmp определяет породу собаки на фотографии среди 70 вариантов. В основе — DenseNet121 с весами ImageNet, поверх global average pooling и два Dense-слоя; ONNX-файл занимает 32 МБ.
🔎 Ключевые особенности
- 🎯 Top-1 accuracy на чистом тесте — 96.43% (675/700), top-5 — 100%.
- 🧩 Архитектура: DenseNet121 → global average pooling → Dense(1024, selu) → Dense(70, softmax).
- ⚙ Вход строго 224×224 в NHWC: RGB, float32, вычитание ImageNet-средних и деление на 255, без деления на std.
- 📀 ONNX opset 17, 32 МБ; экспорт совпадает с Keras по top-1 на всех 700 тестовых изображениях.
- ❕ Знает только 70 пород: смеси, другие животные и фото без собаки всё равно получат один из классов.
💡 Пример
import json, numpy as np, onnxruntime as ort
from PIL import Image
s = ort.InferenceSession('dog_breed_densenet.onnx')
labels = json.load(open('labels.json'))
img = Image.open('dog.jpg').convert('RGB').resize((224,224), Image.Resampling.NEAREST)
x = (np.asarray(img, np.float32) - np.array([0.485,0.456,0.406], np.float32)) / 255.0
p = s.run(None, {'image': x[np.newaxis]})[0][0]
print(labels[int(p.argmax())], float(p.max()))
Подробнее
Топ-1 на чистом тесте — 96.43% (675/700), top-5 — 100%; на validation с аугментациями — 92.57%.ONNX-файл: 32 МБ, opset 17; вход float32 [N, 224, 224, 3], выход [N, 70].
Обучение: 10 эпох, batch size 128, Adam с learning rate 1e-4.
Не предназначена для юридических, ветеринарных или иных значимых решений.








Комментарии