Уяви фотографію вулиці. Небо, дорога, тротуар — це те, що не рахують: питання «скільки на фото неба?» не має відповіді в штуках. Машини, люди, дорожні знаки — навпаки, рахують: три машини, дві людини. До цієї теми ми вміли робити або одне, або друге. Семантична мережа з теми 29 добре фарбує небо й дорогу, але не рахує машин. Модель із теми 31 рахує машини, але небо їй нецікаве зовсім.
Щоб описати одну фотографію повністю, доводиться запустити дві різні моделі й якось зшити їхні відповіді. Ця тема про те, чому зшити їх важче, ніж здається, і що з цього виросло. А в другій половині — про модель, яка взагалі відмовилась називати предмети, і саме тому виявилась корисною скрізь.
РозривДві моделі на одне зображення
Почнімо з чесного експерименту. Наскрізний приклад тут той самий, що в трьох попередніх темах блоку: полотно 64×64, на ньому кілька простих фігур — кола, квадрати, трикутники — на рівному фоні. Фігури можуть торкатись і затуляти одна одну, класів у них три, а фон вважається четвертим класом. Сцени взято з теми 28; вони штучні саме тому, що тут потрібна відома до пікселя істина — інакше не було б із чим порівнювати.
На цих сценах навчаємо дві мережі — семантичну з теми 29 (фарбує кожен піксель у клас) і instance з теми 31 (віддає список масок окремих предметів) — і кладемо їхні відповіді одна на одну. Обидві мережі робочі, жодного шкідництва.
Тепер питаємо кожен піксель, що він про себе почув. Виявляється, є три способи зіпсуватись, і жоден із них не є помилкою якоїсь однієї моделі.
- Спірний піксель. Семантична модель сказала «квадрат», а маска, яка його накрила, належить колу. Або семантична сказала «фон», а instance-маска все одно накрила. Дві відповіді, і вони різні.
- Перекритий піксель. Його накрили дві або більше масок. Для instance-моделі це нормально: її вихід — список масок, і вони мають повне право перетинатись. Для однієї відповіді на піксель — ні.
- Дірка. Семантична модель назвала піксель предметом, а жодна маска його не накрила. Він лишився без номера предмета, тобто без відповіді взагалі.
Замір ішов на 70 перевірних сценах, і кожну з двох мереж навчено по три рази з різних початкових ваг — щоб число не залежало від одного вдалого запуску. Рахувати частку зіпсованих від усього полотна безглуздо: фону там більшість, а фон обидві моделі й так називають фоном. Тому знаменник інший — усі пікселі, які хоч одна з двох моделей назвала предметом. Серед них зіпсованих (спірних, перекритих або порожніх) виходить 54.5 % — більше за половину.
Ті самі три числа, віднесені до всього полотна 64×64, дають 4.84 % спірних, 3.77 % перекритих і 2.62 % дірок — разом 11.23 % кожного кадру. Друга форма менша й виглядає нестрашно, і саме тому першу варто тримати поруч: вона каже, яка частка відповідей про предмети зіпсована, а не яка частка картинки.
Дві моделі, один піксель
Обидві моделі трохи неточні: повзунки задають, на скільки пікселів кожна з них «розпливається». Права панель показує, що з цього виходить.
ПоділРечі й матерія
Перш ніж зшивати, варто спитати, звідки взявся сам поділ. Чому небо фарбує одна модель, а машини знаходить інша?
Відповідь незручна: поділ придумали ми. У світі немає межі між «речами» і «матерією» — є два різні способи ставити питання.
| Категорія | Англійською | Питання, на яке відповідає | Приклади |
|---|---|---|---|
| речі | things | скільки їх і де кожна | машина, людина, чашка, книжка |
| матерія | stuff | де воно є, а де немає | небо, дорога, вода, стіна |
Ознака, за якою розводять ці категорії, — чи має сенс рахувати штуки. Небо на фото одне, і питання «скільки шматків неба?» безглузде. Машин може бути пʼять, і питання «скільки?» — головне, заради чого знімок узагалі дивляться.
Але межа тече. Трава на газоні — матерія: ніхто не рахує травинки. Трава в горщику — річ: горщиків три. Дерева в лісі — матерія, дерево на подвірʼї — річ. Цеглини стіни — матерія, поки не ремонтуєш стіну. У наборі COCO-Stuff «кущі» — матерія, у наборі для садівництва вони були б речами.
Найчесніше формулювання таке: категорія залежить не від предмета, а від задачі. І коли одна модель уміє тільки речі, а друга тільки матерію, ти успадковуєш цей штучний поділ у своїй архітектурі — навіть якщо для твоєї задачі він не має сенсу.
У наших сценах поділ такий: фон — матерія, три фігури — речі. Полотно 64×64, фону багато: на рідких сценах теми 29 він займає 89.34 % пікселів у навчальній частині й 90.01 % у перевірній. Фігури дрібні, і ця пропорція навмисне копіює справжні знімки, де матерія займає більшість пікселів, а речі — більшість уваги.
ПостановкаКожен піксель дістає рівно одну пару
Panoptic segmentation ставить вимогу, яку легко сформулювати й важко виконати:
Розберімо її по словах.
Дірок немає. Піксель без відповіді — це помилка, а не «нічого не знайдено». Саме тут ламається instance-модель: у неї між масками порожньо, і ця порожнеча не має ані класу, ані номера.
Перекриттів немає. Дві маски не можуть претендувати на один піксель. Саме тут ламається спосіб «зверху вниз»: маски предметів у Mask R-CNN (тема 31) перетинаються завжди, бо кожна рахується у своїй рамці незалежно від сусідів.
Номер потрібен лише для речей. Для матерії він завжди нульовий: усі пікселі неба — один сегмент, і питання «яке саме небо» не існує.
Звідси випливає термін, на якому тримається вся метрика. Сегмент — це звʼязна відповідь моделі: для речі — маска одного предмета, для матерії — усі пікселі цього класу на зображенні разом. Якщо на знімку три машини й небо, сегментів чотири: три речі й одна матерія.
МетрикаPQ і її множники
Метрика зветься PQ, panoptic quality. Вона рахується на сегментах і складається з двох частин, які варто розуміти окремо.
Крок перший — зіставлення. Прогнозований сегмент і істинний сегмент
одного класу утворюють пару, якщо їхній IoU більший за
0.5.
IoU (intersection over
union) — міра збігу двох масок: площа, яку вони накривають обидві, поділена на
площу, яку вони накривають разом. Приклад руками: істинна маска — 100 пікселів,
прогноз — 120, спільних у них 90. Тоді разом вони накривають 100 + 120 − 90 = 130, і
IoU = 90 / 130 = 0.6923. Одиниця означає точний збіг, нуль — маски не
торкаються. Докладно ця міра розібрана в
темі 23.Поріг саме такий не з естетики. Уяви, що два прогнозовані сегменти обидва накрили той самий істинний більш ніж наполовину. Тоді разом вони покривають більше за його повну площу — отже, десь мусять накрити один і той самий піксель удвох. Але в panoptic-відповіді сегменти не перетинаються за постановкою, тож такого бути не може. Висновок: при порозі понад половину пара, якщо вона є, єдина. Пари утворюються однозначно, і жодного правила вибору вигадувати не треба.
Крок другий — два числа. Позначмо: TP — скільки пар утворилось, FP — скільки прогнозованих сегментів лишилось без пари, FN — скільки істинних лишилось без пари.
Це звичайний F1, тільки не по пікселях, а по сегментах: скільки
сегментів модель узагалі знайшла. F1 — це компроміс між двома бідами:
«знайшов зайве» (FP) і «проґавив потрібне»
(FN). Половинки перед ними й роблять цей компроміс рівним:
кожна з двох бід коштує пів помилки, і жодну не можна перекрити іншою. Порахуймо
руками: істинних сегментів 5, модель знайшла 4 правильно, одне вигадала й одне
проґавила. Тоді RQ = 4 / (4 + 0.5 + 0.5) = 4 / 5 = 0.8000.
Це середня якість маски серед тих сегментів, які таки знайшлись: наскільки точно. І остаточно:
Метрика рахується окремо в кожному класі, а потім усереднюється по класах. Ось
чому розклад на множники важливіший за саме PQ: RQ і SQ
відповідають на два різні питання, і однакове PQ може означати протилежні речі.
PQ = SQ × RQ справджується всередині класу. Щойно ми
усереднили по чотирьох класах, вона перестає справджуватись: середнє добутків — не
добуток середніх. Порахуй на двох числах: класи з парами (SQ 1.0, RQ 0.5) і (SQ 0.5,
RQ 1.0) дають PQ 0.5 і 0.5, тобто середнє PQ = 0.50; а добуток середніх — 0.75 × 0.75
= 0.5625. Тому в таблицях нижче стовпчик PQ не дорівнює добутку сусідніх стовпчиків, і
це не помилка друку. Інтерактив 2 нижче навмисне рахує одне зображення без
усереднення — там добуток сходиться точно, і саме там формулу видно.PQ по кроках
Кнопка «крок» веде через увесь розрахунок: сегменти → зіставлення → TP, FP, FN → RQ → SQ і PQ. Повзунок зсуває прогноз і міняє числа.
Найкорисніше, що можна винести з цього розділу, — уміння читати PQ назад. Однакове число буває в моделі, яка знайшла мало сегментів, зате точних, і в моделі, яка знайшла всі, але грубо.
Однакове PQ, різні SQ і RQ
Вісім однакових предметів. Повзунок каже, скільки з них модель знайшла; точність масок підбирається під нього так, щоб PQ майже не мінялось — від 0.6076 до 0.6510 на всьому ході.
Чому одне числоЧому не досить mIoU + mask AP
Резонне заперечення: у нас уже є дві метрики. mIoU з
теми 29 міряє пікселі,
mask AP з теми 31
міряє предмети. Хіба їхня пара не описує все?
Ні, і причина проста: у кожної з них є сліпа пляма, і сліпі плями не перетинаються. Щоб побачити ці плями, потрібні моделі з наперед відомим дефектом. Тому беремо еталонну розмітку й псуємо її шістьма різними способами — тоді кожен рядок таблиці нижче має відому причину:
- ідеальна — розмітка як є, без псування; рядок-опора;
- зливає дотичні — два предмети одного класу, що торкаються, дістають один номер замість двох. Пікселі при цьому всі правильні;
- ріже предмет навпіл — навпаки: один предмет дістає два номери. Пікселі теж усі правильні;
- зсув на 2 px — уся розмітка зсунута на два пікселі. Номери правильні, межі — ні;
- дзьобає фон — частина пікселів фону дістає клас предмета, але без номера. Самі предмети не зачеплено;
- губить кожен третій — кожен третій предмет прибрано зі списку зовсім.
| модель | PQ | mIoU | mask AP |
|---|---|---|---|
| ідеальна | 1.0000 | 1.0000 | 1.0000 |
| зливає дотичні | 0.8808 | 1.0000 | 0.7922 |
| ріже предмет навпіл | 0.5292 | 1.0000 | 0.6961 |
| зсув на 2 px | 0.5840 | 0.7083 | 0.7722 |
| дзьобає фон | 0.9804 | 0.7793 | 1.0000 |
| губить кожен третій | 0.7707 | 0.6419 | 0.5660 |
Дивись на два підсвічені рядки.
«Зливає дотичні» — модель, у якої всі пікселі правильні до одного.
Вона просто не розділяє предмети, що торкаються: дві кулі на столі дають одну маску.
mIoU тут дорівнює 1.0000 — рівно одиниці, бо жодної помилки класу не
зроблено. PQ падає до 0.8808. А сусідній рядок «ріже предмет навпіл» — та сама
помилка, тільки в інший бік — має ту саму одиницю mIoU й PQ уже
0.5292.
«Дзьобає фон» — навпаки. Усі предмети знайдені ідеально, а зіпсовано лише
фон: частина його пікселів дістала клас без жодного предмета. mask AP
цього не помічає взагалі — 1.0000, — бо фон у нього не входить за побудовою.
Отже пара має сліпу пляму з кожного боку. І жодне усереднення двох чисел її не
закриває: на моделі «зливає дотичні» «ідеально» каже mIoU, а на моделі
«дзьобає фон» те саме каже mask AP.
Якщо впорядкувати ці шість моделей за кожною з трьох метрик, порядки виходять різні. Найрізкіше
розходження — на моделі «ріже предмет навпіл»: за mIoU вона
третя з шести, за PQ — остання. Метрика, що дивиться лише на пікселі, не
бачить різниці між «один предмет» і «два його шматки», бо клас пікселя від цього не
міняється. PQ бачить: сегментів стало вдвічі більше, ніж є, і половина з них ні з
чим не зіставилась.
Дві сліпі плями, які не перекривають одна одну
Перемикач обирає, що саме зіпсовано в моделі. Ліворуч істина, праворуч — те, що модель віддала. Стовпчики — ті самі три числа з таблиці вище.
mIoU: жоден піксель не змінив класу,
змінилась лише кількість предметів. На «дзьобає фон» одиницю показує
mask AP: усі предмети на місці, зіпсовано тільки те, чого mask AP не
бачить за побудовою. PQ не обманюється в жодному з двох випадків — тому пара
метрик і не заміняє його.Дві половиниРечі окремо, матерія окремо
PQ прийнято розкладати ще й на дві половини: PQ_th — середнє по
класах речей, PQ_st — по класах матерії. На перший погляд це просто
зручна деталізація. Насправді тут причаїлась пастка.
На наших сценах речей три класи, матерії один. Ось PQ у кожному з чотирьох, на тих самих 70 перевірних сценах:
| клас | PQ | SQ | RQ | TP | FN |
|---|---|---|---|---|---|
| фон (матерія) | 0.9545 | 0.9545 | 1.0000 | 70 | 0 |
| коло | 0.6639 | 0.8178 | 0.8118 | 69 | 15 |
| квадрат | 0.5730 | 0.8179 | 0.7006 | 62 | 13 |
| трикутник | 0.5608 | 0.7166 | 0.7826 | 63 | 14 |
Подивись на RQ фону: 1.0000. Це не тому, що модель добра, а тому,
що сегмент матерії знайти майже неможливо не зуміти. Він один на
зображення й займає більшість пікселів; щоб не влучити в нього з IoU
більшим за 0.5, треба помилитись катастрофічно. Тому RQ матерії
прилипає до одиниці, і PQ_st фактично дорівнює її SQ.
Речі проти матерії
Ліворуч — істина, праворуч — прогноз. Один повзунок губить предмети, другий псує фон. Стовпчики показують, що з цього бачить кожна половина метрики.
Своя головаСвоя panoptic-голова
Тепер найцікавіше. Ми бачили, що зшивання двох моделей вимагає вигаданого правила. Перевіримо три такі правила:
- речі поверх усього — маски кладуться за спаданням упевненості, піксель дістається тій, яка взяла його першою;
- лише там, де семантика згодна — маска предмета забирає тільки ті пікселі, яким семантична модель дала той самий клас;
- поріг площі — те саме, що перше, плюс сегменти, менші за 20 пікселів, викидаються.
| правило злиття | PQ | SQ | RQ | розкид |
|---|---|---|---|---|
| речі поверх усього | 0.6015 | 0.8003 | 0.7362 | 0.0885 |
| де семантика згодна | 0.6185 | 0.8032 | 0.7510 | 0.1707 |
| поріг площі 20 px | 0.6107 | 0.8002 | 0.7490 | 0.0898 |
І ось перший чесний результат розділу: різниця між правилами — +0.0170 і +0.0092 за PQ при розкиді по зернах до 0.1707. Тобто жодне правило не виграє: усі три лежать усередині розкиду. Це не поразка ідеї, а вказівка, де насправді втрачається якість — не в правилі злиття, а в самих моделях, які ми зшиваємо.
Але правило лишається вигаданим. Альтернатива — одна модель, яка одразу віддає panoptic-карту. Найпростіша конструкція така:
Семантична. Клас кожного пікселя, чотири канали. Вона відповідає за матерію і за те, який саме клас у речі.
Голосування за центр. Два числа на піксель: наскільки треба зсунутись праворуч і вниз, щоб потрапити в центр свого предмета. Додай ці два числа до координат самого пікселя — і дістанеш точку, у яку він «голосує». Пікселі одного предмета голосують в одну точку, різних — у різні, тож на карті голосів зʼявляються згустки: по одному на предмет. Скільки згустків — стільки предметів, а піксель належить тому, у чий згусток він показав. Це рівно та гілка, яку тема 31 міряла окремо.
Правило тут не вигадане, а вбудоване: кожен піксель належить рівно одному згустку голосів усередині свого класу. Перекриттів не буває за побудовою, дірок теж — бо клас пікселя вже є, і він або матерія, або належить найближчому центру.
Навчена на трьох зернах, така голова дає PQ 0.5058 проти 0.6185 у найкращого зшивання. Різниця -0.1127 при найбільшому розкиді по зернах 0.2309 — тобто вона менша за розкид, і різницею називати її не можна. І це головний результат розділу: одна модель виграє не точністю, а тим, що в неї немає чого налаштовувати. Правило злиття не обирають — воно випливає з того, як влаштований вихід.
Правила злиття
Ліва панель — те, що не зійшлось між двома моделями. Середня — результат обраного правила. Права — істина, з якою ми його порівнюємо.
Інша постановкаЗміна постановки: сегментація за підказкою
Усе, що ми робили досі — і в цій темі, і в трьох попередніх, — це «сегментуй усе, що знаєш». Модель має список класів, вивчений наперед, і про предмет поза списком сказати їй нічого.
SAM (segment anything model) ставить питання інакше:
Модель приймає зображення й підказку — точку, рамку, грубу маску — і віддає маску предмета, на який ця підказка вказує. Вона нічого не класифікує. На виході немає жодного класу: лише маска.
Це та сама зміна, що CLIP зробив для класифікації в темі 22. Там модель перестала мати фіксований список відповідей і почала відповідати на довільний текстовий запит. Тут модель перестала мати список класів і почала відповідати на довільну просторову підказку. Паралель точна аж до наслідків: обидві моделі стають придатними до предметів, яких не бачили, і обидві перестають самі по собі розвʼязувати прикладну задачу.
Свій сегментаторСвоя модель за підказкою
Справжній SAM — модель на сотні мільйонів ваг, навчена на мільярді масок; ані навчити її заново, ані чесно переміряти на наших сценах ми не можемо. Тому далі йде власна крихітна мережа за тією самою постановкою: вона не повторює SAM за якістю, зате повторює його механізм — і саме механізм тут і треба побачити. Так само робили тема 22 з CLIP і тема 25 з YOLO.
Конструкція мінімальна. Вхід — два канали: зображення й карта підказки (кружечок радіуса 2 навколо точки). Тіло — той самий U-Net із теми 30: стискаємо картинку до грубих ознак і розтискаємо назад, тягнучи через скіп-зʼєднання дрібні деталі з ранніх шарів. Вихід — одна маска, без жодного класу.
Результат: IoU 0.8319 на трьох зернах. Для порівняння — інший спосіб відповісти на ту саму підказку: сегментувати все, а потім узяти пляму, у яку потрапила точка. Це найчесніший представник підходу «спершу все, потім вибір», і він дає 0.7534.
Різниця +0.0785 береться з одного місця: спосіб «сегментуй усе» не має жодного механізму, щоб відрізнити предмет від сусіда свого класу. Він віддає пляму цілком — те саме злипання, яким починалась тема 31. Модель за підказкою має цей механізм: підказка й є той механізм.
Підказка точкою
Повзунки рухають точку по сцені. Перемикач змінює спосіб відповіді: модель за підказкою чи «сегментуй усе, потім вибери».
НеоднозначністьОдна підказка, кілька правильних відповідей
Тепер найцікавіше в усій SAM-частині. Точка не визначає відповідь.
Клацни в стінку кільця. Що ти мав на увазі — стінку чи кільце цілком? Клацни в колесо машини — колесо, машину чи всю вантажівку з причепом? Усі ці відповіді чесні, і жодна не помилкова.
На наших сценах ця неоднозначність теж є, і вона природна. Показавши в коло, яке торкається квадрата, ти міг мати на увазі три різні речі:
- саме це коло — окремий предмет;
- усі кола цієї злиплої групи — свій клас усередині групи;
- усю групу цілком — усе, що злиплось в одну пляму.
Три вкладені відповіді, як «стінка → кільце → вся конструкція». На нашій перевірній вибірці таких підказок 58.1 % — тобто більшість.
Що робить модель, яку змусили дати одну маску? Вона мусить усереднити — і осідає на компромісі, який не збігається з жодною з трьох чесних відповідей. Справжній SAM віддає три маски на кожну підказку саме через це.
Навчається він так: похибка рахується для кожного з трьох виходів окремо, і далі беруть лише найменшу з трьох — саме її, і тільки її, пускають назад по мережі підправляти ваги. Тобто на кожній підказці вчиться тільки той вихід, який цього разу вгадав найкраще; решта двох цього прикладу просто не бачать. Наслідок накопичується: вихід, якому раз пощастило на дрібному предметі, наступного разу знову виявиться найкращим саме на дрібному — і поступово виходи розбирають рівні між собою. Один тяжіє до дрібного, інший до великого, і ніхто нікого не тягне до середнього.
IoU
найкращого з виходів. Для моделі з одним виходом «найкращий» означає
«єдиний», тож нікому не легшає.Замір дає: одна маска — 0.5924, три маски — 0.8177, різниця +0.2253. Розкид по трьох зернах: 0.3026 в моделі з одним виходом і 0.0194 у моделі з трьома.
Формально виграш +0.2253 менший за розкид одновиходової моделі (0.3026), і назвати його доведеним у звичному сенсі не можна. Але подивись, чий це розкид: у моделі з трьома виходами він 0.0194, тобто в 16 разів менший. Головний результат тут не середнє, а сама ця пара чисел: три виходи дають стабільне число, один вихід — лотерею.
І ще одна деталь, помітна лише в лічильнику: третій вихід не знадобився жодного разу. Якщо на кожній підказці записувати, який із трьох виходів виявився найкращим, то по всіх трьох зернах виходить те саме — працюють два, третій простоює. Це чесно каже, скільки рівнів насправді є в наших сценах: два, а не три. У справжнього SAM їх теж не завжди три — просто на фотографії реального світу вкладених рівнів більше, ніж на полотні 64×64.
Механізм за цими числами простий. Модель з одним виходом дістає суперечливі градієнти: той самий вхід тягне її то до предмета, то до групи, і куди вона зрештою осяде, вирішує зерно. Три виходи цієї суперечності не мають — кожен рівень дістається своєму виходу, ніхто ні з ким не бореться.
Три однаково чесні відповіді
Підказка стоїть у центрі обраного предмета. Друга панель показує три вкладені відповіді, які всі правильні. Перемикач порівнює модель з одним виходом і з трьома.
Види підказокТочка, рамка, маска, текст
Точка — не єдина підказка. SAM приймає їх кількох видів, і різняться вони тим, скільки неоднозначності лишають по собі.
| Підказка | Що каже моделі | Скільки лишає неоднозначності |
|---|---|---|
| точка | «десь тут» | багато: рівень предмета невідомий |
| кілька точок | «тут так, а тут ні» | менше: відʼємні точки відрізають зайве |
| рамка | «ось у цих межах» | мало: розмір заданий |
| груба маска | «приблизно ось так» | майже немає |
| текст | «ось це слово» | залежить від слова |
Перші два рядки цієї таблиці ми заміряли: та сама мережа, той самий бюджет, міняється лише те, що намальовано в каналі підказки — кружечок радіуса 2 чи залитий прямокутник рамки.
| підказка | усі | предмет сам | предмет у групі | розкид |
|---|---|---|---|---|
| точка | 0.8319 | 0.9042 | 0.7797 | 0.0691 |
| рамка | 0.8948 | 0.9601 | 0.8476 | 0.0288 |
Рамка виграє +0.0629 у середньому, і формально це менше за розкид по зернах (0.0691 у точки). Але дивитись треба не на розкид, а на самі зерна: найгірше зерно рамки — 0.8756, найкраще зерно точки — 0.8732. Рамка виграла в кожному з трьох прогонів, і виграла найбільше саме там, де точка лишає неоднозначність: на предметах усередині групи +0.0679 проти +0.0559 на предметах, що стоять окремо.
Про текстову підказку варто сказати окремо, бо навколо неї найбільше плутанини. У самій моделі SAM текстового входу немає — його додають зовні: текст перетворюють на область через CLIP-подібну модель, а вже область подають як підказку. Тобто «сегментація за текстом» — це дві моделі в ланцюжку, і слабка ланка там та, що розуміє текст, а не та, що малює маску.
НаслідкиЩо дав SAM галузі
Головне число SAM — не якість, а масштаб даних. Модель навчали на наборі SA-1B: 11 мільйонів зображень і 1.1 мільярда масок (числа з публікації авторів, ми їх не міряли). Для порівняння: COCO — це близько 200 тисяч зображень і 1.5 мільйона масок предметів.
Що з цього вийшло на практиці.
- Напівавтоматична розмітка. Найчесніша користь. Розмітник клацає в предмет замість того, щоб обводити його по контуру, — і година роботи дає в десятки разів більше масок. Тема 02 рахувала цю ціну: сто фото з двома предметами на кожному — це десять годин обведення контурів. Підказка змінює саме цю цифру.
- Маска як заготовка. SAM дає контур, а твоя модель уже вирішує, що це таке. Такий поділ праці дозволяє вчити класифікатор на дешевих даних, не розмічаючи піксельні маски взагалі.
zero-shotна нових доменах. Тобто без жодного прикладу з цієї галузі: модель не донавчали й нічого їй не показували. Медичні знімки, супутникові фото, мікроскопія — SAM обводить предмет, якого не бачив ані разу. Не завжди добре, але часто досить, щоб зекономити перший тиждень роботи.
ПідсумокПідсумок блоку 6 і місток далі
Блок 6 закінчено. Чотири теми — і одна лінія крізь них: питання стає точнішим, і кожне уточнення коштує окремої архітектури.
| Тема | Питання до пікселя | Головне число |
|---|---|---|
| 29 | якого ти класу? | фон 89.34 % на навчальній частині, і модель «усе фон» дає на перевірній точність 0.9001 при mIoU 0.0000 |
| 30 | де точно проходить межа? | без скіпів розрив росте вдвічі з кожним рівнем стискання: 0.0191, 0.0523, 0.1117, 0.2535 |
| 31 | якому предмету ти належиш? | звʼязні плями відновлюють 1.000 вільних предметів і 0.343 дотичних |
| 32 | клас і предмет разом, одна відповідь | зшивання двох моделей псує 54.5 % пікселів предметів |
Що варто забрати з блоку.
- Дисбаланс класів — не деталь навчання, а сама задача. Фон, що займає
близько девʼяти десятих кадру, означає: метрика, у яку входить фон, показує майже
саму лише його частку.
Звідси
mIoU, звідсиDice, звідси PQ, усереднена по класах, а не по пікселях. - Роздільність втрачається легко, а повертається дорого. Три способи повернути її (тема 29) і скіп-зʼєднання (тема 30) коштують тим більше, чим глибше стискання: ціна відсутнього скіпа подвоюється з кожним рівнем.
- Питання «скільки їх?» ламає постановку. Вихід стає списком невідомої довжини, і це та сама складність, що в детекції (тема 23).
- Метрика мусить міряти те, чим ти користуватимешся. Пара mIoU + mask AP має сліпу пляму з кожного боку; PQ закриває обидві, але вимагає читати себе множниками.
- Перевага однієї моделі — не в точності. Наш замір це показав прямо: власна panoptic-голова дала 0.5058 проти 0.6185 у зшивання, тобто програла. Виграє вона в іншому: у неї немає вигаданого правила злиття, яке доводиться обирати й підганяти. А перебір правил дає різницю всередині розкиду по зернах.
- Зміна постановки сильніша за зміну архітектури. SAM не переміг решту в якості — він змінив питання, і саме тому виявився корисним там, де його ніхто не вчив.
І тепер про те, чого ми досі не вміємо. Усе, що робив блок 6, стосується одного нерухомого зображення. Ми питали піксель про клас, про межу, про предмет — але жодного разу не питали, що з ним було секунду тому.
Наступний блок — «Відео, текст і 3D» — додає до картинки час, і разом із ним нові задачі, у яких відповідь на кадрі залежить від сусідніх кадрів: оптичний потік, стеження за предметом, розпізнавання дії. Далі до зображення додається текст, а потім і третій вимір: глибина, форма, сцена як обʼєм. Місток до всього цього вже прокладено — CLIP із теми 22 показав, що зображення й слова можуть жити в одному просторі, а ця тема показала, що модель може відповідати на підказку замість того, щоб знати відповіді наперед.