Menggunakan AI untuk mengompres gambar secara berlebihan

Menggunakan AI untuk mengompres gambar secara berlebihan
Algoritme berbasis data seperti jaringan saraf telah menggemparkan dunia. Perkembangan mereka disebabkan oleh beberapa alasan, termasuk peralatan yang murah dan kuat serta data yang sangat banyak. Jaringan saraf saat ini berada di garis depan dalam segala hal yang berkaitan dengan tugas "kognitif" seperti pengenalan gambar, pemahaman bahasa alami, dll. Tetapi mereka tidak boleh terbatas pada tugas-tugas seperti itu. Artikel ini berbicara tentang cara mengompres gambar menggunakan jaringan saraf, menggunakan pembelajaran residual. Pendekatan yang disajikan dalam artikel lebih cepat dan lebih baik daripada codec standar. Skema, persamaan, dan, tentu saja, tabel dengan tes di bawah potongan.

Artikel ini didasarkan pada ini bekerja. Diasumsikan bahwa Anda sudah familiar dengan jaringan saraf dan konsepnya. lilitan ΠΈ fungsi kerugian.

Apa itu kompresi gambar dan bagaimana cara kerjanya?

Kompresi gambar adalah proses mengubah gambar sehingga memakan lebih sedikit ruang. Menyimpan gambar saja akan memakan banyak ruang, itulah sebabnya ada codec seperti JPEG dan PNG yang bertujuan untuk memperkecil ukuran gambar aslinya.

Seperti yang Anda ketahui, ada dua jenis kompresi gambar: tidak rugi ΠΈ dengan kerugian. Seperti namanya, kompresi lossless dapat mempertahankan data gambar asli, sedangkan kompresi lossy kehilangan beberapa data selama kompresi. misalnya, JPG adalah algoritme lossy [kira-kira. terjemahan - pada dasarnya, jangan lupakan juga tentang lossless JPEG], dan PNG adalah algoritme lossless.

Menggunakan AI untuk mengompres gambar secara berlebihan
Perbandingan kompresi lossless dan lossy

Perhatikan bahwa ada banyak artefak kuning pada gambar di sebelah kanan. Ini adalah informasi yang hilang. Piksel tetangga dengan warna serupa dikompresi sebagai satu area untuk menghemat ruang, tetapi informasi tentang piksel sebenarnya hilang. Tentu saja, algoritme yang digunakan dalam codec JPEG, PNG, dll. jauh lebih kompleks, tetapi ini adalah contoh intuitif yang bagus dari kompresi lossy. Kompresi lossless bagus, tetapi file terkompresi lossless memakan banyak ruang disk. Ada cara yang lebih baik untuk mengompresi gambar tanpa kehilangan banyak informasi, tetapi cukup lambat dan banyak yang menggunakan pendekatan iteratif. Ini berarti bahwa mereka tidak dapat dijalankan secara paralel pada banyak inti CPU atau GPU. Keterbatasan ini membuat mereka sama sekali tidak praktis dalam penggunaan sehari-hari.

Masukan Jaringan Syaraf Konvolusional

Jika sesuatu perlu dihitung dan perhitungannya bisa didekati, tambahkan jaringan syaraf. Penulis menggunakan jaringan saraf konvolusional yang cukup standar untuk meningkatkan kompresi gambar. Metode yang disajikan tidak hanya bekerja setara dengan solusi terbaik (jika tidak lebih baik), tetapi juga dapat menggunakan komputasi paralel, yang menghasilkan peningkatan kecepatan yang dramatis. Alasannya adalah Convolutional Neural Networks (CNNs) sangat bagus dalam mengekstraksi informasi spasial dari gambar, yang kemudian disajikan dalam bentuk yang lebih ringkas (misalnya, hanya bagian "penting" dari gambar yang dipertahankan). Penulis ingin menggunakan kemampuan CNN ini untuk merepresentasikan gambar dengan lebih baik.

Arsitektur

Para penulis mengusulkan jaringan ganda. Jaringan pertama mengambil gambar sebagai input dan menghasilkan representasi kompak (ComCNN). Output dari jaringan ini kemudian diproses oleh codec standar (misalnya JPEG). Setelah diproses oleh codec, image diteruskan ke jaringan kedua, yang "memperbaiki" image dari codec dalam upaya mengembalikan image aslinya. Penulis menamakan jaringan ini Reconstructive CNN (RecCNN). Seperti GAN, kedua jaringan dilatih secara iteratif.

Menggunakan AI untuk mengompres gambar secara berlebihan
Representasi ComCNN Compact diteruskan ke codec standar

Menggunakan AI untuk mengompres gambar secara berlebihan
RecCNN. Output ComCNN ditingkatkan dan diumpankan ke RecCNN, yang akan mencoba mempelajari sisanya

