складність 2/5 Безкоштовно
Image classification
Одне зображення на вході, одна мітка на виході. Найпростіша форма в комп’ютерному зорі — і бенчмарк, чиє припущення про одну мітку сформувало все, що на ньому збудовано.
Інтуїція
Одне зображення заходить, одна мітка виходить. Це найменше питання, яке можна поставити про картинку, і десятиліття вся галузь була організована навколо нього — бо саме для нього існував бенчмарк.
Той бенчмарк зробив припущення, яке легко пропустити й неможливо скасувати, щойно на ньому щось збудовано: кожне зображення має рівно одну правильну відповідь. Зображення ILSVRC «вручну мічені за наявністю однієї з 1000 категорій об’єктів», і «кожне зображення містить одну справжню мітку» [1, §2.1].
Майже все дивне в тому, як вимірюють класифікацію зображень, випливає з цього одного рішення. Через нього існує точність top-5. Через нього відкрився розрив між прогресом на бенчмарку і справжнім прогресом. Це припущення варто зрозуміти раніше за архітектуру.
Формальне визначення
Класифікатор відображає зображення в оцінку для кожного з K класів, зазвичай через softmax, і навчається на записаній мітці з перехресною ентропією. Від звичайної класифікації відрізняється лише те, як її оцінюють.
Похибка top-1 штрафує модель, «якщо її вихідна мітка з найвищою впевненістю cᵢ₁ не збіглася зі справжнім класом Cᵢ» [1, §4.1].
Похибка top-5 дозволяє моделі підстрахуватися. «Конкретно, кожне зображення i має одну мітку класу Cᵢ. Алгоритму дозволено повернути 5 міток cᵢ₁, … cᵢ₅, і він вважається правильним, якщо cᵢⱼ = Cᵢ для деякого j» [1, §4.1]. Похибка — це частка зображень, на яких хибні всі п’ять.
А причина top-5 — мітка, а не модель. «Масштаб задачі класифікації ILSVRC (1000 категорій і понад мільйон зображень) робить дуже дорогим мічення кожного екземпляра кожного об’єкта на кожному зображенні. Тому в цьому наборі даних на кожному зображенні мічено лише одну категорію об’єктів. Це створює неоднозначність в оцінюванні. Наприклад, зображення може мати мітку „полуниця“, але містити і полуницю, і яблуко. Тоді алгоритм не знатиме, який із двох об’єктів назвати» [1, §4.1].
Top-5 — це латка під бюджет на мічення. Це не твердження про те, якою є задача.
Як це працює
Латка виявилася неважливою для ранжування, і стаття це визнає. Після спроб top-1, top-5 та ієрархічної вартості, яка карає сильніше за плутанину собаки з кораблем, ніж з іншою собакою: «на практиці ми з’ясували, що всі три міри похибки (top-5, top-1 та ієрархічна) дали однаковий порядок результатів. Тож починаючи з ILSVRC2012 ми використовуємо виключно метрику top-5, яка найпростіша й найбільш придатна для цього набору даних» [1, §4.1].
Це чесна версія історії. Три метрики, що кодують три різні думки про те, скільки коштує помилка, і всі три погодилися, хто переміг. Це варто знати в обидва боки: вибір метрики не шкодив, але й роботи великої не робив.
Важила роздільна здатність бенчмарку. Змагання публікувало 99.9% бутстреп-інтервали довіри для кожної провідної заявки [1, §6.2], а приклад нижче показує, що простий біноміальний розрахунок відтворює їх із точністю до 0.013 процентного пункту. Тож ширина цих інтервалів — не факт про моделі. Це факт про наявність 100,000 тестових зображень.
Проблема міток повернулася згодом, і більшою. Beyer et al. заново розмітили валідаційний набір ImageNet і назвали три окремі вади: багато зображень «містять кілька однаково помітних об’єктів, що обмежує релевантність однієї мітки»; питання конвеєра розмітки «по одному класу за раз» дає «систематичні неточності»; а «деякі класи ImageNet за своєю природою неоднозначні й розрізняють по суті ідентичні групи зображень» [2, §2].
Їхня перерозмітка присвоїла 57,553 мітки 46,837 зображенням [2, §3.3] — приблизно 1.23 дійсні мітки на зображення там, де бенчмарк записує одну. А виміряна за цими мітками віддача від прогресу на бенчмарку зменшилася вдвічі: регресія вихідної точності на нову точність ReaL дала нахил 0.86 для першої половини їхнього набору моделей і 0.51 для другої, різниця значуща за p < 0.001 [2, §4].
Кінцевий пункт — те, над чим варто посидіти. «Кілька моделей уже перевершують точність ReaL, досягнуту оригінальними мітками ImageNet» [2, §4]. Моделі тепер краще за мітки кажуть, що на картинці.
Де застосовується
- Попереднє навчання, для якого класифікація ImageNet здебільшого й слугує тепер: бекбоун, навчений на цій задачі, а потім повторно використаний для виявлення об’єктів, сегментації й усього іншого [3, §14.2].
- Медичний і промисловий скринінг, де формулювання «одна мітка на зображення» справді виконується, а класи визначено заздалегідь.
- Модерація й тегування контенту, зазвичай як багатоміткова, а не багатокласова задача, — та сама мережа з іншим вихідним шаром і функцією втрат.
- Контроль якості в конвеєрі, де дешевий класифікатор вирішує, чи запускати дорогу модель узагалі.
- Як нижня сходинка драбини комп’ютерного зору — скільки коштують сходинки вище, див. задачі комп’ютерного зору.
Чому і коли
Використовуйте її, коли відповідь справді одна мітка. Задачу дешево розмічати, метрика безспірна, а кожна сходинка вище коштує більше.
Використовуйте багатоміткову класифікацію, коли зображення може містити кілька речей. Незалежні сигмоїди й втрата для кожного класу, а не softmax. Проганяти справді багатооб’єктне зображення через softmax — саме та помилка, яку ImageNet узаконив [2, §2].
Звітуйте top-1, якщо немає причини інакше. Top-5 спроєктовано під бюджет на мічення конкретного набору даних [1, §4.1]; на ваших даних він зазвичай лише робить число кращим на вигляд.
Обчисліть роздільну здатність свого тестового набору, перш ніж порівнювати дві моделі. Один рядок арифметики — і ви знаєте, чи порівняння взагалі може вдатися.
Вважайте різниці менші за пункт недоведеними. П’ять заявок ILSVRC, що охоплюють два роки змагання й 0.54 пункту, взаємно нерозрізненні за власними інтервалами змагання.
Перевірте, чи ваші мітки досі не є межею. Результат Beyer et al. — що добрі моделі тепер перевершують оригінальні мітки — це застереження для будь-якого бенчмарку, достатньо старого, щоб під нього встигли оптимізувати [2, §4].
Практичний приклад
Змагання публікувало інтервали довіри для власної таблиці лідерів. З цього випливають два питання: звідки ці інтервали і що вони кажуть про рейтинги, які всі цитували.
Python 84 рядки Показати код Сховати код
"""How finely can a classification benchmark actually separate two models?"""
import math
N_TEST = 100_000 # розд. 6.4.1: "full test set of 100,000 images"
Z_999 = 3.290527 # двобічний 99.9%
Z_95 = 1.959964
# рік, кодова назва, похибка top-5 %, заявлений 99.9% інтервал — усе з таблиці 5
TABLE_5 = [
(2014, "GoogLeNet", 6.66, (6.40, 6.92)),
(2014, "VGG", 7.32, (7.05, 7.60)),
(2014, "MSRA", 8.06, (7.78, 8.34)),
(2014, "AHoward", 8.11, (7.83, 8.39)),
(2014, "DeeperVision", 9.51, (9.21, 9.82)),
(2013, "Clarifai*", 11.20, (10.87, 11.53)),
(2014, "CASIAWS*", 11.36, (11.03, 11.69)),
(2014, "Trimps*", 11.46, (11.13, 11.80)),
(2014, "Adobe*", 11.58, (11.25, 11.91)),
(2013, "Clarifai", 11.74, (11.41, 12.08)),
(2013, "NUS", 12.95, (12.60, 13.30)),
(2013, "ZF", 13.51, (13.14, 13.87)),
(2013, "AHoward", 13.55, (13.20, 13.91)),
(2013, "OverFeat", 14.18, (13.83, 14.54)),
(2014, "Orange*", 14.80, (14.43, 15.17)),
(2012, "SuperVision*", 15.32, (14.94, 15.69)),
(2012, "SuperVision", 16.42, (16.04, 16.80)),
(2012, "ISI", 26.17, (25.71, 26.65)),
(2012, "VGG", 26.98, (26.53, 27.43)),
(2012, "XRCE", 27.06, (26.60, 27.52)),
(2012, "UvA", 29.58, (29.09, 30.04)),
]
def binomial_halfwidth(err_pct: float, n: int, z: float) -> float:
p = err_pct / 100.0
return 100.0 * z * math.sqrt(p * (1 - p) / n)
print(" does a plain binomial reproduce the paper's bootstrap intervals?")
print(f"{'entry':>14}{'error':>8}{'reported +/-':>14}{'binomial +/-':>14}{'diff (pp)':>11}")
for _, name, err, (lo, hi) in TABLE_5[:6] + TABLE_5[-2:]:
reported = (hi - lo) / 2
binom = binomial_halfwidth(err, N_TEST, Z_999)
print(f"{name:>14}{err:>8.2f}{reported:>14.3f}{binom:>14.3f}{reported - binom:>11.3f}")
# --- яка ця роздільна здатність за кількох розмірів тестового набору -----------
print("\n the smallest gap a benchmark can see, at 7% error")
print(f"{'test images':>14}{'99.9% +/-':>12}{'95% +/-':>10}{'gap needed (99.9%)':>21}")
for n in (1_000, 5_000, 10_000, 50_000, 100_000, 1_000_000):
h999 = binomial_halfwidth(7.0, n, Z_999)
h95 = binomial_halfwidth(7.0, n, Z_95)
print(f"{n:>14,}{h999:>12.3f}{h95:>10.3f}{2 * h999:>21.3f}")
# --- які заявки насправді розрізненні ----------------------------------------
pairs, separable, ties = 0, 0, []
for i in range(len(TABLE_5)):
for j in range(i + 1, len(TABLE_5)):
pairs += 1
lo_i, hi_i = TABLE_5[i][3]
lo_j, hi_j = TABLE_5[j][3]
if hi_i < lo_j or hi_j < lo_i:
separable += 1
else:
ties.append((TABLE_5[i], TABLE_5[j]))
print(f"\n of the {pairs} pairs in Table 5, {separable} have non-overlapping intervals")
# Найдовша серія взаємно нерозрізненних заявок: справжня група нічиєї.
order = sorted(TABLE_5, key=lambda r: r[2])
best_run, run = [], [order[0]]
for entry in order[1:]:
if all(not (e[3][1] < entry[3][0] or entry[3][1] < e[3][0]) for e in run):
run.append(entry)
else:
if len(run) > len(best_run):
best_run = run
run = [entry]
if len(run) > len(best_run):
best_run = run
span = best_run[-1][2] - best_run[0][2]
print(f" and {len(ties)} do not. Largest mutually inseparable group: {len(best_run)} entries")
print(f" {', '.join(e[1] for e in best_run)}")
print(f" spanning {best_run[0][2]:.2f}% to {best_run[-1][2]:.2f}% error, a range of {span:.2f} pp")Вивід
does a plain binomial reproduce the paper's bootstrap intervals?
entry error reported +/- binomial +/- diff (pp)
GoogLeNet 6.66 0.260 0.259 0.001
VGG 7.32 0.275 0.271 0.004
MSRA 8.06 0.280 0.283 -0.003
AHoward 8.11 0.280 0.284 -0.004
DeeperVision 9.51 0.305 0.305 -0.000
Clarifai* 11.20 0.330 0.328 0.002
XRCE 27.06 0.460 0.462 -0.002
UvA 29.58 0.475 0.475 0.000
the smallest gap a benchmark can see, at 7% error
test images 99.9% +/- 95% +/- gap needed (99.9%)
1,000 2.655 1.581 5.310
5,000 1.187 0.707 2.375
10,000 0.840 0.500 1.679
50,000 0.375 0.224 0.751
100,000 0.265 0.158 0.531
1,000,000 0.084 0.050 0.168
of the 210 pairs in Table 5, 189 have non-overlapping intervals
and 21 do not. Largest mutually inseparable group: 5 entries
Clarifai*, CASIAWS*, Trimps*, Adobe*, Clarifai
spanning 11.20% to 11.74% error, a range of 0.54 ppБутстреп був непотрібний. Для всіх 21 заявки опублікований інтервал і однорядковий біноміальний розрахунок розходяться щонайбільше на 0.013 процентного пункту. Змагання проганяло бутстреп «від 20,000 раундів до збіжності» [1, §6.2] і опинилося точно там, де його передбачає √(p(1−p)/N). Це не критика — це перевірка того, що інтервали означають те, що здається, і вона означає, що роздільну здатність будь-якого бенчмарку точності можна обчислити, нічого не запускаючи.
Таблицю роздільної здатності варто зберегти. За похибки 7% тестовий набір із 10,000 зображень консервативно не бачить різниці, меншої за 1.68 пункту; за 100,000 — 0.53; за мільйона — 0.17. Більшість відкладених вибірок на практиці ближчі до верху цієї таблиці, ніж до низу, і саме тому стільки заявлених покращень не хибні, а неспростовні.
А в таблиці лідерів є нічиї. Із 210 пар 21 перекривається. Найбільша взаємно нерозрізненна група — п’ять заявок: Clarifai†, CASIAWS†, Trimps†, Adobe† і Clarifai — від 11.20% до 11.74%, за два роки змагання, і всі подані в порядку рейтингу.
Це не суперечить статті, яка стверджує лише, що «різниця між методом-переможцем і другим місцем щороку значуща навіть на рівні 99.9%» [1, §6.2]. Це твердження тримається. Саме в середині таблиці порядок перестає щось означати, і стаття ніколи не казала іншого.
Одне застереження в протилежний бік, бо тест консервативний. Інтервали, що не перекриваються, доводять різницю; ті, що перекриваються, не доводять нічиєї. Обидві моделі оцінюють на тих самих зображеннях, тож парний тест — який дивиться лише на зображення, де вони розходяться, — має значно меншу дисперсію, ніж підказують два незалежні інтервали. Чесне прочитання п’ятисторонньої групи — «ця таблиця цього не встановлює», а не «однакові».
Типові помилки
Припущення, що одна мітка на зображення — властивість світу. Це властивість бюджету на розмітку [1, §4.1], і Beyer et al. виміряли ціну: близько 1.23 дійсної мітки на валідаційне зображення [2, §3.3].
Цитування top-5 так, ніби це точність. Це точність за п’яти спроб, на наборі даних, спроєктованому під цей допуск.
Порівняння top-1 з однієї статті з top-5 з іншої. Для тієї самої моделі вони відрізняються на кілька пунктів.
Читання таблиці лідерів без її інтервалів. Двадцять одна з 210 пар тут нерозрізненні, зокрема п’ять послідовних заявок.
Інтервали, що перекриваються, як доказ нічиєї. Моделі мають спільний тестовий набір; парне порівняння сильніше за маргінальне.
Припущення, що виграші на бенчмарку досі переносяться. Нахил від точності ImageNet до точності ReaL упав із 0.86 до 0.51 у межах набору моделей [2, §4], тож пункт тепер вартий приблизно половини того, що раніше.
Забування, що набір міток — проєктне рішення. Деякі класи ImageNet розрізняють «по суті ідентичні групи зображень» [2, §2], і жодна місткість моделі не виправить межу класу, якої ніколи не було насправді.
Ще не прочитаноДочитайте сторінку до кінця — і вона вважатиметься прочитаною.
Зберігайте свій прогресЗ доступом назавжди кожна дочитана сторінка позначається, і ви продовжуєте з того місця, де зупинилися, на всіх своїх пристроях.
Відкрити доступПеревірте себе
3 запитання
Кожну відповідь пояснено: який розділ вона перевіряє і з якого джерела.
Джерела
- ImageNet Large Scale Visual Recognition Challenge (2015)paperhttps://ar5iv.labs.arxiv.org/html/1409.0575
- Are we done with ImageNet? (2020)paperhttps://ar5iv.labs.arxiv.org/html/2006.07159
- Dive into Deep Learning — Computer Visionbook · звірено 2026-09-17https://d2l.ai/chapter_computer-vision/index.html