Semantic Segmentation vs Instance Segmentation: коли використовувати кожен метод
Ключова різниця одним реченням
Semantic segmentation класифікує кожен піксель у категорію (дорога, тротуар, будівля), але трактує всі об'єкти одного класу як одне ціле. Якщо дві машини припарковані поруч — вони обидві просто "автомобіль", єдиний зв'язаний регіон.
Instance segmentation робить все те саме, що semantic segmentation, плюс розділяє окремі об'єкти всередині одного класу. Ті дві припарковані машини стають "автомобіль #1" та "автомобіль #2", кожен зі своєю маскою.
Швидке правило: Якщо ваша модель повинна рахувати об'єкти, відстежувати їх між кадрами або розрізняти об'єкти, що перекриваються — вам потрібен instance segmentation. Якщо їй просто потрібно розуміти компонування сцени — semantic достатньо.
Порівняння
| Фактор | Semantic Segmentation | Instance Segmentation |
|---|---|---|
| Вихід | Піксельна маска класів | Маска per-object + мітка класу |
| Об'єкти, що перекриваються | Зливаються в один регіон | Кожен об'єкт отримує свою маску |
| Метод анотації | Зафарбовування за класом | Окремі polygons per-object |
| Час анотації | 5-15 хв/зображення (типово) | 10-45 хв/зображення (залежить від щільності) |
| Вартість анотації | $0.50 - $3/зображення | $2 - $15/зображення |
| Поширені моделі | U-Net, DeepLab, SegFormer | Mask R-CNN, YOLACT, SOLOv2 |
| Може рахувати об'єкти? | Ні | Так |
| Може відстежувати об'єкти? | Ні | Так (з tracking layer) |
Коли Semantic Segmentation — правильний вибір
Semantic segmentation працює найкраще, коли вас цікавлять типи поверхонь та розуміння сцени, а не окремі об'єкти. Типові випадки використання:
- Автономне водіння / навігація — класифікація дороги, тротуару, бордюру, трави, будівель. Модель повинна знати, де можна їхати, а не скільки тротуарів навколо.
- Супутникові та аерозображення — класифікація землекористування (ліс, вода, місто, с/г). Окремі дерева не важливі; важлива площа покриття.
- Медична візуалізація (типи тканин) — сегментація здорової тканини vs пухлини, або різних структур органів на скані.
- Розуміння інтер'єру — стіна, підлога, стеля, меблі для навігації робота.
Реальний приклад: Європейський телеком-оператор потребував сегментацію вуличних сцен для тренування моделей автономної навігації — класифікація поверхонь: асфальт, бетон, гравій, бруківка та бордюри. Semantic segmentation був правильним вибором: моделі потрібно розуміти, де які типи поверхонь, а не рахувати окремі бетонні плити. Читати кейс →
Коли Instance Segmentation — правильний вибір
Instance segmentation необхідний, коли вашій моделі потрібно ідентифікувати, рахувати або відстежувати окремі об'єкти:
- Промисловий контроль якості — підрахунок окремих продуктів на конвеєрі, виявлення дефектів на конкретних виробах, сортування за розміром.
- Лісове та сільське господарство — підрахунок окремих колод, дерев або плодів. Кожен об'єкт потребує своєї маски для вимірювання та сортування.
- Склад / рітейл — інвентаризація, аналіз полиць, виявлення окремих пакунків у купі.
- Медична візуалізація (підрахунок клітин) — ідентифікація окремих клітин, пухлин або уражень, коли кількість та розмір важливі для діагнозу.
- Робототехніка / pick-and-place — роботу потрібно точно знати, де починається і де закінчується кожен об'єкт для захоплення.
Реальний приклад: Скандинавська лісопромислова компанія потребувала сегментацію окремих колод у поперечних зрізах — з сильним перекриттям та в середньому ~280 точок polygon на зображення. Кожне колоду потребувало своєї маски для автоматизованого сканування та сортування. Instance segmentation був необхідний, бо модель повинна була розрізняти колоди переднього та заднього плану. Читати кейс →
А що з Panoptic Segmentation?
Panoptic segmentation поєднує обидва підходи: застосовує semantic segmentation до класів "stuff" (небо, дорога, трава — незліченні регіони) та instance segmentation до класів "things" (автомобіль, людина, собака — зліченні об'єкти).
Це найповніший метод розуміння сцени, але з компромісами:
- Найвища вартість анотації — потрібне як повне піксельне покриття, так і окремі маски об'єктів
- Складніші інструкції анотації — анотатори повинні знати, які класи "stuff", а які "things"
- Складніше тренування моделі — зазвичай потрібні архітектури типу Mask2Former, Panoptic FPN
Для більшості продакшн ML-команд вибір між semantic або instance segmentation — це практичне рішення. Panoptic має сенс для датасетів автономного водіння (як Cityscapes), де дійсно потрібні обидва підходи.
Не впевнені, який підхід підходить для ваших даних? Надішліть нам 10-20 зразкових зображень — ми порекомендуємо правильний тип анотації та дамо оцінку часу. Забронюйте безкоштовну 30-хвилинну консультацію або напишіть нам.
Реальна вартість анотації
Вибір між semantic та instance segmentation безпосередньо впливає на бюджет анотації. Ось чому:
Semantic segmentation передбачуваний
Час анотації масштабується зі складністю зображення (скільки класів, наскільки детальні межі), але не з кількістю об'єктів. Вулична сцена з 2 автомобілями займає приблизно стільки ж часу, як і з 20 — вони всі просто піксели "транспорт".
Instance segmentation масштабується з кількістю об'єктів
Кожен окремий об'єкт потребує окремого polygon. Зображення з 5 колодами займає набагато менше часу, ніж з 50 перекритими колодами. Щільні сцени (поперечні зрізи лісопилки, переповнені полиці, мікроскопія клітин) можуть коштувати в 3-5 разів дорожче для анотації, ніж розріджені сцени.
| Тип сцени | Semantic (за зображення) | Instance (за зображення) |
|---|---|---|
| Проста (мало класів, чіткі межі) | $0.50 - $1.00 | $1.50 - $3.00 |
| Середня (8-12 класів, деяке перекриття) | $1.50 - $3.00 | $4.00 - $8.00 |
| Щільна (багато об'єктів, сильне перекриття) | $2.50 - $5.00 | $8.00 - $15.00+ |
Для детального розбору цін на всі типи анотації дивіться наш Гайд з цін на розмітку даних.
Типові помилки при виборі
1. Використання instance segmentation, коли semantic достатньо
Якщо вашій моделі не потрібно рахувати або відстежувати окремі об'єкти, instance segmentation — це просто спалювання бюджету. Навігаційна модель, що класифікує "дорога" vs "не дорога", нічого не виграє від знання, що є 3 окремі ділянки дороги — їй потрібна лише маска класу.
2. Використання semantic segmentation, коли потрібен підрахунок
Трюки постобробки (аналіз зв'язаних компонентів) іноді можуть витягнути приблизну кількість з semantic масок, але погано працюють з об'єктами, що перекриваються або торкаються. Якщо підрахунок важливий для вашого випадку — анотуйте для instance segmentation від початку.
3. Відсутність пілотної партії
Перш ніж зобов'язуватися на 10 000+ зображень, анотуйте 100-500 зображень та перевірте, що обраний тип сегментації дійсно дає вашій моделі те, що потрібно. Перехід з semantic на instance після 5 000 зображень означає перерозмітку всього.
4. Ігнорування щільності анотації
Кількість об'єктів на зображення важливіша за кількість зображень при бюджетуванні instance segmentation. Візьміть зразок ваших даних і порахуйте середню кількість об'єктів на зображення перед запитом цінових пропозицій.
Чеклист для вибору
Дайте відповідь на ці запитання, щоб обрати правильний підхід:
- Ваша модель повинна рахувати окремі об'єкти? Так → Instance. Ні → можливо Semantic.
- Об'єкти одного класу перекриваються на ваших зображеннях? Так → Instance. Ні → Semantic може підійти.
- Ваша модель повинна відстежувати об'єкти між кадрами відео? Так → Instance. Ні → залежить від інших факторів.
- Ваш випадок — про компонування сцени / типи поверхонь? Так → Semantic. Ні → ймовірно Instance.
- Обмежений бюджет з великими датасетами? Semantic в 2-5 разів дешевший за зображення. Подумайте, чи відповідає дешевший варіант реальним потребам вашої моделі.
Все ще не впевнені? Почніть з маленької пілотної партії обома підходами (50-100 зображень кожний). Натренуйте швидкі моделі на обох і порівняйте метрики. Вартість анотації 200 тестових зображень мізерна порівняно з перерозміткою тисяч пізніше.