Завдання:
- Зрозуміти основний принцип роботи штучної нейронної мережі
- Зрозумійте тип штучних нейронних мереж, які називаються автокодерами
- Використовуйте автокодери, щоб зменшити шум на зображеннях
Автокодери - це особливий тип штучної нейронної мережі (ANN). Ось чому для розуміння автокодерів найкраще спочатку мати уявлення про те, як працює ANN.
Основи ANN
ANN - це обчислювальні моделі, натхненні біологічними нейронними мережами. Спрощеним чином ANN можна розділити на три основні компоненти: вхідний рівень, кілька прихованих шарів та вихідний шар (див. Рисунок 1). Сукупність усіх прихованих шарів можна розуміти як функцію, яка залежить від безлічі апріорних невідомих параметрів, званих нейронними вагами. Щоб знайти значення цих ваг, ANN повинен бути навчений.
Фігура 1: Вхідний рівень може складатися, наприклад, із значень пікселів зображення. Приховані шари можна розуміти як певну функцію G, яка залежить від ваги wi, вхідних значень Xi. Функція G перетворює значення на вході і залежно від типу ANN може повертати на вихід інше зображення або ймовірність того, що зображення на вході належить до певного класу, визначеного раніше.
Щоб глибше заглибитися в цю тему нейронних мереж, рекомендується прочитати курс за посиланням нижче (вставити посилання)
Автокодери
Як вже згадувалося раніше, автокодери - це окремий випадок ANN. Особливістю їх є те, що вхідні дані зазвичай точно такі ж, як вихідні. Використовуючи попередній приклад, якщо на вході передано зображення 0, автокодер виведе зображення нуля якомога ближче до зображення входу (рис. 2). На цьому етапі справедливо запитати: у чому користь такої нейронної мережі? Щоб відповісти на це питання, ми повинні трохи краще зрозуміти архітектуру автокодерів. Основна відмінність від звичайних мереж полягає в тому, що проміжні шари (приховані шари) спочатку зменшують свій розмір (Encoder), а потім симетрично збільшують його знову (Decoder) (рис. 2)
Малюнок 2: Загальна архітектура автокодера.
Завдяки архітектурі цього ANN середній рівень є компактним поданням вхідних змінних. Таким чином, шари, що входять до складу кодера, створять більш компактну версію вихідного зображення, тоді як шари, що входять до складу декодера, намагатимуться відновити вихідне зображення з його компактної версії. Цікавим застосуванням цього типу алгоритмів є отримання зображень із високою роздільною здатністю із зображень із низькою роздільною здатністю. Ще одне застосування, поза сферою обробки зображень, полягає у зменшенні розмірів у задачах, де є сотні залежних змінних. У цьому сенсі автокодери виявились альтернативним і більш надійним методом, ніж PCA (Аналіз основних компонентів).
Автокодери як фільтри зображень
Як альтернативу зменшенню розмірності, автокодери можна також використовувати для фільтрації шуму від зображень. Для цього під час навчальної фази набір зображень із шумом повинен бути переданий як вхід, а відповідні зображення без шуму повинні бути передані на виході (рис. 3)
Малюнок 3: Загальна архітектура автокодера для видалення шумів із зображень
Таким чином автокодер «навчиться» видаляти шум із зображень. Після навчання автокодер зможе усунути шум будь-якого зображення цифр від 0 до 9, навіть якщо мережа ніколи їх "не бачила". Зверніть увагу, що для мережі не потрібно вказувати якесь конкретне правило чи фільтр, а що вона «вчиться» сама на етапі навчання.
Код для генерації автокодера для фільтрації зображень
Нижче наведено код для створення автокодера для видалення шуму зображення. У цьому прикладі ми використовуватимемо зображення рукописних цифр, витягнуті з даних MNIST з бібліотеки sklearn Python. Бібліотека має 70 000 розрядних зображень
Спочатку набір зображень поділяється на дві групи; перша група буде складатися з даних, що використовуються для навчання мережі (85%), а решта (15%) для оцінки якості мережі. Потім у новій змінній ми зберігаємо обидва набори зображень, але тепер після додавання до них гауссового шуму. Це зображення, які передаються на вхід автокодера на етапі навчання, тоді як вихідні зображення, витягнуті з MNIST, передаються на вихід. Для визначення архітектури мережі використовується бібліотека keras Python, яка є дуже простим інтерфейсом TensorFlow.
Нарешті, показані результати, отримані при застосуванні автокодера на деяких зображеннях набору перевірки (рис. 4).
Малюнок 4: Зображення з гауссовим шумом (верхній рядок) та відповідні зображення, повернені фільтруючим автокодером (нижній рядок).
Як ви можете бачити на малюнку 4, результат є досить вражаючим. Головною перевагою цього методу є те, що нам не потрібно турбуватися про тип фільтра, який ми повинні застосовувати, а те, що нейронна мережа сама дізнається, який найбільш оптимальний набір фільтрів застосовувати для отримання очікуваного результату. З іншого боку, головним недоліком цього методу є те, що для навчання нейронної мережі необхідна велика кількість зображень (понад 1000). Отже, як ми завжди говоримо, використання чи ні автокодерів для зменшення шуму зображення багато в чому залежатиме від конкретної проблеми. Загалом, якщо у нас є великий набір зображень для тренування мережі, переважно використовувати автокодери перед будь-яким іншим способом зменшення шуму зображень.
- Які фактори впливають на задоволеність пацієнток, які переживають зменшення грудей
- Зелений виклик; 28 днів здорове харчування в ресторані Arvi; Домініканські образи
- Танці йоги Шакті - події Фуертевентура Майстер-класи та курси - Пелла де Осіо
- Шайла Дуркал демонструє зображення свого ампутованого пальця
- Сучасні тенденції у спеціалізованих курсах для медсестер та медсестер