Компʼютерний зір · Блок 1 · Тема 02

Карта задач компʼютерного зору

Фото одне й те саме. Різниця між класифікацією, детекцією й сегментацією живе не у вхідній картинці, а у формі відповіді, яку модель зобовʼязана віддати.

Перед тобою одне фото з дошки оголошень про вживані телефони: два апарати лежать на столі, один частково накриває інший. Продавець виклав його, щоб показати товар. А тепер питання, з якого починається весь компʼютерний зір: що модель має віддати, подивившись на це фото?

Питання здається дивним — ну як що, відповідь. Але відповіді бувають різної форми, і саме форма ділить компʼютерний зір на задачі. «Телефон» — одне слово на все фото. Дві рамки з підписами — список. Картинка того самого розміру, де кожен піксель пофарбований за класом, — масив на 86 400 чисел. Два окремі обриси, по одному на кожен апарат. Або взагалі нове зображення, якого не існувало.

Вхід у всіх пʼяти випадках байт у байт однаковий. Виходи не мають між собою нічого спільного: одне слово, список, масив, набір масок, картинка. Це і є головна теза теми, і її варто прочитати двічі: задачі компʼютерного зору відрізняються не картинкою на вході, а формою відповіді на виході.

01 / ТезаВхід один, виходи різні

У попередній темі ми зʼясували, чим зображення є для компʼютера: масивом чисел розміром «висота × ширина × три канали кольору». Наше фото — це 240 рядків, 360 стовпців і три числа яскравості в кожній клітинці, разом 259 200 чисел. Це вхід. І він не змінюється від того, яку задачу ми поставимо.

У курсі машинного навчання тип задачі визначала цільова колонка: число в ній — регресія, мітка — класифікація, немає колонки взагалі — кластеризація. Ти дивився на таблицю, знаходив стовпчик із відповіддю й уже знав, що робити далі.

Із зображеннями цей фокус не спрацьовує. Цільової колонки немає — є фото й є задача, яку хтось поставив словами. Одне й те саме фото телефона може бути входом для пʼяти різних моделей, і кожна віддасть щось своє. Тому перше, що треба зробити, зустрівши задачу компʼютерного зору, — не обирати архітектуру, а спитати: якої форми має бути відповідь. Усе інше — модель, метрика, розмітка, бюджет — випливає з цього.

Ось ті самі пʼять відповідей на тому самому фото. Перемикай задачу й дивись не стільки на картинку, скільки на праву частину — там показано, що саме модель повертає як дані.

Інтерактив 1 · Одне фото, пʼять виходів

Ліворуч — фото товару з накладеною відповіддю моделі. Праворуч — та сама відповідь у вигляді структури даних: рядок, список, масив.

задача
чисел у відповіді
форма
розмітка 1 фото
метрика
Прожени всі пʼять. Вхід не змінюється жодного разу — 360 × 240 × 3 числа. Вихід росте від 1 числа до 259 200, тобто у чверть мільйона разів, і разом із ним росте все інше: складність моделі, ціна розмітки й те, на які питання відповідь узагалі дозволяє відповісти.

Зверни увагу на два числа з підпису. Класифікація повертає одне число, генерація — 259 200. Між ними лежать усі інші задачі, і чим правіше по цій шкалі, тим дорожче обходиться кожне розмічене зображення. До цього ми повернемось у розділі 8, і саме там ховається найпрактичніша частина теми.

02 / МіткаКласифікація: одна мітка на все

Класифікація зображень (image classification) — найпростіша постановка. Вхід: одне зображення. Вихід: одна мітка з наперед відомого списку класів. «На фото телефон», «на фото ноутбук», «на фото нічого з нашого каталогу».

Технічно модель віддає не мітку, а вектор чисел — по одному на клас. Якщо класів пʼять, вихід має пʼять чисел, які після нормування читаються як ймовірності й дають у сумі одиницю. Мітку отримують, узявши клас із найбільшим числом. Це та сама механіка, що й у логістичній регресії, тільки ознаки не виписані вручну, а витягнуті з пікселів самою моделлю.

