Комп'ютерний зір · 7 у порівнянні
Vision tasks
Сім задач, упорядкованих за тим, до чого прив’язано відповідь: до зображення, рамки, пікселя, екземпляра чи ні до чого. Спершу прочитайте стовпець «Вартість».
Порівняння
| Назва Що це за задача | Відповідь прив’язана до | Повертає | Чим оцінюється | Вартість |
|---|---|---|---|---|
| Image classification Одне зображення на вході, одна мітка на виході. Найстаріша форма в зорі й єдина, про метрику якої ніхто не сперечається, — якщо прийняти, що на кожне зображення рівно одна правильна відповідь. Повна сторінка → | усього зображення | мітку | точність, top-5 | 61 год на 1,000 зображень |
| Object detection Кожен екземпляр знайдено й обведено. Відповідь тепер — множина змінного розміру, тож оцінювання потребує правила, що вважати тим самим об’єктом, — і тут з’являються IoU та поріг. Повна сторінка → | рамки | рамки й мітки | mAP@[.5:.95] | 92 год на 1,000 зображень, за точку |
| Semantic segmentation Клас для кожного пікселя, без розділення екземплярів. Єдиний щабель, що може позначити речі без чітких меж — небо, дорогу, траву, — бо йому ніколи не треба казати, скільки їх. Повна сторінка → | пікселя | карту класів | середній IoU | кожен піксель, але без екземплярів |
| Instance segmentation Маска для кожного об’єкта, а не клас для кожного пікселя. І питання виявлення, і питання сегментації водночас — і найдорожча анотація в цій таблиці, учетверо дорожча. Повна сторінка → | екземпляра | маску для кожного об’єкта | AP масок | 259 год на 1,000 зображень |
| Image–text retrieval Підпис на вході, ранжований список зображень на виході, або навпаки. Набір міток стає тим, що ви пишете, а не тим, під що навчаєте, а нагляд уже є у вебі. Повна сторінка → | пари «зображення–текст» | ранжування | recall@k, top-1 | нічого — підпис уже є |
| Image generation Шум на вході, зображення на виході, і жодної правильної відповіді для порівняння. Кожна метрика тут оцінює розподіл, а не прогноз, а це інший вид твердження. Повна сторінка → | нічого | нове зображення | FID, IS, людина | жодного анотування |
| 3-D shape understanding Хмара точок на вході, мітка або мітка для кожної точки на виході. Та сама драбина деталізації, на даних без сітки, — а це ламає кожну згортку в цій таблиці. Повна сторінка → | точки | мітку або мітку на точку | точність, середній IoU | сенсор плюс ручне чищення |
Спершу прочитайте стовпець Вартість. Архітектура в цих рядках майже взаємозамінна — d2l робить це організаційною ідеєю всього розділу про зір, зазначаючи, що пошарові представлення «успішно використовують у різних задачах комп’ютерного зору, як-от виявлення об’єктів, семантична сегментація й перенесення стилю» [4, ch. 14, introduction]. Невзаємозамінне те, за що вам довелося заплатити людині, і це визначає метрику, режим збою і те, чи задача взагалі розв’язна.
Рядки — одна драбина, і COCO накреслила її раніше, ніж хтось збудував моделі
Перші чотири рядки — не чотири теми. Це чотири висоти того самого питання — де воно? — і стаття COCO викладає їх саме в такому порядку на першому рисунку: попередні набори даних «зосереджувалися на (a) класифікації зображень, (b) локалізації обмежувальних рамок об’єктів чи (c) семантичній сегментації на рівні пікселів», а COCO додає «(d) сегментацію окремих екземплярів об’єктів» [1, §I].
Кожен щабель відповідає на питання того, що нижче, і щось додає. Класифікація питає, чи є об’єкт: задача «вимагає бінарних міток, що вказують, чи присутні об’єкти на зображенні» [1, §II]. Виявлення додає місце — «твердження, що об’єкт заданого класу присутній, і його локалізація на зображенні» [1, §II]. Семантична сегментація відкидає екземпляр і бере піксель: вона «вимагає, щоб кожен піксель зображення було позначено як такий, що належить категорії, як-от небо, стілець, підлога, вулиця» [1, §II]. Сегментація екземплярів просить обидва.
Третій щабель ставлять не на те місце. Це не «виявлення, але точніше» — це інше питання, і його перевага — саме те, від чого воно відмовилося. Відмова від екземплярів «дає змогу позначати об’єкти, для яких окремі екземпляри важко визначити, як-от трава, вулиці чи стіни» [1, §II]. Детектор не може позначити небо, бо не буває одного неба.
Драбина має ціну, і ця ціна не лінійна
Конвеєр анотування COCO має три етапи, і стаття дає вартість кожного. Позначення категорій — які категорії є на цьому зображенні — «забрало ∼20 тис. годин роботи виконавців» [1, §IV-A]. Позначення екземплярів, хрестик на кожному об’єкті, сягнуло «∼10 тис. годин роботи виконавців» [1, §IV-B]. Далі сегментація: «Сегментація 2,500,000 екземплярів об’єктів — надзвичайно трудомістка задача, що вимагає понад 22 години роботи виконавців на 1,000 сегментацій» [1, §IV-C].
Дві з цих величин подано на весь набір даних, а третю — на екземпляр, тож порівняння, яке вони роблять, не видно, доки не звести їх до однієї одиниці. Розв’язаний приклад це робить, і відповідь така: маска коштує в 4.2 раза більше за мітку, а сама сегментація становить 65% вартості повністю маскованого зображення.
Дві деталі, які варто знати. По-перше, COCO взагалі не анотувала рамок — експерименти з виявлення «отримують щільно прилеглі обмежувальні рамки з анотованих масок сегментації» [1, §VI], тож середній щабель — це точка на кожному екземплярі, а не намальована рамка. По-друге, верхній щабель важкий і для людей: виконавці мали пройти навчальне завдання, перш ніж їм дозволяли сегментувати, і «приблизно 1 з 3 виконавців пройшов етап навчання» [1, §IV-C].
Бенчмарк відмовляється оцінювати найважчий випадок — і прямо про це каже
Це варто знати, перш ніж довіряти числу з цієї таблиці. COCO сегментувала кожен екземпляр на зображенні приблизно до десяти-п’ятнадцяти; далі «решту екземплярів позначали як “натовп” одним (можливо, багатокомпонентним) сегментом», і «для оцінювання області, позначені як натовп, ігноруються й не впливають на оцінку детектора» [1, §IV-C].
Тож випадку щільного натовпу — того, на який реальне розгортання натрапляє на вокзалі, — в оцінці немає зовсім. Це не вада COCO, яка про це прямо каже. Це нагадування, що метрику будували люди, яким десь треба було зупинитися, і місце, де вони зупинилися, — це, ймовірно, місце, де ваш застосунок починається.
Те саме застереження стосується верху драбини, де невизначена сама мітка. Стаття виявила, що «навіть спеціалізовані експерти часто розходяться щодо присутності об’єкта» [1, §IV-D], тож на кожне зображення залучали вісьмох краудворкерів, а не одного — об’єднання вісьмох давало кращий recall, ніж будь-який окремий експерт [1, §IV-D].
Кожен щабель угору трохи підточує метрику
Патерн, що проходить таблицею згори вниз: що тонша відповідь, то більше оцінка стає думкою.
Точність класифікації безспірна: мітка одна, і ви або вгадали, або ні. Виявленню потрібне правило для того самого об’єкта, і mAP@[.5:.95] — конкретна думка про те, наскільки важить точність локалізації і яку вагу заслуговують рідкісні класи. Сегментація додає другу: середній IoU усереднює за класами, а не за пікселями, тож клас, що займає 0.1% зображення, важить стільки ж, скільки дорога.
Унизу таблиці метрика взагалі перестає мати еталон. DDPM повідомляє «Inception score 9.46 і найкращий FID 3.17» [3, Abstract] — обидва порівнюють розподіл згенерованих зображень із розподілом справжніх. Немає правильної відповіді для кожного зображення, яку можна перевірити, а це інший вид твердження, ніж «91.2% top-1», хоч і надруковане тим самим шрифтом. Гірше того, як показує FID, число, обчислене зі скінченної вибірки, — не те число, яким метрику визначено, і розрив залежить від моделі, яку вимірюють.
COCO це передбачила. Навіть коли виявлення правильне, якість сегментації — окрема складність: стаття перевіряє, «за умови, що детектор повідомляє правильну обмежувальну рамку, наскільки добре передбачена сегментація об’єкта збігається з еталонною», і виявляє, що передбачити маску «важко навіть для правильних виявлень» [1, §VI]. Кожен щабель — окрема задача, а не шліфування попереднього.
Рядок, що відмовляється лізти драбиною
Найцікавіше — низ рисунка з анотуванням. Аргумент CLIP починається саме з вартості, яку цінувала ця таблиця: «Найсучасніші системи комп’ютерного зору навчають прогнозувати фіксований набір наперед визначених категорій об’єктів. Така обмежена форма нагляду обмежує їхню загальність і придатність, бо для задання будь-якого іншого візуального поняття потрібні додаткові розмічені дані» [2, Abstract].
Вихід — перестати платити за мітки. CLIP навчається на «400 мільйонах пар (зображення, текст), зібраних з інтернету» [2, Abstract], де підпис написав той, хто опублікував картинку, і результат «зрівнюється з точністю оригінальної ResNet-50 на ImageNet без прикладів, не використовуючи жодного з 1.28 мільйона навчальних прикладів, на яких її навчали» [2, Abstract].
Тому рядок і стоїть на нулі осі рисунка. Він не безкоштовний — збір і фільтрування 400 мільйонів пар мають власну вартість, і стаття відверто визнає, що це змінює те, чим є нагляд, а не прибирає його. Але це не години роботи виконавців, і вся форма галузі після 2021 року випливає з цієї заміни. Спостереження, що за нею стоїть: «сукупний нагляд, доступний сучасним методам попереднього навчання у вебмасштабних колекціях тексту, перевершує нагляд якісних наборів даних NLP, розмічених краудворкерами» [2, §1], — а комп’ютерний зір, на відміну від NLP, цієї заміни ще не зробив.
Практичний приклад
Зводимо три етапи анотування COCO до однієї одиниці, бо стаття подає два з них на весь набір даних, а третій — на екземпляр.
Python 50 рядків Показати код Сховати код
"""What each rung of the vision task ladder costs to annotate."""
IMAGES = 328_000
INSTANCES = 2_500_000
CATEGORY_HOURS = 20_000
SPOTTING_HOURS = 10_000
SEG_HOURS_PER_1K = 22
STATED_TOTAL = 70_000
per_image = INSTANCES / IMAGES
print(f" COCO: {IMAGES:,} images, {INSTANCES:,} instances, {per_image:.1f} per image")
print(f" (the paper states 7.7; the rounded counts above give {per_image:.2f})\n")
# Усі етапи — в одній одиниці: години роботи виконавців на 1,000 зображень.
seg_hours = SEG_HOURS_PER_1K * INSTANCES / 1000
stages = [
("a label per image", "category labeling", CATEGORY_HOURS, 8),
("a point per instance", "instance spotting", SPOTTING_HOURS, 8),
("a mask per instance", "instance segmentation", seg_hours, 1),
]
print(" what each rung costs, on a common unit")
print(f"{'the output':>22}{'stage':>24}{'workers':>9}{'hours':>11}{'h / 1k images':>15}")
cumulative = 0.0
rows = []
for output, stage, hours, workers in stages:
cumulative += hours
per_1k = hours / IMAGES * 1000
rows.append((output, per_1k, cumulative / IMAGES * 1000))
print(f"{output:>22}{stage:>24}{workers:>9}{hours:>11,.0f}{per_1k:>15.1f}")
print("\n and the ladder is cumulative: a mask needs the label and the point first")
print(f"{'to get':>22}{'you also pay for':>34}{'h / 1k images':>15}{'vs a label':>12}")
# Не «рамка»: COCO ніколи не анотувала рамок. Розділ VI бере їх із масок,
# тож рамка коштує або точку, або цілу маску залежно від того, де ви
# зупинитеся, і драбина чесна, лише якщо називає, за що справді заплачено.
labels = ["a label", "a located instance", "a mask"]
needs = ["nothing else", "the label", "the label and the point"]
base = rows[0][2]
for name, need, (_, _, cum) in zip(labels, needs, rows):
print(f"{name:>22}{need:>34}{cum:>15.1f}{cum / base:>11.1f}x")
seg_share = rows[2][1] / rows[2][2] * 100
print(f"\n segmentation alone is {seg_share:.0f}% of the cost of a fully masked image")
print("\n the one number that does not reconcile")
print(f" 22 h / 1,000 masks x {INSTANCES:,} instances = {seg_hours:,.0f} worker hours")
print(f" plus {CATEGORY_HOURS:,} + {SPOTTING_HOURS:,} = {cumulative:,.0f} hours in total,")
print(f" against the {STATED_TOTAL:,}+ the paper states in its discussion.")
print(" The rate is the reliable figure; the total is stated as a lower bound.")Вивід
COCO: 328,000 images, 2,500,000 instances, 7.6 per image
(the paper states 7.7; the rounded counts above give 7.62)
what each rung costs, on a common unit
the output stage workers hours h / 1k images
a label per image category labeling 8 20,000 61.0
a point per instance instance spotting 8 10,000 30.5
a mask per instance instance segmentation 1 55,000 167.7
and the ladder is cumulative: a mask needs the label and the point first
to get you also pay for h / 1k images vs a label
a label nothing else 61.0 1.0x
a located instance the label 91.5 1.5x
a mask the label and the point 259.1 4.2x
segmentation alone is 65% of the cost of a fully masked image
the one number that does not reconcile
22 h / 1,000 masks x 2,500,000 instances = 55,000 worker hours
plus 20,000 + 10,000 = 85,000 hours in total,
against the 70,000+ the paper states in its discussion.
The rate is the reliable figure; the total is stated as a lower bound.Останній блок — справжня розбіжність, і її варто залишити. Множення власного темпу сегментації статті на її власну кількість екземплярів дає 55,000 годин, що разом із двома попередніми етапами становить 85,000, — проти «понад 70,000 годин роботи виконавців», про які йдеться в обговоренні [1, §VIII]. Обидва числа — зі статті. Використовувати варто темп на 1,000, бо його подано як темп, а загальну суму — як нижню межу; співвідношення в цій таблиці залежать лише від темпів, тож вони справедливі в будь-якому разі.
Практичне прочитання таблиці. Обирайте найнижчий щабель, що відповідає на ваше питання. Кожен крок угору множить вартість анотування, послаблює метрику й додає режим збою, якого не було на щаблі нижче. Виняток — рядок пошуку, який зовсім не вищий на драбині: це спосіб за неї не платити, і варто перевірити, чи можна так сформулювати вашу задачу, перш ніж щось розмічати.
Джерела
- Microsoft COCO: Common Objects in Context (2014)paperhttps://ar5iv.labs.arxiv.org/html/1405.0312
- Learning Transferable Visual Models From Natural Language Supervision (2021)paperhttps://ar5iv.labs.arxiv.org/html/2103.00020
- Denoising Diffusion Probabilistic Models (2020)paperhttps://ar5iv.labs.arxiv.org/html/2006.11239
- Dive into Deep Learning — Computer Visionbook · звірено 2026-09-15https://d2l.ai/chapter_computer-vision/index.html