Menggunakan AI untuk memampatkan imej secara berlebihan

Menggunakan AI untuk memampatkan imej secara berlebihan
Algoritma dipacu data seperti rangkaian saraf telah melanda dunia. Perkembangan mereka didorong oleh beberapa sebab, termasuk perkakasan yang murah dan berkuasa serta sejumlah besar data. Rangkaian saraf kini berada di barisan hadapan dalam segala hal yang berkaitan dengan tugas "kognitif" seperti pengecaman imej, pemahaman bahasa semula jadi, dsb. Tetapi mereka tidak sepatutnya terhad kepada tugas sedemikian. Bahan ini menerangkan kaedah untuk memampatkan imej menggunakan rangkaian saraf menggunakan pembelajaran sisa. Pendekatan yang dibentangkan dalam artikel berfungsi lebih pantas dan lebih baik daripada codec standard. Skim, persamaan dan, sudah tentu, jadual dengan ujian di bawah potongan.

Artikel ini berdasarkan ini kerja. Diandaikan bahawa anda sudah biasa dengan rangkaian saraf dan konsepnya lilitan ΠΈ fungsi kehilangan.

Apakah pemampatan imej dan apakah jenis pemampatan itu?

Pemampatan imej ialah proses mengubah imej supaya ia mengambil lebih sedikit ruang. Menyimpan imej sahaja akan mengambil banyak ruang, jadi terdapat codec seperti JPEG dan PNG yang bertujuan untuk mengurangkan saiz imej asal.

Seperti yang anda ketahui, terdapat dua jenis pemampatan imej: tak rugi pun ΠΈ dengan kerugian. Seperti namanya, pemampatan tanpa kehilangan boleh memulihkan data imej asal, manakala pemampatan lossy kehilangan beberapa data semasa pemampatan. contohnya, JPG ialah algoritma lossy [lebih kurang. terjemahan - pada asasnya, jangan lupa tentang JPEG tanpa kehilangan], dan PNG ialah algoritma tanpa kerugian.

Menggunakan AI untuk memampatkan imej secara berlebihan
Perbandingan pemampatan lossless dan lossy

Ambil perhatian bahawa imej di sebelah kanan mempunyai banyak artifak terhalang. Ini adalah maklumat yang hilang. Piksel bersebelahan dengan warna yang serupa dimampatkan sebagai satu kawasan untuk menjimatkan ruang, tetapi maklumat tentang piksel sebenar hilang. Sudah tentu, algoritma yang digunakan dalam codec JPEG, PNG, dsb. adalah lebih kompleks, tetapi ini adalah contoh intuitif yang baik bagi pemampatan lossy. Mampatan tanpa rugi adalah bagus, tetapi fail mampat tanpa rugi memakan banyak ruang cakera. Terdapat cara yang lebih cekap untuk memampatkan imej tanpa kehilangan banyak maklumat, tetapi ia agak perlahan dan banyak menggunakan pendekatan berulang. Ini bermakna ia tidak boleh dijalankan secara selari pada berbilang teras CPU atau GPU. Had ini menjadikan mereka tidak praktikal sepenuhnya untuk kegunaan harian.

Input Rangkaian Neural Konvolusi

Jika sesuatu perlu dikira dan pengiraan mungkin anggaran, tambah rangkaian neural. Penulis menggunakan rangkaian neural convolutional yang agak standard untuk meningkatkan pemampatan imej. Kaedah yang dibentangkan bukan sahaja berprestasi setanding dengan penyelesaian terbaik (jika tidak lebih baik), ia juga boleh menggunakan pengkomputeran selari, menghasilkan peningkatan mendadak dalam kelajuan. Sebabnya ialah rangkaian neural convolutional (CNN) sangat baik dalam mengekstrak maklumat spatial daripada imej, yang kemudiannya diwakili dalam bentuk yang lebih padat (contohnya, hanya bit "penting" imej yang dikekalkan). Penulis mahu menggunakan ciri CNN ini untuk mewakili imej dengan lebih baik.

seni bina

Penulis mencadangkan rangkaian dwi. Rangkaian pertama mengambil imej sebagai input dan menjana perwakilan padat (ComCNN). Output rangkaian ini kemudiannya diproses oleh codec standard (seperti JPEG). Setelah diproses oleh codec, imej dihantar ke rangkaian kedua, yang "membetulkan" imej daripada codec dalam percubaan untuk mengembalikan imej asal. Penulis memanggil rangkaian ini sebagai CNN pembinaan semula (RecCNN). Seperti GAN, kedua-dua rangkaian dilatih secara berulang.

Menggunakan AI untuk memampatkan imej secara berlebihan
Perwakilan padat ComCNN dipindahkan ke codec standard

Menggunakan AI untuk memampatkan imej secara berlebihan
RecCNN. Output ComCNN ditingkatkan dan disalurkan kepada RecCNN, yang akan cuba mempelajari selebihnya