Метрики теж ті самі, які ти вже знаєш: частка правильних відповідей, а коли класи незбалансовані — точність і повнота з їхнім компромісом. Нічого нового зображення сюди не приносять. Якщо модель має віддати не клас, а число — скажімо, оцінити ціну телефона за фото, — це регресія, і міряють її середньою абсолютною похибкою чи RMSE, знову ж таки без жодних змін.

Коли міток треба кілька

Одне фото цілком може заслуговувати на кілька міток одночасно: «телефон», «зарядка», «коробка», «є подряпини». Це багатоміткова класифікація (multi-label), і вона відрізняється від звичайної однією деталлю, яку часто плутають. У звичайній класифікації класи конкурують: більше ймовірності одному — менше решті, бо сума фіксована. У багатоміткові вони не конкурують: модель дає кожному класу власне число від нуля до одиниці, незалежно від інших, і кожне порівнюється зі своїм порогом. Фото може отримати чотири мітки або жодної.

Але й багатоміткова класифікація нічого не каже про де. Вона повідомляє, що на фото є телефон і є коробка, і мовчить про те, у якому кутку вони лежать і скільки їх. Наше фото з двома апаратами дістане ту саму мітку «телефон», що й фото з одним. Щойно замовнику потрібне слово «скільки» або слово «де», класифікації стає замало.

03 / РамкаДетекція: рамка й мітка

Детекція обʼєктів (object detection) відповідає одразу на обидва питання. Вихід — список: для кожного знайденого предмета чотири числа рамки, мітка класу й число впевненості. Рамка (bounding box) — це прямокутник зі сторонами, паралельними краям кадру, заданий координатами лівого верхнього й правого нижнього кутів.

Одна деталь ламає всю звичну схему оцінювання, і на неї варто зупинитись. Довжина відповіді заздалегідь невідома. У таблиці кожен рядок давав рівно одну відповідь, і порівняти прогноз із правдою було легко: збіглось або ні. Тут модель може повернути нуль рамок, дві, а може сімнадцять — з яких дві правильні, пʼять зайвих і десять майже правильних, зсунутих на кілька пікселів.

Тому питання «яка частка правильних відповідей» тут просто не має сенсу: щоб порахувати цю частку, треба спершу вирішити, яка прогнозована рамка якій розміченій відповідає. А для цього потрібна міра збігу двох прямокутників.

IoU: наскільки дві рамки — це та сама рамка

Міра зветься IoU (intersection over union, українською — «перетин, поділений на обʼєднання»). Ідея геометрична й не потребує жодної математики, складнішої за площу прямокутника.

Поклади дві рамки одна на одну. Частина площі належить обом — це перетин. Уся площа, яку разом накривають обидві рамки, — це обʼєднання. IoU — це перше, поділене на друге.

IoU = площа перетину ÷ площа обʼєднання

Якщо рамки збігаються ідеально, перетин дорівнює обʼєднанню, і IoU дорівнює одиниці. Якщо вони не торкаються, перетин нульовий, і IoU дорівнює нулю. Усе між нулем і одиницею — проміжні випадки. Порахуймо один із них руками на числах із нашого фото.

крок 1 · розмічена рамка

Розмітник обвів другий телефон прямокутником від точки (124, 61) до точки (217, 192). Ширина: 217 − 124 = 93 пікселі. Висота: 192 − 61 = 131 піксель. Площа: 93 × 131 = 12 183 пікселі.

крок 2 · рамка моделі

Модель видала рамку такого самого розміру, але зсунуту на 24 пікселі праворуч і на 20 вниз: від (148, 81) до (241, 212). Її площа теж 12 183.

крок 3 · перетин

Перетин двох прямокутників — теж прямокутник. Його ліва межа — більша з двох лівих (148), права — менша з двох правих (217). Так само по вертикалі: верхня межа 81, нижня 192.

