Використання ІІ для надстиснення зображень

Використання ІІ для надстиснення зображень
Керовані даними алгоритми, такі як нейронні мережі, взяли світ штурмом. Їх розвиток викликано декількома причинами, у тому числі дешевим та потужним обладнанням та величезним обсягом даних. Нейронні мережі нині перебувають у авангарді у всьому, що стосується «когнітивних» завдань, як-от розпізнавання зображень, розуміння природного мови тощо. Але вони не повинні обмежуватись такими завданнями. У цьому матеріалі розповідається про спосіб стиснення зображень за допомогою нейронних мереж за допомогою залишкового навчання. Представлений у статті підхід працює швидше і краще за стандартні кодеки. Схеми, рівняння та, звичайно, таблиця з тестами під катом.

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

Що таке стискування зображень і яке воно буває?

Стиснення зображень – це процес перетворення зображення таким чином, щоб воно займало менше місця. Просте зберігання зображень зайняло багато місця, тому існують кодеки, такі як JPEG і PNG, які націлені на зменшення розміру вихідного зображення.

Як відомо, існує два типи стиснення зображень: без втрат и із втратами. Як випливає з назв, при стисненні без втрат можна отримати дані вихідного зображення, а при стисненні з втратами деякі дані втрачаються під час стиснення. наприклад, JPG - це алгоритми з втратами [прим. перев. - В основному, не будемо також забувати про JPEG без втрат], а PNG - алгоритм без втрат.

Використання ІІ для надстиснення зображень
Порівняння стиснення без втрат та з втратами

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

Введення згорткової нейронної мережі

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

Архітектура

Автори запропонували подвійну мережу. Перша мережа приймає на вхід зображення та генерує компактну виставу (ComCNN). Вихідні дані цієї мережі потім обробляють стандартним кодеком (наприклад, JPEG). Після обробки кодеком зображення передається на другу мережу, яка «виправляє» зображення з кодека у спробі повернути вихідне зображення. Автори назвали цю мережу реконструюючої CNN (RecCNN). Подібно до GAN обидві мережі навчаються ітеративно.

Використання ІІ для надстиснення зображень
ComCNN Компактне уявлення передається стандартному кодеку

Використання ІІ для надстиснення зображень
RecCNN. Вихідні дані ComCNN масштабуються зі збільшенням і передаються RecCNN, яка спробує вивчити залишок

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

Використання ІІ для надстиснення зображень
Наскрізний фреймворк стиснення зображень. Co(.) є алгоритм стиснення зображень. Автори застосовували JPEG, JPEG2000 та BPG

Що таке решта?

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

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

Дві функції втрат використовуються тому, що ми маємо дві нейронні мережі. Перша з них, ComCNN, позначена як L1 і визначається так:

Використання ІІ для надстиснення зображень
Функція втрат для ComCNN

пояснення

Це рівняння може бути складним, але насправді це стандартна (середньоквадратична помилка) MSE. ||² означає норму вектора, що вони укладають.

Використання ІІ для надстиснення зображень
Рівняння 1.1

Cr означає вихідні дані ComCNN. θ означає навчання параметрів ComCNN, XK — це вхідне зображення

Використання ІІ для надстиснення зображень
Рівняння 1.2

Re() означає RecCNN. Це рівняння просто передає значення рівняння 1.1 RecCNN. θ позначає навчальні параметри RecCNN (капелюшок зверху означає, що параметри фіксовані).

Інтуїтивне визначення

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

Використання ІІ для надстиснення зображень
Рівняння 2.0

пояснення

Знову функція може бути складною, але це здебільшого стандартна функція втрат нейронної мережі (MSE).

Використання ІІ для надстиснення зображень
Рівняння 2.1

Co() означає виведення кодека, x з капелюшком зверху означає висновок ComCNN. θ2 - це навчальні параметри RecCNN, res() є просто залишковий висновок RecCNN. Варто зазначити, що RecCNN навчається різниці між Co() і вхідним зображенням, але з вхідному зображенні.

Інтуїтивне визначення

Рівняння 2.0 змусить RecCNN змінити свої ваги так, щоб вихідні дані виглядали якомога схожими на вхідне зображення.

схема навчання

Моделі навчаються ітеративно, подібно GAN. Вага першої моделі фіксуються, поки ваги другої моделі оновлюються, потім ваги другої моделі фіксуються, поки перша модель навчається.

Тести

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

Використання ІІ для надстиснення зображень
Порівняння індексу структурної подібності (SSIM). Високі значення вказують на кращу схожість із оригіналом. Жирним шрифтом виділено результат роботи авторів

Висновок

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

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

Використання ІІ для надстиснення зображень

Ще курси

Рекомендовані статті

Джерело: habr.com

Додати коментар або відгук