Посібник із семантичної сегментації 2021 року

Вихідний вузол: 872271

Введення

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

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

Джерело http://cs224d.stanford.edu/index.html

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

Що таке сегментація зображення

Ми знаємо, що зображення – це не що інше, як набір пікселів. Сегментація зображення — це процес класифікації кожного пікселя зображення, що належить до певного класу, і, отже, може розглядатися як проблема класифікації пікселя. Існує два типи техніки сегментації

Source http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf
  1. Семантична сегментація :- Семантична сегментація – це процес класифікації кожного пікселя, що належить до певної мітки. Він не відрізняється в різних екземплярах одного об’єкта. Наприклад, якщо на зображенні є 2 коти, семантична сегментація дає однакову мітку всім пікселям обох котів
  2. Сегментація екземплярів :- Сегментація екземплярів відрізняється від семантичної сегментації тим, що вона дає унікальну мітку кожному екземпляру певного об’єкта на зображенні. Як видно на зображенні вище, всім 3 собакам присвоєно різні кольори, тобто різні мітки. За допомогою семантичної сегментації всім їм було б присвоєно однаковий колір.

Тепер ми підійдемо до точки, де нам знадобиться такий алгоритм

Варіанти використання сегментації зображення

Розпізнавання рукописного тексту :- Junjo та інші продемонстрували, як семантична сегментація використовується для вилучення слів і рядків із рукописних документів у своїх Дослідницький документ 2019 року розпізнавати рукописні символи

Source

Портретний режим Google :- Є багато випадків використання, коли абсолютно важливо відокремити передній план від фону. Наприклад, у портретному режимі Google ми можемо бачити фон розмитим, а передній план залишається незмінним, що створює крутий ефект

Джерело: https://ai.googleblog.com/2018/03/mobile-real-time-video-segmentation.html

Історії YouTube :- Google нещодавно випустив функцію YouTube stories для творців контенту, щоб показувати різний фон під час створення історій.

Джерело: https://ai.googleblog.com/2018/03/mobile-real-time-video-segmentation.html

Віртуальний макіяж :- Нанесення віртуальної губної помади тепер можливо за допомогою сегментації зображення

Джерело: - https://www.theverge.com/2017/3/16/14946086/sephora-virtual-assistant-ios-app-update-ar-makeup

4.Віртуальна примірка :- Віртуальна примірка одягу – це цікава функція, яка була доступна в магазинах за допомогою спеціалізованого обладнання, яке створює 3D-модель. Але за допомогою глибокого навчання та сегментації зображення те саме можна отримати, використовуючи лише 2D зображення

Джерело: https://arxiv.org/pdf/1807.07688.pdf

Візуальний пошук зображень :- Ідея сегментації одягу також використовується в алгоритмах пошуку зображень в електронній комерції. Наприклад, Pinterest/Amazon дозволяє завантажувати будь-яке зображення та отримувати пов’язані подібні продукти, виконуючи пошук зображень на основі сегментації частини тканини

Джерело: https://github.com/paucarre/tiefvision

Самозахищені автомобілі :- Безпілотним автомобілям потрібне повне розуміння навколишнього середовища до піксельного ідеального рівня. Тому сегментація зображення використовується для ідентифікації смуг та іншої необхідної інформації

Джерело: https://medium.com/intro-to-artificial-intelligence/semantic-segmentation-udaitys-self-driving-car-engineer-nanodegree-c01eb6eaf9d

Nanonets допомагає компаніям зі списку Fortune 500 покращити взаємодію з клієнтами в масштабі за допомогою семантичної сегментації.

Методи і прийоми

До появи глибокого навчання для вирішення проблеми сегментації зображень використовувалися класичні методи машинного навчання, такі як SVM, Random Forest, K-means Clustering. Але, як і у випадку з більшістю постановок проблем, пов’язаних із зображеннями, глибоке навчання спрацювало значно краще, ніж існуючі методи, і тепер стало нормою при роботі з семантичною сегментацією. Давайте розглянемо методи, які використовуються для вирішення проблеми

Повністю згорточна мережа

Загальна архітектура CNN складається з кількох згорткових і об’єднуючих рівнів, за якими йде кілька повністю з’єднаних рівнів у кінці. У документі Fully Convolutional Network, опублікованому в 2014 році, стверджується, що останній повністю пов’язаний рівень можна вважати згорткою 1×1, яка охоплює всю область.