ширина = 217 − 148 = 69  ·  висота = 192 − 81 = 111

Площа перетину: 69 × 111 = 7 659 пікселів.

крок 4 · обʼєднання

Якщо просто скласти дві площі, спільна частина потрапить у суму двічі. Тому її треба відняти один раз:

12 183 + 12 183 − 7 659 = 16 707
крок 5 · відповідь

7 659 ÷ 16 707 = 0.4584. Рамка накриває більшу частину телефона й на око виглядає майже правильною — а до звичного порога 0.5 не дотягує.

Цей поріг — угода, а не закон природи. Історично прижилось значення 0.5: рамку зараховують як влучну, якщо IoU з розміченою не менший за нього. Що воно означає на око? Для двох рамок однакового розміру арифметика дає точну відповідь: IoU 0.5 досягається, коли вони перекриваються рівно на дві третини своєї площі. Тобто «половина» в назві порога зовсім не означає «половина рамки збіглась» — вимога помітно суворіша. У нашому прикладі перекриття становить 7 659 із 12 183, тобто 63%, — і цього вже не вистачило.

Інтерактив 2 · IoU наочно

Бірюзова рамка — розмітка, вона нерухома. Рожеву рамку моделі можна зсувати й міняти їй розмір. Заштрихована ділянка — перетин двох рамок.

перетин
обʼєднання
IoU
поріг 0.5
Прожени всі три повзунки до країв. Початкове положення — саме той приклад, що порахований вище руками: 0.4584. Поверни зсув до 20 і 16 — IoU стає 0.5256, і та сама рамка з незмінного промаху перетворюється на влучну. Різниця між «зараховано» й «ні» — чотири пікселі.

Звідки береться mAP

Маючи IoU, оцінювання будується так. Беруть поріг (нехай 0.5) і зіставляють рамки моделі з розміченими. Прогнозована рамка, для якої знайшлась розмічена з IoU не меншим за поріг, — влучна. Зайва рамка, якій нічого не відповідає, — хибне спрацювання. Розмічений предмет, який модель проґавила, — пропуск. Це рівно ті самі три категорії, з яких складаються точність і повнота.

Далі є тонкість. Кожна рамка має ще й число впевненості, і чим нижчий поріг впевненості, тим більше рамок модель віддає: повнота росте, точність падає. Одного числа тут замало — потрібна крива. Площу під цією кривою для одного класу називають AP (average precision), а середнє AP по всіх класах — mAP (mean average precision). Часто рахують ще й середнє по кількох порогах IoU одразу, від 0.5 до 0.95, — тоді модель, яка ставить рамки акуратніше, отримує вищу оцінку, навіть якщо знаходить ті самі предмети. Розбирати mAP по кроках тут не будемо: цим займається блок 4, цілком присвячений детекції. Зараз важливо інше — запамʼятати, що детекція міряється не часткою правильних відповідей, і зрозуміти, чому саме.

04 / ПікселіСемантична сегментація

Семантична сегментація (semantic segmentation) робить крок, який спершу виглядає як «те саме, тільки точніше», а насправді змінює саму постановку. Модель призначає мітку класу кожному пікселю зображення. Вихід — масив тієї самої висоти й ширини, що й фото, де на місці кожного пікселя стоїть номер класу: 0 — стіл, 1 — телефон.

Різниця з детекцією не в акуратності, а в питанні, на яке дається відповідь. Детекція каже: «отут приблизно лежить телефон». Сегментація каже: «оці конкретні пікселі — телефон, а оці — не телефон». І це справді різні відомості, у чому легко переконатись на числах.

Схема 1 · Що всередині рамки і що всередині маски

Той самий телефон, дві форми відповіді. Ліворуч — прямокутна рамка, праворуч — піксельна маска. Заштриховане — те, що потрапило у відповідь помилково.

