Використовуємо CNN для обробки зображень. Частина перша
Усі статті, обговорення, новини про AI — в одному місці. Підписуйтеся на DOU | AI!
Привіт усім! Мене звуть Олексій, я Machine Learning Engineer у компанії Svitla Systems. В останній час тема штучного інтелекту, його алгоритмів та можливостей, особливо у сфері GenAI, стала вельми актуальною. Незалежно від новизни генеративних ШІ-інструментів, всі вони досі ґрунтуються на базових концепціях та деталях, які залишатимуться актуальними протягом десятиліть. Саме про одну з таких концепцій, а саме згорткові нейронні мережі, йтиметься у цій статті.
Вступ
Згорткові нейронні мережі, або Convolutional Neural Networks (далі CNN), є різновидом нейронних мереж для обробки зображень. CNN використовуються в завданнях комп’ютерного зору: генерації і класифікації зображень, розпізнавання об’єктів і поз тощо. Ці завдання раніше намагались вирішити як за допомогою класичних нейронних мереж, тобто багатошарового персептрона Multilayer Perceptron (MLP), так і різними евристичними методами.
Що стосується евристичних методів, тут варто згадати алгоритми SIFT (Scale-Invariant Feature Transform) і SURF (Speeded Up Robust Features). Вони широко використовувались для виявлення й опису локальних особливостей на зображеннях, таких як лінії, краї ліній, розпізнавання об’єктів та визначення ключових точок. Ці алгоритми виявляли особливості, що відрізняються від навколишнього оточення, і допомагали в розпізнаванні об’єктів незалежно від масштабу, орієнтації та освітлення. Однак ці методи мають свої обмеження, особливо при роботі зі складнішими зображеннями та задачами розпізнавання образів. Це призвело до пошуку нових підходів, зокрема розробки згорткових нейронних мереж.
До того ж CNN використовуються для обробки не тільки двовимірних сигналів, але й одновимірних, чи навіть тривимірних. Наприклад, одновимірними зображеннями виступають сигнали з мікрофона, які згорткові нейронні мережі можуть використовувати для розпізнавання тексту. Прикладом такої моделі може слугувати модель Jasper від Nvidia. А тривимірними зображеннями — відео, де час стає третім виміром:
Щоб краще зрозуміти суть CNN, спочатку зануримось у світ класичних алгоритмів обробки зображень. Ми зосередимося на задачі фільтрації зображень, яка є одним з ключових аспектів обробки зображень.
Ми всі користувались фільтрами чи то в редакторах на телефоні, чи то в додатках на кшталт Instagram. Вони використовуються для виділення або, навпаки, приховування певних характеристик зображення. Наприклад, фільтр може допомогти підкреслити контури об’єктів або зробити зображення більш розмитим.
Про принцип їх роботи і яку роль вони відіграють у CNN я розповім у наступному розділі. Єдине, що вам поки що потрібно розуміти: згорткові нейронні мережі, про які далі піде мова, у своїй основі мають подібні фільтри (і як правило не один, а одразу набір різних фільтрів). Накладаючись один за одним на зображення, вони дозволяють отримувати різні ознаки, такі як вертикальні лінії, горизонтальні лінії, різні криві тощо.
Мотивація розробки CNN та історія виникнення
Згорткові нейронні мережі в мозку
Штучні нейрони, запропоновані в 1943 році вченими Варреном Маккаллоком та Уолтером Піттсом, були натхненні структурою та функціональністю природних нейронів. Вони стали основою для штучних нейронних мереж, які могли виконувати прості задачі класифікації, наприклад, визначення геометричної фігури. Згодом, з появою складніших алгоритмів, як-от згорткові нейронні мережі, штучні нейрони почали використовуватися для розв’язання складніших задач, таких як розпізнавання образів та генерація зображень.
Дослідження, яке стало основою для згорткових нейронних мереж, було роботою Губеля та Візеля у 1950-1960-х роках. Ця робота виявила два базових типи візуальних клітин в кортексі мозку кішки: прості та комплексні. Вони також запропонували модель цих клітин для використання в задачах розпізнавання патернів в зображеннях. Ці відкриття стали основою для створення згорткових нейронних мереж.
Робота Neocognitron, вперше представлена Куніхіко Фукушимою в 1980 році, була натхненна роботою Губеля та Візеля. В цій публікації було запроваджено два базових типи шарів у згорткових нейронних мережах: згортковий шар та шар зменшення розміру. Ці два типи шарів відображають прості та комплексні клітини, які виявили Губель та Візель.
Зокрема, згортковий шар включає нейрони, чиї рецептивні поля покривають ділянку попереднього шару, а шар зменшення розміру містить нейрони, чиї рецептивні поля покривають ділянки попередніх згорткових шарів. Іншими словами, перший шар генерує ознаки, які отримують фільтри, які ми розглянули вище, а другий шар зменшує розмір цих «відфільтрованих» зображень. Таким чином, наведені роботи Губеля та Візеля надали теоретичну основу для створення архітектури згорткових нейронних мереж.
Операція згортки
Чому згорткові нейронні мережі мають саме таку назву, а не «неокогнітронні» мережі за роботою Фукушимо? Відповідь в тому, що описаний процес виявлення країв, з менших локальних ознак зображення до більш загальних, математично описується операцією, що називається згорткою. Виглядає він так:
Для тих, хто впав у відчай від формули вище: не переймайтесь, бо для неї є відносно просте візуальне пояснення нижче, а ті, хто цікавляться математичними подробицями, знайдуть їх в наступній статті.
В прикладі вище, Input — це будь-яке зображення. Для простоти, будемо вважати його чорно-білим. Kernel — це фільтр або ядро, значення з котрого помножуються з такою ж 3×3-частинкою вхідного зображення (Input), і такий добуток відбувається для кожної частинки на кожному рядку та стовпчику. Після добутку числа складаються і їх сума утворює нове зображення, яке ми бачимо в Output. Нижче показана анімована візуалізація того, як цей процес відбувається для всього зображення.
Операція пулінгу в згорткових нейронних мережах
Ми розглянули тільки першу частину згорткових нейронних мереж. Другою ж частиною є функція максимізації для певної ділянки зображення. Попередній шар отримував ознаки через фільтрацію певної ділянки вхідного зображення. Наступний шар обробляє ділянки зображення отриманого від фільтрації. Робиться це наступним чином: обирається певна ділянка попереднього результату й знаходиться її максимум, що буде виходом з поточного шару. Так робимо для кожної ділянки. Сама операція виглядає так:
Фактично, це є опис одного шару згорткової нейронної мережі: перший крок — це згортка зображення накладанням на нього фільтру, другий крок — максимізація ділянок на отриманому виході.
Якщо виходи з одного шару такої мережі передати на вхід до іншої, то ми отримаємо складніші патерни. І шар за шаром, дуже прості лінії та точки перетворяться в повноцінні прототипи об’єктів, які бачить людина.
Різновиди CNN
Згорткові нейронні мережі поділяють за типом виміру на 1D, 2D та 3D, і за типом задач, які вони вирішують, їх можна розділити на такі:
1D CNN
Обробка сигналів: 1D CNN часто використовуються для обробки часових рядів або аудіосигналів, коли потрібно виявити важливі події або зміни в сигналі.
2D CNN
- Класифікація зображень: 2D CNN є стандартним вибором для задач класифікації зображень, вони вміють виявляти ключові особливості на зображенні та використовувати їх для визначення класу зображення.
- Розпізнавання образів: CNN використовуються для розпізнавання конкретних об’єктів на зображеннях, від облич до автомобілів.
- Сегментація зображень: CNN можуть визначати, до якого сегмента належить кожен піксель зображення, що дозволяє виділяти конкретні об’єкти та області.
3D CNN
Класифікація відео: 3D CNN використовуються для аналізу відеоданих, вони можуть враховувати як просторову, так і часову інформацію.
Поговоримо про кожен тип детальніше.
Одновимірні згорткові мережі
1D CNN — це варіант нейронної мережі, де згортка виконується лише за одним виміром. Тобто вона обробляє вхідні дані як одновимірну послідовність, що робить її ідеальною для аналізу часових рядів або одновимірних сигналів, таких як звукові записи.
1D CNN складаються з трьох основних типів шарів:
- згорткових шарів, які працюють з вхідними даними, що містять набір навчених фільтрів;
- шарів пулінгу, які зменшують просторовий розмір вхідних даних;
- повнозв’язних шарів, які виконують класифікацію або регресію на основі вивчених характеристик.
Детекція аномалій в часових рядах
Виробничі процеси часто моніторяться за допомогою сенсорів, які збирають дані в режимі реального часу. Ці дані можуть бути проаналізовані за допомогою 1D CNN для виявлення таких аномалій, як несподівані зміни в температурі, вологості, тиску або інших важливих параметрах. Раннє виявлення таких аномалій допомагає вчасно виявити та усунути проблеми, збільшуючи ефективність виробництва і знижуючи втрати.
Прогнозування в використанні енергії
1D згорткові нейронні мережі можуть бути використані для прогнозування споживання енергії. Наприклад, на основі часових рядів даних про попереднє споживання енергії, 1D CNN можуть виявляти патерни та тенденції, що дозволяють прогнозувати майбутнє споживання. Це може бути корисним для енергетичних компаній для оптимізації виробництва та розподілу енергії. Нижче ви можете побачити приклад того, як виглядають дані для таких задач та архітектуру, яка була використана для розв’язання подібного завдання.Розпізнавання мови й аудіоаналіз
1D CNN також широко використовуються в аудіоаналізі. Вони можуть виявляти важливі характеристики в аудіосигналах, які можуть бути використані для розпізнавання мови або класифікації музичних жанрів. Наприклад, в розпізнаванні мови, 1D CNN можуть аналізувати аудіозаписи мовлення, виявляючи специфічні звуки або слова. У класифікації музичних жанрів, вони можуть аналізувати музичні треки, виявляючи характеристики, які є властивими тому чи іншому жанру.
Двовимірні згорткові мережі
Двовимірні згорткові нейронні мережі (2D CNN) — це ключовий інструмент у комп’ютерному зорі. Вони використовують згортку для виявлення просторових властивостей у вхідних даних, що робить їх особливо ефективними для аналізу зображень. Ці мережі допомагають вирішувати велику кількість завдань, включаючи класифікацію зображень, виявлення об’єктів, семантичну сегментацію та багато іншого.
Класифікація зображень
2D CNN є стандартним вибором для задач класифікації зображень. Класифікація зображень — це процес визначення категорії, до якої належить зображення. Наприклад, класифікація зображень може включати визначення, чи зображено на фотографії кішку, собаку, людину або автомобіль. Це важливе завдання в комп’ютерному зорі та машинному навчанні, оскільки моделі, які демонструють найкращі результати тут, цілком ймовірно будуть кращими й в інших завданнях комп’ютерного зору.
Згорткові нейронні мережі (CNN) використовуються для розв’язання завдання класифікації зображень, оскільки вони ефективно виявляють локальні та просторові патерни в даних шляхом застосування відповідних фільтрів. Робота CNN для класифікації зображень складається, як у випадку роботи з сигналами, з двох основних частин:
- Етап виявлення ознак. Під час цього етапу, CNN виконує операції згортки, нелінійної активації (наприклад, ReLU) та пулінгу (або субдискретизації) на вхідному зображенні, щоб виявити просторові ієрархічні шаблони, такі як краї, текстури, форми тощо.
- Етап класифікації. Після етапу виявлення ознак, CNN використовує повнозв’язні шари для класифікації зображень на основі виявлених ознак. Повнозв’язні шари аналогічні тим, що використовуються у звичайних нейронних мережах.
Варто зазначити, що для ефективної роботи CNN потребують великої кількості даних для тренування і значний обсяг обчислювальних ресурсів.
Виявлення об’єктів
Виявлення об’єктів — це процес ідентифікації та визначення місця об’єктів на зображенні. Завдання полягає не лише у визначенні класу об’єкта, але і в отриманні точних координат його локації.
Нейронні мережі на основі CNN відіграють важливу роль в об’єктному виявленні. Їх використовують для визначення ознак на зображенні, які допомагають в ідентифікації та локалізації об’єктів. Згорткові шари в CNN ефективно виявляють різноманітні ознаки, що веде до точного виявлення об’єктів.
Як приклади архітектур нейронних мереж, які розв’язують ці задачі, можна зазначити YOLO та Faster R-CNN.
YOLO (You Only Look Once). Відрізняється тим, що виконує виявлення об’єктів і класифікацію в один прохід, що робить його надзвичайно швидким. YOLO ділить зображення на сітку і для кожної комірки передбачає рамки обмеження та ймовірності класів.
Faster R-CNN. Ця модель використовує два модулі — регіональну згорткову нейронну мережу для генерації областей інтересу (Region of Interests, RoIs) та повністю з’єднану мережу для класифікації й уточнення цих областей.
Обидві моделі широко використовуються для вирішення подібних завдань, або є основою для їх розв’язання.
Семантична сегментація зображень
Семантична сегментація — це процес визначення кожного пікселя на зображенні належним до певного класу. Вона не лише визначає клас об’єктів на зображенні, але і точно визначає їх межі на піксельному рівні.
Нейронні мережі на основі CNN відіграють ключову роль у семантичній сегментації. Вони, як і в попередніх завданнях, використовуються для визначення ознак на зображенні, що допомагають в ідентифікації та сегментації об’єктів. Згорткові шари в CNN ефективно виявляють локальні та глобальні ознаки на зображенні, що допомагає у точному визначенні об’єктів та їх меж.
Як приклади для розв’язання цього завдання розглянемо кілька популярних архітектур, а саме U-Net та FCN.
U-Net. Ця архітектура складається з частин «стискання» (encoder) і «розширення» (decoder), що формують форму U. Encoder використовується для визначення ознак зображення, тоді як decoder використовує ці ознаки для побудови сегментованого зображення, тобто передбачає клас для кожного пікселя на зображенні. Особливістю U-Net є наявність «мостів» між encoder і decoder, що дозволяє передавати контекстну інформацію в decoder.
FCN (Fully Convolutional Network). На відміну від традиційних CNN, які використовують повністю з’єднані шари для класифікації, FCN перетворює ці шари в згорткові, що дозволяє обробляти зображення будь-якого розміру і виводити семантичну мапу, яка відповідає розміру вхідного зображення.
Тривимірні згорткові мережі
Отже, ми поговорили про одновимірні та двовимірні нейронні мережі, тепер залишилось розглянути тривимірні. Давайте коротко нагадаємо які ми вже пройшли, щоб краще розуміти новий тип згорткових мереж.
Одновимірні згорткові операції використовуються для аналізу послідовностей даних, як-от часові ряди. Вони проходять за даними в одному напрямку, визначаючи ознаки в межах визначеної «віконної» області.
Двовимірні згорткові операції використовуються для аналізу двовимірних даних, таких як зображення. Вони проходять за даними у двох напрямках (ширина і висота), виявляючи ознаки в межах визначеної «віконної» області.
Тривимірні згорткові операції використовуються для аналізу тривимірних даних, таких як відео- або 3D-сканування. Вони проходять за даними в трьох напрямках (ширина, висота і глибина), визначаючи ознаки в межах визначеної «кубічної» області.
Brain Disease Classification
Тривимірні згорткові нейронні мережі можуть бути використані для аналізу 3D-сканувань головного мозку для класифікації хвороб. Вони можуть визначати ознаки в тривимірному просторі для виявлення аномалій на кшталт пухлин.
Action recognition
Розпізнавання дій — це завдання комп’ютерного зору, яке полягає в ідентифікації конкретних дій, які виконуються на відео. Наприклад, це може бути розпізнавання ходьби, бігу, стрибків, плавання, кидання предмета тощо.
3D CNN ідеально підходять для цього, оскільки вони можуть аналізувати відео в часі, враховуючи не тільки просторові, але й часові відмінності між кадрами. Це дозволяє моделям вчити та розпізнавати складні дії, які розташовані в часі.
Тривимірні згорткові нейронні мережі можуть бути використані для аналізу й виявлення складних дій або поведінки в часі.
Сучасний стан CNN
Світ штучного інтелекту та глибокого навчання вражає своєю динамікою та новизною, особливо коли мова йде про використання згорткових нейронних мереж. Одним з найбільш захопливих застосувань CNN є генерація зображень, які використовуються для генерації нових, реалістичних зображень на основі навчання з великих наборів даних. Цей процес охоплює все: від створення оригінального вмісту до модифікації наявних зображень.
Генерація зображень
Дифузні моделі стали ключовими в генерації зображень, використовуючи новаторський підхід, заснований на зворотному дифузійному процесі. В основі цього методу лежить поступове перетворення шуму в остаточне зображення за допомогою серії дифузійних кроків. Кожен крок цього процесу має на меті наблизити шум до реального розподілу даних. Простіше кажучи, ці моделі видаляють шум з зображення.
Цей процес є ітеративним, і з кожним новим кроком модель вносить все більше деталей, що відображають реальність, в початковий шум. Це надзвичайно потужний інструмент, який відкриває нові можливості для генерації реалістичних зображень та інших видів вмісту. Цей процес відбувається завдяки використанню нейронної мережі на базі U-Net, яка побудована за допомогою двовимірних CNN.
Найяскравішими представниками цього типу алгоритмів є алгоритми Stable Diffusion, DALL-E та Midjourney. Ці моделі поєднують в собі як текстове представлення інформації, що дозволяють розробити великі мовні моделі (LLMs), так і здатність згорткових шарів знаходити та локалізувати деталі на зображеннях.
Генерація відео
Дифузні моделі також використовують для генерації відео. Відео розглядається як послідовність кадрів, і модель працює з кожним з них окремо, збагачуючи шум деталями та структурою. Алгоритм охоплює високорівневі характеристики, такі як сценарій відео, динаміку об’єктів та інші важливі елементи. Деталі того, як відео буде виглядати, які будуть його характеристики, персонажі та сценарії можна редагувати текстовим запитом.
Процес ітерується, доки модель не згенерує відео, за допомогою тих же CNN на базі U-Net, яке відповідає реальному розподілу даних. Це відкриває нові можливості для створення реалістичних відео з нуля. На момент написання цієї статті (лютий 2024) вийшло багато моделей з такими можливостями, найвідоміші з них — Stable Video, SORA, EMO.
Перші дві просто генерують німі кадри високої якості за текстовими запитами, причому можливості Sora дозволяють робити відео будь-якої розмірності без втрати якості. Приклади Stable Video та SORA.
Модель EMO за вхідні значення приймає людське зображення та аудіо, яке людина повинна озвучити. Приклад — ЕМО.
Мультимодальні моделі
Важливим кроком вперед в генеративних моделях є мультимодальні моделі, які використовують CNN для обробки декількох типів вхідних даних, таких як текст, зображення та звук. Мультимодальні моделі відкривають нові можливості для створення складніших та гнучких систем AI.
Основний принцип роботи мультимодальних моделей полягає в їхній здатності з’єднувати інформацію з різних джерел або модальностей (звук, зображення, текст, температура, рухи тощо), що дозволяє виводити більш повноцінну і точну інформацію.
Мультимодальні моделі можуть включати переведення однієї модальності в іншу, наприклад, переведення тексту в зображення, або використання комбінацій модальностей для покращення розуміння контексту або задачі. Прикладами можуть виступати всі попередні моделі для генерації зображень і відео, які на вхід можуть отримувати не тільки текст, але й зображення. Однією з найцікавіших мультимодальних моделей є ImageBind. Вона здатна перетворювати текстовий запит в зображення, аудіо, відео в текстовий опис, аудіо, теплову карту та карту глибин. Також ця модель пропонує різні комбінації подібних перетворень з однієї модальності в іншу.
Автономні транспортні засоби
Світ автономних транспортних засобів теж не залишився поза впливом CNN. Вони стали ключовим інструментом у розробці систем самокерування для автомобілів, дронів та інших засобів пересування, адже вони можуть розпізнавати та інтерпретувати візуальну інформацію в реальному часі. Вони обробляють тривимірні дані, зокрема відео з камер та інших сенсорів для визначення об’єктів у просторі та часі.
Такі алгоритми включають ідентифікацію інших автомобілів, пішоходів, дорожніх знаків та ліній доріжки. Крім того, 3D-CNN можуть бути використані для аналізу послідовностей відео, що дозволяє визначати динаміку об’єктів і прогнозувати їх майбутню поведінку. Це важливо для безпечного руху автономних транспортних засобів, оскільки вони повинні вміти передбачати дії інших учасників дорожнього руху.
Висновок
Не дивлячись на те, що CNN різняться в способі використання, моделях та завданнях, вони є ефективними як в точності, так і швидкості обчислень. При цьому, математична база для кожної з цих моделей є дуже схожою. Вони можуть виявляти шаблони на різних рівнях абстракції, що робить їх ефективними для розпізнавання об’єктів, сегментації зображень, генерації нових зображень та відео.
Однак, можливості CNN не обмежуються цими кейсами. Вони також можуть бути використані в комбінації з іншими моделями для створення мультимодальних систем, які опрацьовують декілька типів даних одночасно. Це відкриває нові можливості для створення складніших та інтелектуальних систем обробки інформації.
Також варто відзначити, що CNN все ще продовжують розвиватися. Прориви в глибокому навчанні та комп’ютерному зорі, такі як дифузні моделі, надають нові можливості для покращення точності, швидкості та ефективності CNN в обробці зображень.
Ця стаття не є вичерпною, бо існують різні варіації CNN, включаючи depthwise convolution, upscale convolution, convolution in GNNs та інші, які не були розглянуті. Ці підходи — модифікації згорткових нейронних мереж, які оптимізовані для конкретних завдань або типів даних.
Освоєння цих спеціалізованих варіантів CNN може дати можливість розробити ефективніші та точніші моделі для обробки зображень та інших типів даних. Тому, якщо ви зацікавлені в глибокому навчанні та обробці зображень, ці теми можуть бути дуже корисними для подальшого вивчення.
В наступній статті ми детально формалізуємо процес застосування згорткових шарів та їх навчання. Якщо вам цікава математика CNN та як саме побудовано алгоритм згорткових нейронних мереж, то рекомендую її до ознайомлення.
12 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів