Jaringan Neural Centroid dan Kuantisasi Vektor untuk Kompresi Gambar – Menuju AI — Teknologi, Sains, dan Rekayasa Terbaik

Pengarang: LA Tran

Pembelajaran Mendalam

Mari kita tingkatkan potensi yang kurang diperhatikan

Foto oleh Verne Ho di Unsplash

Centroid neural network (CentNN) telah terbukti sebagai algoritma pengelompokan yang efisien dan stabil dan telah berhasil diterapkan pada berbagai masalah. CentNN dalam banyak kasus menghasilkan hasil pengelompokan yang lebih akurat dibandingkan dengan K-Means dan Self-Organizing Map (SOM). Keterbatasan utama CentNN adalah membutuhkan lebih banyak waktu untuk konvergen karena CentNN dimulai dengan 2 cluster dan tumbuh secara bertahap hingga mencapai jumlah cluster yang diinginkan. Kembali ke hari ketika teori jaringan saraf tiruan (JST) diperkenalkan pada tahun 1943 tetapi baru menjadi populer ketika backpropagation diturunkan pada awal 60-an dan diimplementasikan untuk berjalan di komputer sekitar tahun 1970, atau gagasan Jaringan Kapsul Hinton ( CapsNet) telah dipertimbangkan selama hampir 40 tahun hingga perutean dinamis dirilis pada 2017. Dari sudut pandang saya, CentNN menghadapi masalah yang sama ketika hanya membutuhkan mode yang lebih cepat untuk beroperasi secara superior karena kekokohan teorinya telah terbentuk. Anda dapat menemukan penjelasan saya tentang CentNN di sini dan tutorial saya untuk mengimplementasikan algoritma ini di sini.

Clustering menggunakan Centroid Neural Network (GIF oleh Penulis)

Dalam posting ini, saya akan mengimplementasikan algoritma CentNN untuk masalah kompresi gambar dan menunjukkan seberapa bagusnya jika dibandingkan dengan K-Means.

Kompresi Gambar

Kompresi gambar adalah genre kompresi data di mana jenis datanya adalah gambar digital dengan tujuan meminimalkan biaya transmisi dan penyimpanan. Untuk tujuan ini, pengelompokan dan kuantisasi vektor adalah dua metode yang digunakan secara luas.

Kuantisasi vektor adalah teknik kompresi lossy untuk kompresi data. Ini mengacu pada membagi satu set besar titik data menjadi sejumlah cluster yang telah ditentukan sebelumnya di mana centroid dari setiap cluster memiliki jarak terdekat ke titik data clusternya dibandingkan dengan centroid lainnya. Dalam pengertian ini, metode pengelompokan dikerahkan untuk melakukan kuantisasi. Anda dapat menemukan penjelasan yang lebih mudah tentang kuantisasi vektor menggunakan algoritma K-Means untuk kompresi gambar di posting Mahnoor Javed di sini.

Sampai titik ini, saya kira Anda memahami algoritma CentNN dan K-Means, dan kompresi gambar menggunakan pengelompokan dan kuantisasi vektor. Sekali lagi, Anda dapat menemukan penjelasan saya tentang CentNN di sini dan tutorial saya untuk mengimplementasikan algoritma ini di sini. Dan sekarang, mari kita beralih ke cerita utama kita hari ini.

Jaringan Saraf Centroid untuk Kompresi Gambar

Pada postingan kali ini, saya ingin mengambil gambar Lena klasik sebagai sampel untuk melakukan eksperimen kompresi gambar menggunakan CentNN, juga diperoleh hasil penggunaan K-Means untuk perbandingan. Saya ingin membandingkan CentNN dan K-Means dalam 2 jenis kuantisasi: kuantisasi skalar dan kuantisasi blok (vektor). Sekarang mari kita memuat sampel gambar kita dan melakukan beberapa langkah pra-pemrosesan:

gambar = cv2.imread(“gambar/lena.jpg”, 0)
gambar = cv2.resize(gambar, (128.128))
plt.imshow(gambar, cmap = “abu-abu”)
plt.tampilkan()
Gambar Lena (128 × 128)

1. CentNN + Kuantisasi Skalar