Що читати: телефон лежить під кутом, тому його прямокутна рамка має площу 15 207 пікселів, а сам телефон займає з них лише 7 915. Виходить, що 48% усього, що модель назвала «телефоном», — це насправді стіл. Маска дає рівно 7 915 пікселів і жодного зайвого.

Коли ця різниця дорого коштує? Щоразу, коли важлива форма або площа. Порахувати, яку частку екрана займає тріщина. Вирізати товар із фону, щоб поставити на білий фон каталогу. Обвести пухлину на знімку. Порахувати гектари поля на супутниковому знімку. У всіх цих задачах прямокутник відповіді не дає в принципі — не тому, що він неточний, а тому, що він відповідає на інше питання.

Метрика та сама, обʼєкт інший

Головна метрика сегментації — знову IoU, тільки тепер площі рахують не за формулою прямокутника, а лічильником пікселів. Перетин — скільки пікселів обидві маски назвали телефоном. Обʼєднання — скільки пікселів хоч одна з масок назвала телефоном. Ділимо перше на друге. У сегментації цю величину часто називають індексом Жаккара, але це те саме число.

Числа з нашого фото: якщо взяти справжню маску телефона й зсунути її на 8 пікселів праворуч і 6 вниз, перетин дасть 6 495 пікселів, обʼєднання — 9 111, а IoU буде 0.7129. IoU прямокутних рамок для тих самих двох масок — 0.7732. Маскова оцінка суворіша: рамка прощає похибку по кутах, маска — ні.

Коли класів більше двох, IoU рахують окремо для кожного класу й усереднюють — виходить mIoU (mean IoU). Поруч часто зустрічається коефіцієнт Дайса: він рахує подвоєний перетин, поділений на суму площ, і завжди трохи більший за IoU для того самого випадку. Обидва вимірюють одне й те саме, просто по-різному карають за помилку.

Чому не «частка правильних пікселів». Здавалося б, простіше: порахувати, скільки пікселів модель класифікувала правильно. На нашому фото два телефони займають 14 912 пікселів із 86 400 — тобто 17% кадру. Модель, яка тупо назве усе зображення столом, отримає 83% правильних пікселів і нуль користі. Це рівно та сама пастка незбалансованих класів, що й у темі про точність і повноту, тільки тут вона працює на кожному кадрі.

05 / ПредметиInstance: полічити предмети

У семантичної сегментації є межа, і вона видна саме на нашому фото. Маска каже про кожен піксель, до якого класу він належить. Вона нічого не каже про те, до якого предмета. Два телефони, що торкаються один одного, дають одну суцільну область класу «телефон» — і з цієї маски неможливо дізнатись, що апаратів було два.

Instance segmentation (сегментація екземплярів) прибирає саме це обмеження. Її вихід — не одна маска на клас, а список масок: окрема маска на кожен окремий предмет, з міткою класу для кожної. Два телефони — дві маски, навіть якщо вони злиплись в одну пляму.

Спокуслива думка, яка спадає першою: та ну, візьмімо семантичну маску й порахуємо в ній звʼязні плями — скільки плям, стільки й предметів. Цей прийом справді працює, поки предмети не торкаються. Перевір це сам.

Інтерактив 3 · Семантична проти instance

Повзунок розсуває телефони. Перемикач міняє те, що віддає модель. Кількість звʼязних областей рахується просто по маскі, як це зробив би найпростіший алгоритм.

що віддає модель
звʼязних областей
предметів насправді2
пікселів у маскі
спільних пікселів
Прожени повзунок від нуля до кінця в обох режимах. Поки апарати торкаються, семантична маска дає одну область на два предмети — і жоден лічильник плям цього не виправить. Розсунь їх — областей стане дві, і відповідь випадково збіжиться з правильною. Instance-режим дає двійку в будь-якому положенні повзунка, бо він рахує предмети, а не плями.