Джерело: https://arxiv.org/abs/1411.4038

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

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

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

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

Джерело: https://arxiv.org/abs/1411.4038

Незважаючи на те, що отримані результати були пристойними, спостережувані результати є грубими та нерівними. Причиною цього є втрата інформації на кінцевому шарі ознак через зменшення дискретизації в 32 рази за допомогою шарів згортки. Тепер мережі стає дуже важко виконати 32-кратне підвищення дискретизації, використовуючи цю невелику інформацію. Ця архітектура називається FCN-32

Для вирішення цієї проблеми в статті запропоновано 2 інші архітектури FCN-16, FCN-8. У FCN-16 інформація з попереднього рівня об’єднання використовується разом із остаточною картою функцій, тому тепер завдання мережі полягає в тому, щоб вивчити 16-кратну вибірку, яка є кращою порівняно з FCN-32. FCN-8 намагається зробити його ще кращим, включаючи інформацію з ще одного попереднього рівня об’єднання.

Unet

U-net будується поверх повністю згорткової мережі зверху. Він був побудований для медичних цілей, щоб знаходити пухлини в легенях або мозку. Він також складається з кодера, який знижує вибірку вхідного зображення до карти функцій, і декодера, який підвищує вибірку карти функцій для введення розміру зображення за допомогою вивчених шарів деконволюції.

Джерело: https://arxiv.org/abs/1505.04597

Основним внеском архітектури U-Net є швидкі з’єднання. Ми бачили вище в FCN, що оскільки ми зменшуємо вибірку зображення як частину кодера, ми втратили багато інформації, яку не можна легко відновити в частині кодера. FCN намагається вирішити це, беручи інформацію з шарів об’єднання перед остаточним шаром функцій.

U-Net пропонує новий підхід до вирішення цієї проблеми втрати інформації. Він пропонує надсилати інформацію на кожен верхній рівень дискретизації в декодері з відповідного низхідного рівня дискретизації в кодері, як можна побачити на малюнку вище, таким чином захоплюючи точнішу інформацію, а також зберігаючи низький рівень обчислень. Оскільки шари на початку кодера мали б більше інформації, вони б підсилили операцію підвищення вибірки декодера, надаючи дрібні деталі, що відповідають вхідним зображенням, таким чином значно покращуючи результати. У документі також запропоновано використання нової функції втрат, яку ми обговоримо нижче.

DeepLab

Deeplab від групи дослідників із Google запропонувала безліч методів для покращення наявних результатів і отримання кращого результату за менших обчислювальних витрат. 3 основні вдосконалення, запропоновані в рамках дослідження

1) Атральні звивини
2) Просторове пірамідне об’єднання атрусу
3) Використання умовних випадкових полів для покращення кінцевого результату
Давайте обговоримо все це

Атральний звивин

Однією з основних проблем підходу FCN є надмірне скорочення через послідовні операції об’єднання. Через серію об’єднань вхідне зображення зменшується на 32x, яке знову збільшується, щоб отримати результат сегментації. Зменшення дискретизації в 32 рази призводить до втрати інформації, яка є дуже важливою для отримання якісних результатів у завданні сегментації. Крім того, деконволюція для збільшення вибірки на 32x є операцією, яка потребує обчислень і пам’яті, оскільки існують додаткові параметри, залучені до формування навченої вибірки.

У статті пропонується використання згортки Atrous або згортки з отворами або розширеної згортки, яка допомагає отримати розуміння великого контексту за допомогою тієї ж кількості параметрів.

Source:- https://www.mdpi.com/1424-8220/19/24/5361/htm

Розширена згортка працює шляхом збільшення розміру фільтра шляхом додавання нулів (так звані отвори), щоб заповнити проміжок між параметрами. Кількість дірок/нулів, заповнених між параметрами фільтра, називається швидкістю розширення члена. Коли швидкість дорівнює 1, це не що інше, як звичайна згортка. Коли швидкість дорівнює 2, один нуль вставляється між кожним іншим параметром, завдяки чому фільтр виглядає як згортка 5×5. Тепер він має здатність отримувати контекст згортки 5×5, маючи параметри згортки 3×3. Подібним чином для рівня 3 сприйнятливе поле переходить до 7×7.

