Згорткові нейромережі (CNN) відкривають нові перспективи для розпізнавання об’єктів та класифікації зображень, надаючи більш ефективні методи, що добре масштабуються.
Технологічний прогрес не стоїть на місці. Штучний інтелект (ШІ) та машинне навчання (ML) є одними з найбільш обговорюваних і швидко зростаючих напрямків.
Сьогодні ці технології проникають у всі сфери нашого життя, від маркетингу та електронної комерції до розробки програмного забезпечення, фінансів і медицини.
ШІ та ML – це великі та постійно розвиваючі сфери, і постійно ведуться дослідження, спрямовані на розширення їх можливостей для вирішення різноманітних проблем. Саме тому ці технології мають багато підгалузей; ML, наприклад, є підмножиною ШІ.
Згорткові нейромережі є одним з таких напрямків штучного інтелекту, який набуває все більшої популярності.
У цій статті ми розглянемо, що таке CNN, як вони працюють і яку користь приносять сучасному світу.
Отже, почнемо!
Що таке згорткова нейромережа?
Згорткова нейромережа (CNN або ConvNet) – це штучна нейронна мережа (ANN), яка використовує алгоритми глибокого навчання для аналізу зображень, ідентифікації візуальних елементів і виконання завдань комп’ютерного зору.
CNN застосовує принципи лінійної алгебри, зокрема множення матриць, для виявлення закономірностей у зображеннях. З огляду на складність обчислень, для навчання моделей потрібні графічні процесори (GPU).
Простіше кажучи, CNN використовує алгоритми глибокого навчання, щоб обробляти вхідні дані, такі як зображення, і присвоювати важливість різним аспектам цих зображень через зміщення та ваги. Таким чином, CNN може розрізняти або класифікувати зображення.
CNN: Історичний контекст
Оскільки згорткові нейромережі є різновидом штучних нейронних мереж, важливо згадати їх історію.
В обчисленнях нейронна мережа є частиною машинного навчання (ML), яка використовує алгоритми глибокого навчання. Вона моделює з’єднання нейронів у людському мозку. Штучні нейронні мережі також черпають натхнення з організації зорової кори головного мозку.
Різні типи нейронних мереж або штучних нейронних мереж (ANN) використовуються для різних цілей. Однією з них є CNN, яка використовується для виявлення та класифікації зображень. Вперше вона була представлена доктором Яном Лекуном у 1980-х роках.
Рання версія CNN, LeNet, названа на честь Лекуна, могла розпізнавати рукописні цифри. Згодом її почали використовувати в банківській та поштовій сферах для зчитування цифр на чеках і поштових індексах на конвертах.
Однак ця рання версія була недостатньо масштабована, тому CNN мало використовувалися в штучному інтелекті та комп’ютерному зорі. Крім того, для ефективної обробки великих зображень потрібні були значні обчислювальні ресурси та великі обсяги даних.
У 2012 році AlexNet знову зацікавив людей до глибокого навчання, яке використовує нейронні мережі, що складаються з декількох рівнів. Саме тоді технології досягли достатнього рівня розвитку, і стали доступні великі набори даних та обчислювальні ресурси, необхідні для створення складних CNN, здатних ефективно виконувати завдання комп’ютерного зору.
Структура CNN
Розгляньмо різні шари, з яких складається CNN. Збільшення кількості шарів збільшує складність CNN і дозволяє виявляти більше особливостей зображення. Починаючи з простих функцій, мережа стає здатною виявляти складніші характеристики, такі як форми об’єктів та інші великі елементи, аж поки, нарешті, не зможе розпізнати ціле зображення.
Згортковий шар
Першим шаром CNN є згортковий шар. Це основний будівельний блок CNN, де відбувається більшість обчислень. Для його роботи потрібні такі компоненти, як вхідні дані, карта ознак та фільтр.
CNN може мати кілька згорткових шарів. Це робить структуру CNN ієрархічною, оскільки наступні шари можуть візуалізувати пікселі в межах рецептивних полів попередніх шарів. Згорткові шари перетворюють задане зображення в числові значення, що дозволяє мережі розуміти та виділяти важливі закономірності.
Шар об’єднання
Шари об’єднання (pooling) використовуються для зменшення розмірів і називаються шарами пониження дискретизації. Вони зменшують кількість параметрів, що використовуються у вхідних даних. Операція об’єднання переміщує фільтр по всьому вхідному зображенню, як і згортковий шар, але не має вагових коефіцієнтів. Фільтр застосовує спільну функцію до числових значень в межах рецептивного поля, щоб заповнити масив результатів.
Є два види об’єднання:
- Середнє об’єднання: обчислюється середнє значення в межах рецептивного поля, яке фільтр накладає на вхідні дані, і передається до вихідного масиву.
- Максимальне об’єднання: вибирається піксель з максимальним значенням і передається до вихідного масиву, коли фільтр накладається на вхідні дані. Максимальне об’єднання застосовується частіше, ніж середнє об’єднання.
Хоча під час об’єднання втрачається значна кількість даних, воно має багато переваг для CNN. Це допомагає зменшити ризик перенавчання та складність, підвищуючи ефективність мережі. Це також підвищує стабільність CNN.
Повністю з’єднаний шар (FC)
Як випливає з назви, всі вузли вихідного шару безпосередньо з’єднані з вузлами попереднього шару в повністю з’єднаному шарі. Він класифікує зображення на основі ознак, виділених попередніми шарами, використовуючи їх фільтри.
Крім того, рівні FC зазвичай використовують функцію активації softmax для правильної класифікації вхідних даних замість функцій ReLu (як у випадку рівнів об’єднання та згортки). Це допомагає отримати ймовірність 0 або 1.
Як працюють CNN?
Згорткові нейронні мережі складаються з багатьох шарів, іноді навіть сотень. Ці шари вчаться ідентифікувати різні особливості зображення.
Хоча CNN є нейронними мережами, їхня архітектура відрізняється від звичайної ANN.
Звичайна ANN передає дані через численні приховані шари для їх трансформації. Кожен шар складається з набору штучних нейронів, і кожен нейрон повністю пов’язаний з кожним нейроном наступного шару. Нарешті, є повністю з’єднаний або вихідний шар для відображення результату.
З іншого боку, CNN організовує шари у трьох вимірах: ширині, глибині та висоті. Тут шар нейрона з’єднується лише з нейронами в невеликій області, а не з кожним із них у наступному шарі. Кінцевий результат представлений у вигляді єдиного вектора з оцінкою ймовірності та має лише вимір глибини.
Тепер ви можете запитати, що таке «згортка» в CNN.
Згортка – це математична операція для об’єднання двох наборів даних. У CNN концепція згортки застосовується до вхідних даних для виведення карти ознак шляхом фільтрації інформації.
Це підводить нас до деяких важливих понять і термінології, що використовуються в CNN.
- Фільтр: також відомий як детектор ознак або ядро, фільтр може мати певний розмір, наприклад 3×3. Він проходить через вхідне зображення, виконуючи множення матриць для кожного елемента, щоб застосувати згортку. Застосування фільтрів до кожного тренувального зображення з різною роздільною здатністю і результат згорнутого зображення слугуватиме вхідними даними для наступного шару.
- Заповнення: використовується для розширення вхідної матриці до її меж шляхом вставки фальшивих пікселів. Це робиться для того, щоб протидіяти зменшенню розміру матриці внаслідок згортки. Наприклад, матриця 9×9 після фільтрації може перетворитися на матрицю 3×3.
- Крок: якщо ви хочете отримати результат, менший за вхідні дані, ви можете задати крок. Це дозволяє пропускати певні ділянки, поки фільтр ковзає по зображенню. Пропускаючи два або три пікселі, можна створити ефективнішу мережу, зменшивши просторову роздільну здатність.
- Ваги та зміщення: нейрони CNN мають ваги та зміщення. Модель може вивчати ці значення під час навчання, і вони залишаються незмінними на заданому рівні для всіх нейронів. Це означає, що кожен прихований нейрон виявляє ті самі характеристики в різних областях зображення. У результаті мережа стає більш толерантною до переміщення об’єктів у межах заданого зображення.
- ReLU: скорочення від Rectified Linear Unit (ReLu). Використовується для ефективнішого та швидшого навчання. Він відображає від’ємні значення на 0 і зберігає додатні. Це також називається активацією, оскільки мережа передає на наступний рівень лише активовані ознаки зображення.
- Рецептивне поле: у нейронній мережі кожен нейрон отримує вхідні дані з різних місць з попереднього рівня. У згорткових шарах кожен нейрон отримує вхідні дані з обмеженої області попереднього шару, яка називається рецептивним полем нейрона. У випадку шару FC, рецептивним полем є весь попередній шар.
У реальних обчислювальних завданнях згортка зазвичай виконується у 3D-просторі, що вимагає 3D-фільтра.
Знову повертаючись до CNN, вона складається з різних частин, або шарів вузлів. Кожен шар вузла має поріг і вагу та з’єднаний з іншим. Після перевищення порогового значення дані надсилаються на наступний рівень мережі.
Ці шари можуть виконувати операції для зміни даних, щоб виділити відповідні ознаки. Ці операції повторюються сотні разів у різних шарах, які вчаться ідентифікувати інші особливості зображення.
Структура CNN включає:
- Вхідний шар: сюди надходять вхідні дані, наприклад, зображення. Це буде тривимірний об’єкт із певною висотою, шириною та глибиною.
- Один/кілька прихованих шарів або фаза вилучення ознак: ці шари можуть бути згортковими, об’єднуючими та повністю з’єднаними.
- Вихідний шар: тут відображається результат.
Проходження зображення через згортковий шар перетворює його на карту ознак або карту активації. Після згортання вхідних даних шари згортають зображення і передають результат до наступного шару.
CNN виконує численні згортки та об’єднання, щоб виділити ознаки на етапі їх вилучення. Наприклад, якщо ви введете зображення кота, CNN розпізнає його чотири лапи, колір, два ока тощо.
Далі повністю з’єднані шари в CNN діятимуть як класифікатор на основі виділених ознак. На основі того, що алгоритм глибокого навчання передбачив про зображення, шари надають результат.
Переваги CNN
Вища точність
CNN забезпечують вищу точність порівняно зі звичайними нейронними мережами, які не використовують згортку. CNN особливо корисні, коли завдання включає великі обсяги даних, розпізнавання відео та зображень. Вони дають дуже точні результати та прогнози, тому їх використання зростає в різних секторах.
Обчислювальна ефективність
CNN забезпечують вищий рівень обчислювальної ефективності, ніж інші звичайні нейронні мережі. Це відбувається завдяки використанню процесу згортки. Вони також застосовують методи зменшення розмірності та спільного використання параметрів, що робить моделі швидшими та легшими для розгортання. Ці методи можна оптимізувати для роботи на різних пристроях, від смартфонів до ноутбуків.
Вилучення ознак
CNN можуть легко вивчати особливості зображень без необхідності ручного налаштування. Ви можете використовувати попередньо навчені CNN і керувати вагами, вводячи нові дані під час роботи над новим завданням, і CNN легко адаптуються.
Застосування CNN
CNN застосовуються в різних галузях для багатьох цілей. Ось деякі приклади використання CNN у реальному світі:
Класифікація зображень
CNN широко використовуються в класифікації зображень. Вони можуть розпізнавати важливі особливості та ідентифікувати об’єкти на заданому зображенні. Тому їх застосовують у таких сферах, як охорона здоров’я, зокрема в МРТ. Крім того, цю технологію використовують для розпізнавання рукописних цифр, що є одним з перших випадків застосування CNN у комп’ютерному зорі.
Виявлення об’єктів
CNN можуть виявляти об’єкти на зображеннях у реальному часі, а також маркувати та класифікувати їх. Ця технологія широко використовується в автоматизованих транспортних засобах. Вона також допомагає розумним будинкам та пішоходам розпізнавати обличчя власника автомобіля. CNN також застосовується в системах спостереження на основі ШІ для виявлення та позначення об’єктів.
Аудіовізуальне зіставлення
Застосування CNN у підборі аудіовізуальних матеріалів покращує роботу таких платформ потокового відео, як Netflix, YouTube тощо. Це також допомагає задовольняти запити користувачів, наприклад «пісні про кохання Елтона Джона».
Розпізнавання мови
Окрім обробки зображень, CNN корисні для обробки природної мови (NLP) та розпізнавання мовлення. Реальний приклад цьому є використання Google CNN у своїй системі розпізнавання мовлення.
Реконструкція об’єкта
CNN можна використовувати для 3D-моделювання реального об’єкта в цифровому середовищі. Моделі CNN можуть створювати 3D-модель обличчя, використовуючи зображення. Крім того, CNN корисні для створення цифрових двійників у біотехнологіях, виробництві та архітектурі.
Застосування CNN у різних сферах:
- Охорона здоров’я: комп’ютерний зір використовується в радіології, щоб допомогти лікарям ефективніше виявляти ракові пухлини.
- Сільське господарство: мережі можуть використовувати зображення зі штучних супутників, наприклад LSAT, та застосовувати ці дані для класифікації родючих земель. Це також допомагає прогнозувати рівень родючості ґрунту та розробляти стратегії для максимізації врожаю.
- Маркетинг: програми соціальних мереж можуть розпізнавати людей на зображеннях, розміщених у профілях користувачів. Це допоможе вам позначити людей у фотоальбомах.
- Роздрібна торгівля: платформи електронної комерції використовують візуальний пошук, щоб допомогти брендам рекомендувати відповідні товари, які клієнти хочуть придбати.
- Автомобільна промисловість: CNN використовуються в автомобілях для підвищення безпеки пасажирів і водіїв, наприклад, для розпізнавання смуг руху, виявлення об’єктів, класифікації зображень. Це також сприяє подальшому розвитку безпілотних автомобілів.
Ресурси для вивчення CNN
Coursera:
Coursera пропонує курс з вивчення CNN. Цей курс навчить вас еволюції комп’ютерного зору та застосуванням CNN у сучасному світі.
Amazon:
Ви можете ознайомитися з цими книгами та лекціями, щоб дізнатися більше про CNN:
- Нейронні мережі та глибоке навчання: вивчає моделі, алгоритми та теорію глибокого навчання та нейронних мереж.
- Посібник із згорткових нейронних мереж для комп’ютерного зору: ця книга навчить вас основам CNN та їх застосуванню.
- Практичні згорткові нейронні мережі з Tensorflow: ця книга допоможе вам вирішувати різноманітні проблеми комп’ютерного зору за допомогою Python та TensorFlow.
- Розширене застосування глибокого навчання: ця книга допоможе вам зрозуміти CNN, глибоке навчання та їх розширені застосування, включаючи виявлення об’єктів.
- Згорткові нейронні мережі та рекурентні нейронні мережі: ця книга навчить вас про CNN та RNN та їх побудову.
Висновок
Згорткові нейронні мережі є однією з нових галузей штучного інтелекту, машинного навчання та глибокого навчання. Вони мають різноманітні застосування в сучасному світі практично у кожній галузі. З огляду на їх все ширше використання, очікується, що їх роль у вирішенні проблем реального світу буде зростати.