Прийом із лічильником плям ламається у двох напрямках одразу. Предмети, що торкаються, він зливає в один — це ти щойно бачив. А один предмет, перекритий чимось посередині — скажімо, телефон, через який лежить провід зарядки, — він, навпаки, порахує як два. У задачах, де рахують штуки (скільки телефонів у партії, скільки клітин у полі зору мікроскопа, скільки людей у черзі), обидві помилки трапляються постійно.

Технічно instance segmentation найчастіше будують як детекцію з добудовою: спершу знаходять рамки, потім усередині кожної рамки передбачають маску. Тому в неї є те, чого немає в семантичної, — число впевненості для кожного предмета, а отже, і метрики звідти ж таки, з детекції: те саме mAP, тільки IoU рахують по масках, а не по рамках.

06 / РазомPanoptic: усе разом

Лишилась дірка. Семантична сегментація добре описує те, що не рахується поштучно: стіл, небо, дорогу, траву. Instance добре описує те, що рахується: телефони, людей, машини. Англійською ці дві категорії так і називають — stuff (матерія) і things (речі). Реальне фото містить і те, і те.

Panoptic segmentation — це просто обʼєднання двох попередніх задач в одну відповідь. Кожен піксель зображення отримує пару чисел: клас і номер предмета. Для пікселів столу номер предмета порожній — стіл не рахують поштучно. Для пікселів першого телефона номер 1, другого — 2. Жоден піксель не лишається без відповіді, і жоден не отримує двох відповідей одразу.

Практичне значення просте: якщо задача звучить як «опиши мені все, що на кадрі, повністю й без дірок» — це panoptic. Так ставлять задачу для автономного водіння, де треба знати і де саме дорога, і скільки на ній машин. Детально ця постановка розбирається у блоці 5.

задачавихідметрикащо коштує розмітка
класифікаціяодна мітка на все фоточастка правильних, точність і повнотасекунди на фото
багатомітковакілька незалежних мітокточність і повнота по кожній мітцісекунди на фото
детекціясписок рамок із міткамиmAP на порозі IoUдесятки секунд на предмет
семантичнамасив H × W із номерами класівIoU і mIoU по класаххвилини на предмет
instanceсписок масок, по одній на предметmAP, де IoU рахують по маскаххвилини на предмет
panopticклас і номер предмета кожному пікселюPQ (panoptic quality)десятки хвилин на кадр
генераціянове зображення H × W × 3окрема історія: FID, оцінка людьмирозмітки в звичному сенсі немає

07 / РештаРешта карти

Пʼять задач із першого розділу — кістяк, але не вся карта. Ось іще пʼять постановок, які трапляються постійно. Кожна знову ж таки визначається формою свого виходу.

Ключові точки (keypoints). Вихід — список координат наперед відомих точок: суглоби людини, кути обличчя, кути документа. Не рамка й не маска, а саме набір пронумерованих точок, де номер має сенс: точка 3 — це завжди праве плече. Звідси оцінка пози, фільтри в камері й вирівнювання сфотографованого документа. На нашому фото ключовими точками були б чотири кути телефона — саме за ними його розвертають у прямокутник перед тим, як розпізнавати текст на екрані.

Трекінг у відео (tracking). Вхід — не одне зображення, а послідовність кадрів. Вихід — рамки з номерами, які зберігаються між кадрами: телефон, що був номером 7 на першому кадрі, лишається номером 7 і на сотому. Задача звучить як детекція, але має власну складність: предмет зникає за перешкодою й зʼявляється знову, і треба зрозуміти, що це той самий предмет, а не новий. Звідси підрахунок відвідувачів, аналітика матчів, контроль конвеєра.

Оцінка глибини (depth estimation). Вихід — масив тієї самої форми, що й фото, але в кожній клітинці не клас, а число: наскільки далеко ця точка від камери. Формою відповіді це сегментація, тільки замість міток — відстані, тобто регресія на кожному пікселі. Використовується в робототехніці, доповненій реальності й у тому самому розмитті фону на портретному фото.