У Deeplab останні шари об’єднання замінено на крок 1 замість 2, таким чином знижуючи частоту дискретизації лише до 8x. Потім застосовують серію атральних звивин, щоб захопити ширший контекст. Для навчання маска виводу з позначкою зменшується у 8 разів для порівняння кожного пікселя. Для висновку білінійна вибірка з підвищенням використовується для отримання вихідних даних того самого розміру, що дає достатньо пристойні результати за менших витрат на обчислення/пам’ять, оскільки для білінійної вибірки з підвищенням не потрібні параметри, на відміну від деконволюції для підвищення вибірки.

АСПП

Просторове пірамідне об’єднання — це концепція, представлена ​​в SPPNet для отримання багатомасштабної інформації з карти об’єктів. До введення SPP вхідні зображення з різною роздільною здатністю надаються, а обчислені карти функцій використовуються разом для отримання багатомасштабної інформації, але це вимагає більше обчислень і часу. За допомогою Spatial Pyramidal Pooling багатомасштабну інформацію можна отримати за допомогою одного вхідного зображення.

Джерело: http://kaiminghe.com/eccv14sppnet/index.html

З модулем SPP мережа створює 3 виходи розмірами 1×1 (тобто GAP), 2×2 та 4×4. Ці значення об’єднуються шляхом перетворення в одномірний вектор, таким чином фіксуючи інформацію в різних масштабах. Ще однією перевагою використання SPP є можливість надання вхідних зображень будь-якого розміру.

ASPP бере концепцію злиття інформації з різних масштабів і застосовує її до звивин Atrous. Вхідний сигнал згортається з різною швидкістю розширення, а вихідний сигнал зливається разом.

Джерело: http://liangchiehchen.com/projects/DeepLab.html

Як видно, вхідний сигнал згорнутий за допомогою фільтрів 3×3 зі швидкістю розширення 6, 12, 18 і 24, а вихідні дані об’єднані разом, оскільки вони мають однаковий розмір. Вихід згортки 1×1 також додається до злитого виходу. Щоб також надати глобальну інформацію, вихідні дані GAP також додаються до вищезгаданого після підвищення вибірки. Злитий вихід 3×3 різноманітних розширених виходів, 1×1 і вихід GAP пропускається через згортку 1×1, щоб отримати необхідну кількість каналів.

Оскільки потрібне зображення для сегментування може мати будь-який розмір у вхідних даних, багатомасштабна інформація з ASPP допомагає покращити результати.

Покращення результату за допомогою CRF

Об’єднання — це операція, яка допомагає зменшити кількість параметрів у нейронній мережі, але разом із цим вона забезпечує властивість інваріантності. Інваріантність — це якість нейронної мережі, на яку не впливають незначні переклади вхідних даних. Через цю властивість, отриману за допомогою об’єднання, результати сегментації, отримані нейронною мережею, є грубими, а межі не визначені конкретно.

Джерело: http://liangchiehchen.com/projects/DeepLab.html

Для вирішення цього в статті пропонується використовувати графічну модель CRF. Conditional Random Field виконує етап постобробки та намагається покращити отримані результати для визначення меж формувача. Він працює, класифікуючи піксель не лише за його міткою, а й за іншими мітками пікселів. Як видно з наведеного вище малюнка, груба межа, створена нейронною мережею, стає більш уточненою після проходження через CRF.

Deeplab-v3 представив пакетну нормалізацію та запропонував швидкість розширення, помножену на (1,2,4) всередині кожного шару в блоці Resnet. Крім того, додавання функцій рівня зображення до модуля ASPP, яке обговорювалося у вищезгаданій дискусії про ASPP, було запропоновано як частину цього документа

Джерело: https://arxiv.org/pdf/1706.05587.pdf

Deeplab-v3+ запропонував мати декодер замість звичайної білінійної дискретизації 16x. Декодер отримує підказку від декодера, який використовується такими архітектурами, як U-Net, які беруть інформацію з шарів кодувальника для покращення результатів. Вихідний сигнал кодера збільшується в 4 рази за допомогою білінійної дискретизації та об’єднується з функціями кодера, який знову підвищується в 4 рази після виконання згортки 3 × 3. Цей підхід дає кращі результати, ніж пряме 16-кратне збільшення вибірки. Також пропонується використовувати модифіковану архітектуру Xception замість Resnet як частину кодера, а згортки, що розділяються по глибині, тепер використовуються поверх згорток Atrous, щоб зменшити кількість обчислень.