Output codec ditingkatkan dan kemudian disalurkan ke RecCNN. RecCNN akan cuba mengeluarkan imej yang serupa dengan asal yang mungkin.

Menggunakan AI untuk memampatkan imej secara berlebihan
Rangka kerja pemampatan imej hujung ke hujung. Co(.) ialah algoritma pemampatan imej. Penulis menggunakan JPEG, JPEG2000 dan BPG

Apakah bakinya?

Selebihnya boleh dianggap sebagai langkah pasca pemprosesan untuk "meningkatkan" imej yang dinyahkod oleh codec. Dengan banyak "maklumat" tentang dunia, rangkaian saraf boleh membuat keputusan kognitif tentang perkara yang perlu diperbaiki. Idea ini berdasarkan latihan sisa, baca butiran tentang yang anda boleh di sini.

Fungsi kehilangan

Dua fungsi kehilangan digunakan kerana kita mempunyai dua rangkaian saraf. Yang pertama ini, ComCNN, dilabelkan L1 dan ditakrifkan seperti berikut:

Menggunakan AI untuk memampatkan imej secara berlebihan
Fungsi kehilangan untuk ComCNN

Penjelasan

Persamaan ini mungkin kelihatan rumit, tetapi ia sebenarnya standard (min ralat kuasa dua) MSE. ||Β² bermaksud norma vektor yang dilampirkan.

Menggunakan AI untuk memampatkan imej secara berlebihan
Persamaan 1.1

Cr menandakan output ComCNN. ΞΈ menandakan kebolehlatihan parameter ComCNN, XK ialah imej input

Menggunakan AI untuk memampatkan imej secara berlebihan
Persamaan 1.2

Re() bermaksud RecCNN. Persamaan ini hanya menghantar nilai persamaan 1.1 kepada RecCNN. ΞΈ menandakan parameter RecCNN yang boleh dilatih (topi di atas bermakna parameter telah ditetapkan).

Definisi intuitif

Persamaan 1.0 akan memaksa ComCNN menukar pemberatnya supaya, apabila dibina semula menggunakan RecCNN, imej akhir kelihatan sama dengan imej input yang mungkin. Fungsi kehilangan RecCNN kedua ditakrifkan seperti berikut:

Menggunakan AI untuk memampatkan imej secara berlebihan
Persamaan 2.0

Penjelasan

Sekali lagi fungsi itu mungkin kelihatan rumit, tetapi ia adalah sebahagian besar fungsi kehilangan rangkaian saraf (MSE) standard.

Menggunakan AI untuk memampatkan imej secara berlebihan
Persamaan 2.1

Co() bermaksud output codec, x dengan penutup di atas bermakna output ComCNN. ΞΈ2 ialah parameter RecCNN yang boleh dilatih, res() hanyalah sisa keluaran RecCNN. Perlu diingat bahawa RecCNN dilatih mengenai perbezaan antara Co() dan imej input, tetapi bukan pada imej input.

Definisi intuitif

Persamaan 2.0 akan memaksa RecCNN menukar pemberatnya supaya output kelihatan sama dengan imej input yang mungkin.

Skim latihan

Model dilatih secara berulang, serupa dengan GAN. Pemberat model pertama ditetapkan manakala pemberat model kedua dikemas kini, kemudian pemberat model kedua ditetapkan manakala model pertama dilatih.

Ujian

Penulis membandingkan kaedah mereka dengan kaedah sedia ada, termasuk codec mudah. Kaedah mereka berfungsi lebih baik daripada yang lain sambil mengekalkan kelajuan tinggi pada perkakasan yang sesuai. Selain itu, penulis cuba menggunakan hanya satu daripada dua rangkaian dan mencatatkan penurunan dalam prestasi.

Menggunakan AI untuk memampatkan imej secara berlebihan
Perbandingan indeks persamaan struktur (SSIM). Nilai tinggi menunjukkan persamaan yang lebih baik dengan yang asal. Hasil kerja pengarang diserlahkan dalam huruf tebal.

Kesimpulan

Kami melihat cara baharu untuk menggunakan pembelajaran mendalam untuk pemampatan imej, dan bercakap tentang kemungkinan menggunakan rangkaian saraf dalam tugas melangkaui tugas "umum", seperti klasifikasi imej dan pemprosesan bahasa. Kaedah ini bukan sahaja tidak kalah dengan keperluan moden, tetapi juga membolehkan anda memproses imej dengan lebih cepat.

Ia menjadi lebih mudah untuk mengkaji rangkaian saraf, kerana kami telah mencipta kod promosi khas untuk penduduk Khabra HABR, memberikan diskaun tambahan 10% kepada diskaun yang ditunjukkan pada sepanduk.

Menggunakan AI untuk memampatkan imej secara berlebihan

Lebih banyak kursus

Artikel Pilihan

Sumber: www.habr.com

Tambah komen