Розпізнавання тексту (OCR). Задача складається з двох: спершу знайти, де на зображенні текст (детекція), потім прочитати, що там написано (перетворення картинки в рядок). Вихід — рамки плюс рядки. Саме так із фото телефона дістають IMEI, з фото документа — номер і дату, а з фото цінника — ціну.

Генерація зображень. Вихід — нове зображення, якого не існувало: масив H × W × 3. Сюди ж належать задачі, де на вхід іде зіпсоване фото, а на вихід — полагоджене: прибрати шум, збільшити роздільність, домалювати вирізаний шматок, поставити товар на білий фон. Головна незручність — оцінювати такий вихід нічим із того, що ми бачили: «правильної» відповіді не існує, тож або міряють статистичну схожість на справжні фото, або питають людей.

Схема 2 · Пʼять постановок поза основною пʼятіркою

Той самий домен — фото товару з дошки оголошень. Для кожної задачі показано, що саме модель віддає.

Що читати: вхід у всіх пʼяти панелях — те саме фото товару (у трекінгу — послідовність таких фото). Відрізняються лише форми відповіді: список координат, рамки з номерами, масив відстаней, рамки з рядками, нове зображення.

08 / ГрошіСкільки коштує розмітка

Тепер розділ, який у переліках задач зазвичай пропускають, а на реальному проєкті він вирішує більше, ніж вибір архітектури. Кожна з цих задач потребує розмічених даних, і розмітка різних типів коштує принципово різного часу.

Поставити одну мітку на фото — це подивитись і клацнути. Обвести рамку — це два точні кліки по кутах, а потім ще підправити. Обвести маску — це вести полігон по контуру предмета, ставлячи десятки точок, і тим довше, чим складніший контур. Різниця не у відсотках, а в порядках.

тип розміткичас на один обʼєкту скільки разів довше за мітку
мітка на все зображення1–5 с×1
кілька міток на зображення5–15 с×3
рамка навколо предмета7–30 с×10
ключові точки, 17 точок30–60 с×15
полігональна маска предмета2–10 хв×120
повна маска складної сцени30–90 хв×1000
Чесно про ці числа. Це орієнтир порядку величини, а не вимір. Реальний час залежить від інструмента (напівавтоматичне обведення прискорює маски в рази), від складності контуру, від кількості предметів у кадрі, від кваліфікації розмітника й від того, скільки часу з᾿їдає перевірка чужої роботи. Не перенось ці числа в кошторис — але користуйся їхнім співвідношенням, воно стійке: рамка коштує приблизно вдесятеро дорожче за мітку, а маска — приблизно вдесятеро дорожче за рамку.

Порахуймо на нашому прикладі. Хай треба розмітити сто фото, на кожному по два телефони, і візьмімо середні значення: 3 секунди на мітку, 15 секунд на рамку, 3 хвилини на маску.

класифікація

100 фото × 3 с = 300 секунд, тобто 5 хвилин. Один розмітник справляється між справами.

детекція

100 фото × 2 предмети × 15 с = 3 000 секунд, тобто 50 хвилин. Один вечір.

сегментація

100 фото × 2 предмети × 180 с = 36 000 секунд, тобто 10 годин. Повний робочий тиждень, якщо розмічати не весь день.

Схема 3 · Ціна розмітки в порядках величини

Шкала логарифмічна: кожна поділка — це час у десять разів більший за попередню. На лінійній шкалі перші три стовпчики просто злилися б із нулем.

Що читати: ті самі сто фото — 5 хвилин роботи для класифікації, 50 хвилин для детекції й 10 годин для сегментації. Різниця між першим і третім — у 120 разів. За той самий бюджет часу ти або розмітиш маски на сотні фото, або рамки на тисячах.

Ось чому вибір постановки — це майже завжди рішення про дані, а не про модель. Модель із рамками, навчена на 5 000 зображень, майже напевно виявиться кориснішою за модель із масками, навчену на 200, — просто тому, що друга не бачила достатньо різних телефонів, столів і освітлень. А якщо потрібна саме площа дефекту, то жодна кількість рамок цього не замінить, і доведеться платити за маски. Обидва висновки правильні; вирішує те, яке питання ставить замовник.