Глобальна мережа згортки

Джерело: https://arxiv.org/pdf/1703.02719.pdf

Семантична сегментація передбачає одночасне виконання двох завдань

i) Класифікація
ii) Локалізація

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

Джерело: https://arxiv.org/pdf/1703.02719.pdf

Автор пропонує досягти цього шляхом використання великих ядер як частини мережі, що забезпечує щільні з’єднання та, отже, більше інформації. Це досягається за допомогою блоку GCN, як видно на малюнку вище. Блок GCN можна розглядати як фільтр згортки akxk, де k може бути числом, більшим за 3. Щоб зменшити кількість параметрів, фільтр akxk додатково розбивається на блоки 1 xk і kx 1, kx1 і 1xk, які потім підсумовуються. Таким чином, збільшення значення k охоплює більший контекст.

Крім того, автор пропонує блок Boundary Refinement, подібний до залишкового блоку в Resnet, який складається з швидкого з’єднання та залишкового з’єднання, які підсумовуються для отримання результату. Було помічено, що наявність блоку Boundary Refinement призвело до покращення результатів на межі сегментації.

Результати показали, що блок GCN покращив точність класифікації пікселів ближче до центру об’єкта, що вказує на покращення завдяки захопленню далекого контексту, тоді як блок уточнення межі допоміг підвищити точність пікселів ближче до межі.

Перегляньте більше ніж один раз – KSAC для семантичної сегментації

Сімейство Deeplab використовує ASPP, щоб кілька сприйнятливих полів отримували інформацію, використовуючи різні швидкості атральної згортки. Незважаючи на те, що ASPP був значно корисним для покращення сегментації результатів, існують деякі внутрішні проблеми, спричинені архітектурою. Немає інформації, яка передається між різними паралельними рівнями в ASPP, що впливає на потужність узагальнення ядер на кожному рівні. Крім того, оскільки кожен рівень обслуговує різні набори тренувальних зразків (менші об’єкти для меншої швидкості атрального об’єму, а більші об’єкти – для більшої швидкості атрального об’єму), кількість даних для кожного паралельного шару буде меншою, що вплине на загальну можливість узагальнення. Крім того, кількість параметрів у мережі зростає лінійно зі збільшенням кількості параметрів і, таким чином, може призвести до переобладнання.

Джерело: https://arxiv.org/pdf/1908.09443.pdf

Щоб вирішити всі ці проблеми, автор пропонує нову мережеву структуру під назвою Kernel-Sharing Atrous Convolution (KSAC). Як видно на наведеному вище малюнку, замість того, щоб мати окреме ядро ​​для кожного паралельного рівня ASPP, єдине ядро ​​використовується спільно, таким чином покращуючи можливості узагальнення мережі. Використовуючи KSAC замість ASPP, 62% параметрів зберігається при використанні швидкості розширення 6,12 і 18.

Ще одна перевага використання структури KSAC полягає в тому, що кількість параметрів не залежить від кількості використовуваних швидкостей розширення. Таким чином, ми можемо додати якомога більше ставок без збільшення розміру моделі. ASPP дає найкращі результати з показниками 6,12,18, але точність знижується з 6,12,18,24, що вказує на можливе переобладнання. Але точність KSAC все ще значно покращується, що вказує на покращену здатність узагальнення.

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

Сегментація відео

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

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

STFCN

Просторово-часовий FCN пропонує використовувати FCN разом із LSTM для сегментації відео. Ми вже знаємо, як FCN можна використовувати для отримання функцій для сегментації зображення. LSTM – це свого роду нейронні мережі, які можуть отримувати послідовну інформацію з часом. STFCN поєднує потужність FCN із LSTM для захоплення як просторової, так і часової інформації

Джерело: https://arxiv.org/abs/1608.05971

Як видно з наведеного вище малюнка, STFCN складається з FCN, просторово-часового модуля з наступною деконволюцією. Карта функцій, створена FCN, надсилається до просторово-часового модуля, який також має вхідні дані з модуля попереднього кадру. Модуль, що базується на обох цих вхідних даних, фіксує тимчасову інформацію на додаток до просторової інформації та надсилає її, яка дискретизується до початкового розміру зображення, використовуючи деконволюцію, подібну до того, як це робиться в FCN

