Perkenalan

Postingan ini akan menunjukkan kepada Anda cara mengambil sekumpulan gambar dan vektor gambar, dan mempersiapkannya untuk visualisasi di TensorBoard TensorFlow.

Bayangkan saya sedang bekerja dengan kumpulan data gambar (tidak memerlukan banyak imajinasiā€¦). Mungkin menggunakannya untuk klasifikasi, mungkin menggunakannya untuk melatih model generatif, atau mungkin menggunakannya untuk memprediksi curah hujan harian di Antigonish, Nova Scotia. Untuk postingan ini, tidak masalah untuk apa saya menggunakan gambar tersebut. Untuk postingan ini yang penting adalah saya telah meneruskan gambar saya melalui model yang memetakannya ke ruang penyematan dan sekarang saya memiliki representasi gambar saya yang tertanam (alias vektor).

Sekarang, dengan vektor gambar ini saya ingin mendapatkan gambaran seperti apa ruang penyematannya. Ada beberapa cara untuk melakukan hal ini, tetapi salah satu cara cepat untuk melakukannya adalah dengan menggunakan TensorBoard TensorFlow. Ini memberi saya visualisasi yang indah dan saya dapat menjalankan algoritma PCA 2D/3D dan t-SNE pada vektor gambar saya langsung di browser saya. Versi demo TensorBoard bahkan memiliki UMAP šŸ˜®. TensorBoard hadir dengan TensorFlow sehingga Anda dapat menginstalnya dengan mengikuti panduan instalasi TensorFlow.

Saat pertama kali mencoba melakukan ini, saya menyadari tidak banyak sumber daya yang bagus untuk memandu seseorang dalam menyiapkan gambar untuk TensorBoard. Ada ā€œmasalah githubā€, dan masalah github lainnya yang menyatakan ā€œtidak ada contoh kodeā€. Meskipun tautan kedua sekarang memiliki beberapa sumber daya, tautan tersebut masih tidak mudah diakses. Saya harap postingan ini memberikan panduan langsung tentang cara memvisualisasikan vektor fitur gambar di TensorBoard.

Dengan semangat yang lugas, Anda dapat menemukan buku catatan jupyter di sini dengan kode jika Anda tidak ingin menelusurinya.

Kode

Dalam beberapa paragraf berikutnya saya akan menjelaskan cara beralih dari gambar dan vektor gambar ke representasi yang dapat divisualisasikan di TensorBoard. Agar ini berfungsi, model tempat saya mendapatkan vektor gambar tidak harus berada di TensorFlow. Bisa berupa "PyTorch", "Chainer", apa pun, asalkan vektornya bisa disimpan sebagai array numpy. Pertama-tama saya akan membuat gambar sprite untuk TensorBoard, lalu menyimpan vektor gambar saya sebagai variabel TensorFlow sehingga TensorBoard dapat membacanya dan mengaitkannya dengan gambar sprite.

Buat gambar sprite dengan fungsi berikut:

Melihat kodenya, blok pertama menyesuaikan semua gambar menjadi gambar RGB 3 saluran. Blok kedua menambahkan padding pada gambar. Gambar sprite harus berbentuk persegi sehingga kita menghitung padding yang kita perlukan untuk menyusun gambar kita menjadi persegi. Blok kode ketiga menyusun masing-masing gambar ke dalam gambar sprite persegi.

Jika menggunakan fungsi ini sebagai contoh, tampilannya mungkin seperti ini:

Sekarang saya akan memuat vektor fitur, menghasilkan metadata, dan menyimpannya untuk dimuat ke TensorBoard:

Kodenya harus mudah diikuti. Saya membuat file metadata, lalu menambahkan penyematan ke konfigurasi TensorBoard, dan melampirkan metadata dan sprite ke penyematan.

Visualisasi

Lalu saya akan menjalankan TensorBoard dan menyaksikan keajaiban terjadi.

$ tensorboard --logdir my-log-dir

Kesimpulan

Terima kasih sudah membaca. Saya telah menunjukkan cara mengambil vektor fitur dan gambar terkait, dan mempersiapkannya untuk visualisasi di TensorBoard. Saya harap Anda menikmati postingan ini. Anda dapat menemukan contoh kerja (bersama dengan data!) di github. Jangan ragu untuk menghubungi kami jika ada pertanyaan.

Anda dapat mengikuti saya untuk konten lainnya di Twitter @andrew brownmart