09 / ВибірЯк обрати постановку

Схема нижче — робочий порядок дій. Читати її треба зліва направо: спершу питання, на яке треба відповісти, потім задача, потім те, за що доведеться заплатити розміткою.

Схема 4 · Від питання замовника до типу розмітки

Три колонки: що саме треба знати, яка це задача, що доведеться розмітити. Знизу — правило, яке вирішує спірні випадки.

Що читати: перші пʼять рядків ідуть від найдешевшої постановки до найдорожчої — від мітки на все фото до маски на кожен предмет; OCR у кінці коштує як детекція. Правило одне: бери найдешевшу постановку, яка ще відповідає на питання замовника.

Найпоширеніша помилка новачка звучить так: «візьмімо одразу сегментацію, вона найдетальніша, з неї потім усе можна дістати». Логіка виглядає бездоганно й помилкова відразу в трьох місцях.

Перше. Детальніша відповідь потребує детальнішої розмітки — у сто разів дорожчої, як ми щойно порахували. За той самий бюджет ти отримаєш у сто разів менше навчальних прикладів, і модель вийде гіршою навіть на своїй власній задачі.

Друге. «Потім усе можна дістати» — неправда для головного випадку. Семантична маска не дає кількості предметів: два телефони, що торкаються, ти з неї не розділиш, і це не питання якості моделі, а властивість формату відповіді. Інтерактив вище показує саме це.

Третє. Складніша постановка складніше й живе. Її важче оцінювати (один поріг перетворюється на криву), важче налагоджувати, вона повільніша при роботі, і помилок у розмітці в неї на порядок більше — бо ручне обведення контуру просто фізично неточне, і два розмітники обведуть той самий телефон трохи по-різному.

Практичне правило. Постав питання так: яке рішення людина або система прийме, отримавши відповідь моделі? Якщо рішення — «пропустити оголошення чи відправити на перевірку», досить мітки. Якщо «показати покупцеві, де саме подряпина», потрібна рамка. Якщо «порахувати, яку частку екрана займає тріщина, і на цій підставі знизити ціну», потрібна маска. Формулювання рішення майже завжди однозначно називає потрібну форму відповіді.

10 / ДаліКуди далі

Тепер, зустрівши в описі вакансії чи в статті слова «детекція», «сегментація» чи «ключові точки», ти читаєш їх не як набір синонімів для «розпізнавання», а як конкретні формати відповіді: список рамок, масив міток на кожен піксель, список координат. І одразу бачиш, що за кожним із них стоїть — своя метрика, своя ціна розмітки й своє коло питань, на які він узагалі здатен відповісти.

Далі курс іде вглиб. У темі 03 ми беремо в руки OpenCV — бібліотеку, якою всі ці зображення читають, перетворюють і показують: змінити розмір, вирізати шматок, перевести в градації сірого, намалювати ту саму рамку поверх фото. Тема 04 розбирає згортку — операцію, з якої зроблені всі сучасні моделі зору. А постановки з цієї карти розкриваються поблоково далі: детекція — у блоці 4, сегментація — у блоці 5, відео й трекінг — у блоці 6, генерація — у блоці 8. Карта в тебе тепер є; лишається пройти кожну дорогу.

Далі в практиці. У practice.ipynb ти згенеруєш ту саму сцену з двома телефонами на NumPy, власноруч зробиш для неї розмітку всіх пʼяти типів і подивишся, скільки місця займає кожна; порахуєш IoU двох рамок руками й звіриш із формулою через assert; порахуєш IoU масок; побачиш різницю семантичної та instance-розмітки числом — через cv2.connectedComponents; і наприкінці оціниш, скільки часу зайняла б розмітка сотні таких зображень кожним із трьох способів.

Далі в темі

Теорію прочитано. Тепер закріпи її на практиці.