Оскільки і FCN, і LSTM працюють разом як частина SFCN, мережу можна наскрізно навчати та вона перевершує підходи до сегментації одного кадру. Існують подібні підходи, коли LSTM замінюється на GRU, але концепція є однаковою щодо захоплення як просторової, так і часової інформації.

Семантичні відео CNN через викривлення подання

У цьому документі пропонується використовувати оптичний потік через сусідні кадри як додатковий вхід для покращення результатів сегментації

Джерело: https://arxiv.org/abs/1708.03088

Запропонований підхід можна інтегрувати в будь-яку стандартну архітектуру як плагін. Ключовим інгредієнтом, який використовується, є модуль NetWarp. Для обчислення карти сегментації обчислюється оптичний потік між поточним кадром і попереднім кадром, тобто Ft, і пропускається через FlowCNN, щоб отримати Λ(Ft). Цей процес називається трансформацією потоку. Це значення передається через модуль деформації, який також приймає як вхідні дані карту характеристик проміжного шару, розраховану шляхом проходження через мережу. Це дає викривлену карту функцій, яка потім поєднується з проміжною картою функцій поточного шару, і вся мережа наскрізно навчається. Ця архітектура досягла результатів SOTA на наборах даних тестування відео CamVid і Cityscapes.

Clockwork Convnets для семантичної сегментації відео

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

Джерело: https://arxiv.org/abs/1608.03609

Наведений вище малюнок являє собою порівняння швидкості зміни для рівня пулу4 середнього рівня та глибокого рівня fc7. Ліворуч ми бачимо, що оскільки є багато змін між кадрами, обидва шари показують зміни, але зміни для pool4 є вищими. Праворуч ми бачимо, що між кадрами немає великих змін. Отже, пул4 демонструє незначну зміну, тоді як fc7 показує майже нульову зміну.

Дослідження використовує цю концепцію та припускає, що у випадках, коли немає значних змін у кадрах, немає потреби знову обчислювати функції/виходи, і можна використовувати кешовані значення з попереднього кадру. Оскільки швидкість зміни залежить від шарів, для різних наборів шарів можна встановити різні годинники. Коли годинник цокає, обчислюються нові виходи, інакше використовуються кешовані результати. Швидкість тактів годинника може бути статично фіксованою або динамічно вивчатися

Джерело: https://arxiv.org/abs/1608.03609

Семантична сегментація відео з низькою затримкою

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

Джерело: https://arxiv.org/abs/1804.00389

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

Сегментація для хмар точок

Дані, що надходять від такого датчика, як лідар, зберігаються у форматі під назвою Хмара точок. Хмара точок — це не що інше, як колекція невпорядкованого набору точок тривимірних даних (або будь-якого виміру). Це розріджене представлення сцени в 3D, і CNN не можна безпосередньо застосувати в такому випадку. Також будь-яка архітектура, призначена для роботи з хмарами точок, повинна враховувати, що це невпорядкований набір і, отже, може мати багато можливих перестановок. Отже, мережа має бути інваріантною до перестановок. Також точки, визначені в хмарі точок, можна описати відстанню між ними. Тож ближчі точки загалом несуть корисну інформацію, корисну для завдань сегментації

PointNet

PointNet — важлива стаття в історії досліджень хмар точок із використанням глибокого навчання для вирішення завдань класифікації та сегментації. Давайте вивчимо архітектуру Pointnet

Джерело: https://arxiv.org/abs/1612.00593

Вхід мережі для n точок є матрицею nx 3. Матриця nx 3 відображається на nx 64 за допомогою спільного мультиперсептронного рівня (повністю підключена мережа), який потім відображається на nx 64, а потім на nx 128 і nx 1024. Максимальне об’єднання використовується для отримання вектора 1024, який перетворюється на k виходи шляхом проходження через MLP з розмірами 512, 256 і k. Нарешті, результати k класу створюються подібно до будь-якої мережі класифікації.

