# Сегментація Раніше ми вивчали розпізнавання об'єктів, яке дозволяє знаходити об'єкти на зображенні, прогнозуючи їх *граничні рамки*. Однак для деяких завдань нам потрібна не тільки гранична рамка, але й більш точна локалізація об'єкта. Це завдання називається **сегментацією**. ## [Тест перед лекцією](https://ff-quizzes.netlify.app/en/ai/quiz/23) Сегментацію можна розглядати як **класифікацію пікселів**, де для **кожного** пікселя зображення ми повинні передбачити його клас (*фон* є одним із класів). Існує два основних алгоритми сегментації: * **Семантична сегментація** визначає лише клас пікселя, але не розрізняє різні об'єкти одного класу. * **Сегментація об'єктів** розділяє класи на окремі екземпляри. Наприклад, для сегментації об'єктів ці вівці є різними об'єктами, але для семантичної сегментації всі вівці представлені одним класом. > Зображення з [цієї статті](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) Існують різні нейронні архітектури для сегментації, але всі вони мають однакову структуру. У певному сенсі це схоже на автоенкодер, про який ви вже дізналися, але замість деконструкції оригінального зображення наша мета — деконструювати **маску**. Таким чином, мережа сегментації має такі частини: * **Енкодер** витягує ознаки з вхідного зображення. * **Декодер** перетворює ці ознаки у **зображення маски**, яке має той самий розмір і кількість каналів, що відповідає кількості класів. > Зображення з [цієї публікації](https://arxiv.org/pdf/2001.05566.pdf) Особливо варто згадати функцію втрат, яка використовується для сегментації. Використовуючи класичні автоенкодери, нам потрібно виміряти схожість між двома зображеннями, і для цього ми можемо використовувати середньоквадратичну помилку (MSE). У сегментації кожен піксель у цільовому зображенні маски представляє номер класу (закодований у форматі one-hot уздовж третього виміру), тому нам потрібно використовувати функції втрат, специфічні для класифікації, — крос-ентропію, усереднену по всіх пікселях. Якщо маска є бінарною, використовується **бінарна крос-ентропія** (BCE). > ✅ One-hot кодування — це спосіб кодування мітки класу у вектор довжиною, що дорівнює кількості класів. Ознайомтеся з [цією статтею](https://datagy.io/sklearn-one-hot-encode/) про цю техніку. ## Сегментація для медичних зображень У цьому уроці ми побачимо сегментацію в дії, тренуючи мережу для розпізнавання невусів (також відомих як родимки) на медичних зображеннях. Ми будемо використовувати PH2 Database дерматоскопічних зображень як джерело даних. Цей набір даних містить 200 зображень трьох класів: типовий невус, атиповий невус і меланома. Усі зображення також містять відповідну **маску**, яка окреслює невус. > ✅ Ця техніка особливо підходить для такого типу медичних зображень, але які інші реальні застосування ви могли б уявити? navi > Зображення з PH2 Database Ми будемо тренувати модель для сегментації будь-якого невуса від його фону. ## ✍️ Вправи: Семантична сегментація Відкрийте наведені нижче ноутбуки, щоб дізнатися більше про різні архітектури семантичної сегментації, попрактикуватися з ними та побачити їх у дії. * [Семантична сегментація Pytorch](SemanticSegmentationPytorch.ipynb) * [Семантична сегментація TensorFlow](SemanticSegmentationTF.ipynb) ## [Тест після лекції](https://ff-quizzes.netlify.app/en/ai/quiz/24) ## Висновок Сегментація — це дуже потужна техніка для класифікації зображень, яка виходить за межі граничних рамок до класифікації на рівні пікселів. Це техніка, яка використовується в медичних зображеннях, серед інших застосувань. ## 🚀 Виклик Сегментація тіла — лише одне із поширених завдань, яке ми можемо виконувати із зображеннями людей. Інші важливі завдання включають **виявлення скелета** та **виявлення пози**. Спробуйте бібліотеку [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose), щоб побачити, як можна використовувати виявлення пози. ## Огляд і самостійне навчання Ця [стаття у Вікіпедії](https://wikipedia.org/wiki/Image_segmentation) пропонує хороший огляд різних застосувань цієї техніки. Дізнайтеся більше самостійно про піддомени сегментації об'єктів та паноптичної сегментації у цій галузі досліджень. ## [Завдання](lab/README.md) У цій лабораторній роботі спробуйте **сегментацію людського тіла**, використовуючи [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) з Kaggle. ---