Jumlah cluster diatur menjadi 48 dalam eksperimen ini. Pertama, panggil fungsi K-Means dari sklearn dan implementasikan sub-rutin untuk kuantisasi:

https://medium.com/media/5d94729622780efc60dc96f601201449/href

Hasil ini disimpan untuk dibandingkan kemudian.

Sekarang mari kita terapkan algoritma CentNN untuk mengkuantisasi gambar sampel kita, di bawah ini adalah implementasi lengkap saya dengan penjelasan komentar, Anda dapat menemukan versi yang mudah digunakan dengan fungsi yang dipanggil di repo GitHub saya di sini. Jika Anda tidak tertarik dengan kumpulan baris kode ini, abaikan saja dan lompati untuk melihat hasilnya, tidak ada perasaan sulit.

https://medium.com/media/8e71e6ab0a4239f8d43b8243c011ba03/href

Sekarang kita dapat memecahkan kode data terkuantisasi, menghitung nilai PSNR dan menampilkan hasilnya:

https://medium.com/media/1c975a6393b974f18e23944fc8cc38d3/href

Gambar Rekonstruksi menggunakan Kuantisasi Skalar dengan K-Means (tengah) dan CentNN (kanan). (Gambar oleh Penulis)

Eksperimen dengan pengaturan yang dijelaskan ini menunjukkan bahwa gambar yang direkonstruksi dari algoritma CentNN (PSNR 47.53) memiliki kualitas yang lebih baik daripada K-Means (PSNR 46.35).

2. CentNN + Kuantisasi Blok

Pada percobaan kedua, kuantisasi blok (vektor), jumlah cluster, dan ukuran blok masing-masing diatur ke 512 dan 4×4. Sama halnya dengan percobaan sebelumnya, pertama, panggil fungsi K-Means dari library sklearn dan implementasikan sub-rutin untuk kuantisasi blok:

https://medium.com/media/ee1357a83df915de18ed25612fbe2005/href

Sekali lagi, hasil untuk K-Means digunakan untuk membandingkan dengan CentNN segera.

Sekarang buat kode algoritma CentNN untuk kuantisasi blok. Juga, jika Anda tidak tertarik dengan pengkodean, Anda dapat mengabaikan bagian berikut dan melompat untuk melihat hasilnya.

https://medium.com/media/fab494dc5f96fdd277a4fb61b430409c/href

Dekode dan tampilkan hasil:

https://medium.com/media/89bad2941d519656593c35b0ada51b49/href

Gambar Rekonstruksi menggunakan Block Quantization dengan K-Means (tengah) dan CentNN (kanan). (Gambar oleh Penulis)

Seperti yang dapat kita lihat dalam hasil ini, CentNN mengungguli K-Means dengan kesenjangan yang signifikan, PSNR masing-masing 36,78 dan 32,57.

Kesimpulan

Dalam posting ini, saya telah memperkenalkan Anda semua tentang implementasi Centroid Neural Network (CentNN) untuk kompresi gambar dan perbandingan antara CentNN dan K-Means dalam tugas kompresi gambar. Dua percobaan kuantisasi skalar dan kuantisasi blok (vektor) dilakukan untuk sampai pada kesimpulan bahwa CentNN mengungguli K-Means dalam tugas yang diajukan. Bagi saya, CentNN adalah algoritma yang keren tetapi entah bagaimana tidak terlalu diperhatikan. Dengan membagikan tulisan saya, saya berharap dapat membawa hal-hal luar biasa kepada Anda semua yang jatuh cinta dengan pembelajaran mesin.

Anda dipersilakan untuk mengunjungi halaman penggemar Facebook saya yang untuk berbagi hal-hal tentang Pembelajaran Mesin: Menyelam ke Pembelajaran Mesin.

Cukup untuk hari ini. Terima kasih telah meluangkan waktu!

Referensi

[1] Centroid Neural Network: Algoritma Clustering yang Efisien dan Stabil

[2] Jaringan Saraf Centroid untuk Pengelompokan dengan Numpy

Jaringan Neural Centroid dan Kuantisasi Vektor untuk Kompresi Gambar awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Menuju AI