Класифікація має справу лише з глобальними ознаками, але сегментація також потребує локальних ознак. Таким чином, локальні функції з проміжного рівня на nx 64 об’єднуються з глобальними функціями, щоб отримати матрицю anx 1088, яка надсилається через mlp 512 і 256, щоб дістатися до nx 256, а потім через MLP 128 і m, щоб надати m вихідних класів для кожної точки у хмарі точок.

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

A-CNN

Джерело: https://arxiv.org/abs/1904.08017

A-CNN пропонує використовувати кільцеві згортки для захоплення просторової інформації. Від CNN ми знаємо, що операції згортання фіксують локальну інформацію, необхідну для розуміння зображення. A-CNN розробив нову згортку під назвою «Кільцева згортка», яка застосовується до сусідніх точок у хмарі точок.

Архітектура приймає як вхідні дані nx 3 точки та знаходить для них нормалі, які використовуються для впорядкування точок. Підвибірка балів береться за допомогою алгоритму FPS, що призводить до ni x 3 балів. На ці кільцеподібні згортки нанесено збільшення до 128 розмірів. Кільцева згортка виконується на околицях, які визначаються за допомогою алгоритму KNN.

Інший набір вищезазначених операцій виконується для збільшення розмірів до 256. Потім застосовується mlp, щоб змінити розміри до 1024, і об’єднання застосовується для отримання глобального вектора 1024, подібного до хмари точок. Вся ця частина вважається кодувальником. Для класифікації глобальний вихід кодера передається через mlp, щоб отримати вихідні дані класу c. Для завдання сегментації як глобальні, так і локальні функції вважаються подібними до PointCNN, а потім передаються через MLP, щоб отримати m результатів класу для кожної точки.

Метрика

Давайте обговоримо метрики, які зазвичай використовуються для розуміння та оцінки результатів моделі.

Точність пікселів

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

Точність = (TP+TN)/(TP+TN+FP+FN)

Основний недолік використання такої техніки полягає в тому, що результат може виглядати добре, якщо один клас переважає інший. Скажімо, наприклад, клас фону охоплює 90% вхідного зображення, ми можемо отримати точність 90%, просто класифікуючи кожен піксель як фон

Перетин над Союзом

IOU визначається як відношення перетину основної істини та прогнозованих результатів сегментації щодо їх об’єднання. Якщо ми виконуємо обчислення для кількох класів, обчислюється IOU кожного класу та береться їх середнє значення. Це краща метрика порівняно з точністю пікселів, тому що якщо кожен піксель надається як фон у вхідних даних 2 класу, значення IOU становить (90/100+0/100)/2, тобто 45% IOU, що дає краще представлення порівняно з 90 % точності.

Джерело: - https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection

Частотно-зважений IOU

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

Оцінка F1

Метрику, яка широко використовується в класифікації F1 Score, можна використовувати для завдання сегментації, а також для вирішення дисбалансу класів.

Джерело: https://en.wikipedia.org/wiki/F1_score

Середня точність

Площа під кривою точності – відкликання для вибраного порогового середнього значення IOU для різних класів використовується для підтвердження результатів.

Функції втрат

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

Перехресна втрата ентропії

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

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

Фокальна втрата

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

Dice Loss

Функція Dice - це не що інше, як F1. Ця функція втрат безпосередньо намагається оптимізувати рахунок F1. Подібним чином пряму оцінку IOU також можна використовувати для оптимізації

Тверська втрата

Це варіант втрати Dice, який дає різну вагу-вік FN та FP

Відстань Хаусдорфа

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

Перевага використання граничних втрат порівняно з втратами на основі регіону, такими як IOU або Dice Loss, полягає в тому, що на них не впливає дисбаланс класів, оскільки для оптимізації враховується не весь регіон, а лише межа.

Джерело https://en.wikipedia.org/wiki/Hausdorff_distance

Два терміни, які тут розглядаються, стосуються двох меж, тобто базової істини та вихідного прогнозу.

LabelMe :-

Інструмент анотації зображень, написаний на Python.
Підтримує багатокутну анотацію.
Відкритий і безкоштовний.
Працює на Windows, Mac, Ubuntu або через Anaconda, Docker
Посилання: - https://github.com/wkentaro/labelme

Джерело: https://github.com/wkentaro/labelme

Інструмент анотації комп’ютерного зору: -