Output codec ditingkatkan dan kemudian diteruskan ke RecCNN. RecCNN akan mencoba membuat gambar sedekat mungkin dengan aslinya.

Menggunakan AI untuk mengompres gambar secara berlebihan
Kerangka kompresi gambar end-to-end. Co(.) adalah algoritma kompresi citra. Penulis menggunakan JPEG, JPEG2000 dan BPG

Apa itu sisa?

Sisanya dapat dianggap sebagai langkah pasca-pemrosesan untuk "memperbaiki" gambar yang sedang diterjemahkan oleh codec. Memiliki banyak β€œinformasi” tentang dunia, jaringan saraf dapat membuat keputusan kognitif tentang apa yang harus diperbaiki. Ide ini didasarkan pada sisa belajar, baca detail yang Anda bisa di sini.

Fungsi kerugian

Dua fungsi kerugian digunakan karena kami memiliki dua jaringan saraf. Yang pertama, ComCNN, diberi label L1 dan didefinisikan sebagai berikut:

Menggunakan AI untuk mengompres gambar secara berlebihan
Fungsi kerugian untuk ComCNN

Penjelasan

Persamaan ini mungkin tampak rumit, tetapi sebenarnya standar (root mean square error) MSE. ||Β² berarti norma vektor yang mereka lampirkan.

Menggunakan AI untuk mengompres gambar secara berlebihan
Persamaan 1.1

Cr menunjukkan output dari ComCNN. ΞΈ menunjukkan keterpelajaran parameter ComCNN, XK adalah gambar masukan

Menggunakan AI untuk mengompres gambar secara berlebihan
Persamaan 1.2

Re() singkatan dari RecCNN. Persamaan ini hanya menyampaikan arti persamaan 1.1 ke RecCNN. ΞΈ menunjukkan parameter yang dapat dilatih RecCNN (topi di atas berarti parameternya tetap).

Definisi Intuitif

Persamaan 1.0 akan menyebabkan ComCNN mengubah bobotnya sehingga ketika dibuat ulang dengan RecCNN, gambar akhir terlihat semirip mungkin dengan gambar masukan. Fungsi kerugian RecCNN kedua didefinisikan sebagai berikut:

Menggunakan AI untuk mengompres gambar secara berlebihan
Persamaan 2.0

Penjelasan

Sekali lagi, fungsinya mungkin terlihat rumit, tetapi ini sebagian besar merupakan fungsi kehilangan jaringan saraf standar (MSE).

Menggunakan AI untuk mengompres gambar secara berlebihan
Persamaan 2.1

Co() berarti keluaran codec, x dengan topi di atas berarti keluaran ComCNN. ΞΈ2 adalah parameter yang dapat dilatih RecCNN, res() hanyalah keluaran sisa RecCNN. Perlu dicatat bahwa RecCNN dilatih pada perbedaan antara Co() dan gambar masukan, tetapi tidak pada gambar masukan.

Definisi Intuitif

Persamaan 2.0 akan menyebabkan RecCNN mengubah bobotnya sehingga output terlihat semirip mungkin dengan citra input.

Skema pelatihan

Model dilatih secara iteratif, seperti Gan. Bobot model pertama diperbaiki sedangkan bobot model kedua diperbarui, kemudian bobot model kedua diperbaiki sementara model pertama sedang dilatih.

Uji

Penulis membandingkan metode mereka dengan metode yang sudah ada, termasuk codec sederhana. Metode mereka bekerja lebih baik daripada yang lain dengan tetap mempertahankan kecepatan tinggi pada perangkat keras yang sesuai. Selain itu, penulis mencoba menggunakan hanya satu dari dua jaringan dan mencatat penurunan kinerja.

Menggunakan AI untuk mengompres gambar secara berlebihan
Perbandingan Indeks Kesamaan Struktural (SSIM). Nilai tinggi menunjukkan kemiripan yang lebih baik dengan aslinya. Huruf tebal menunjukkan hasil karya penulis

Kesimpulan

Kami melihat cara baru untuk menerapkan pembelajaran mendalam pada kompresi gambar, dan berbicara tentang kemungkinan menggunakan jaringan saraf dalam tugas di luar tugas "umum" seperti klasifikasi gambar dan pemrosesan bahasa. Metode ini tidak hanya kalah dengan persyaratan modern, tetapi juga memungkinkan Anda memproses gambar lebih cepat.

Mempelajari jaringan saraf menjadi lebih mudah, karena kami membuat kode promo khusus untuk Habravchan HABR, memberikan tambahan diskon 10% dari diskon yang tertera di banner.

Menggunakan AI untuk mengompres gambar secara berlebihan

Lebih banyak kursus

Artikel Pilihan

Sumber: www.habr.com

Tambah komentar