Інструмент анотації відео та зображень, розроблений Intel
Безкоштовно та доступно онлайн
Працює на Windows, Mac і Ubuntu
Посилання: - https://github.com/opencv/cvat

Анотатор зображень Vgg: -

Безкоштовний інструмент анотування зображень із відкритим кодом
Проста html-сторінка < 200 Кб і може працювати в автономному режимі
Підтримує багатокутні анотації та точки.
Посилання: - https://github.com/ox-vgg/via

Джерело: https://github.com/ox-vgg/via

Rectlabel: -

Платний інструмент анотацій для Mac
Можна використовувати основні моделі ML для попереднього анотування зображень
Підтримує багатокутники, кубічні форми, лінії та точки
Посилання: - https://github.com/ryouchinsa/Rectlabel-support

Поле етикетки: -

Платний інструмент анотації
Підтримує інструмент пера для швидшого та точного створення анотацій
Посилання: - https://labelbox.com/product/image-segmentation

Набори даних

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

Паскаль Контекст

Цей набір даних є розширенням набору даних Pascal VOC 2010 і виходить за рамки оригінального набору даних, надаючи анотації для всієї сцени та містить понад 400 класів даних реального світу.

Джерело: https://cs.stanford.edu/~roozbeh/pascal-context/
Джерело: https://cs.stanford.edu/~roozbeh/pascal-context/

Посилання: - https://cs.stanford.edu/~roozbeh/pascal-context/

Набір даних COCO

Набір даних COCO містить 164 тисячі зображень оригінального набору даних COCO з анотаціями на рівні пікселів і є звичайним набором даних для порівняння. Він охоплює 172 класи: 80 класів речей, 91 клас речей і 1 клас «без міток»

Джерело: http://cocodataset.org/#home

Посилання: - http://cocodataset.org/

Набір даних міських пейзажів

Цей набір даних складається з основних істин сегментації для доріг, смуг, транспортних засобів і об’єктів на дорозі. Набір даних містить 30 класів і 50 міст, зібраних за різними навколишніми та погодними умовами. Також містить набір відеоданих зображень із дрібними анотаціями, які можна використовувати для сегментації відео. КІТІ та CamVid це подібні типи наборів даних, які можна використовувати для навчання самокерованих автомобілів.

Джерело: - https://www.cityscapes-dataset.com/

Посилання: - https://www.cityscapes-dataset.com/

Набір даних Lits

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

Джерело: https://competitions.codalab.org/competitions/17094

Посилання: - https://competitions.codalab.org/competitions/17094

Набір даних CCP

Cloth Co-Parsing — це набір даних, створений як частина дослідницької роботи Cloth Co-Parsing by Joint Image Segmentation and Labeling. Набір даних містить понад 1000 зображень із анотаціями на рівні пікселів із загалом 59 тегами.

Джерело: https://github.com/bearpaw/clothing-co-parsing

Джерело: - https://github.com/bearpaw/clothing-co-parsing

Набір даних Pratheepan

Набір даних, створений для завдання сегментації шкіри на основі зображень із Google, що містить 32 фотографії облич і 46 сімейних фотографій

Джерело: - http://cs-chan.com/downloads_skin_dataset.html

Посилання: - http://cs-chan.com/downloads_skin_dataset.html

Маркування аерознімків Inria

Набір даних аерофотосегментованих карт, створених із зображень із загального користування. Має площу 810 кв. км і має 2 класи забудови та не забудови.

Джерело: https://project.inria.fr/aerialimagelabeling/
Джерело: https://project.inria.fr/aerialimagelabeling/

Посилання: - https://project.inria.fr/aerialimagelabeling/

S3DIS

Цей набір даних містить хмари точок шести великих внутрішніх частин у 3 будівлях із понад 70000 XNUMX зображень.

Джерело: http://buildingparser.stanford.edu/dataset.html

Посилання: - http://buildingparser.stanford.edu/dataset.html

Підсумки

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

Щоб отримати список додаткових ресурсів для семантичної сегментації, почніть з https://github.com/mrgloom/awesome-semantic-segmentation.

Подальше читання


Вас можуть зацікавити наші останні публікації на тему:

Оновлення:
Додано додаткові матеріали для читання.

Джерело: https://nanonets.com/blog/semantic-image-segmentation-2020/

Часова мітка:

Більше від ШІ та машинне навчання