Mencari ukuran Ideal Gambar untuk Deep Learning
Mencari Ukuran Ideal Gambar untuk Deep Learning – Dimension / Ukuran dari sebuah object/gambar untuk proses deep learning merupakan hal sulit kita tentukan. Dalam dataset tertentu untuk ukuran 32×32 sudah lebih dari cukup tapi tidak untuk gambar yang kompleks, dengan mengubah ukuran 100 x 100 saja itu akan terasa sekali waktu yang dibutuhkan untuk melakukan kalkulasi rumit. Tadinya hanya ribuan paramater akan melonjak menjadi belasan ribu paramater apalagi kalau menggunakan ukuran deep layer nya semakin banyak tentu RAM komputer kalian akan habis duluan sebelum melakukan kalkulasi.
Ukuran Ideal Gambar untuk Deep Learning setidaknya ada 2 cara yaitu Downscaling dan UpScaling. Efek setiap kegiatan tersebut ada yaitu fitur dan time calculation sehingga menciptakan trade off alias mana yang akan diinginkan. Downscaling yaitu gambar yang lebih besar akan diperkecil, ini mempersulit CNN untuk mempelajari fitur yang diperlukan untuk klasifikasi atau deteksi karena jumlah piksel di mana fitur vital akan ada berkurang secara signifikan sedangkan Upscaling yaitu Ketika gambar kecil ditingkatkan dan diisi dengan nol, maka NN harus mengetahui bahwa bagian yang diisi tidak berdampak pada klasifikasi. Gambar yang lebih besar juga lebih lambat untuk dilatih dan mungkin memerlukan lebih banyak VRAM.
Solusi terbaik untuk mengetahui ukuran ideal gambar untuk deep learning
Lantas apa solusi terbaik untuk mengetahui ukuran ideal gambar untuk deep learning? Kita gunakan saja sebuah ratio antara sebagai dasar untuk mengetahui dataset yang kita punya mempunyai kombinasi ratio seperti apa sih? Tentu melihat ratio untuk ribuan gambar bukan hal menarik bila kita kerjakan satu-persatu. Yup kita butuh yang namanya sebuah visualisasi scatter plot untuk mengetahui sebaran ratio dataset yang kita punyai. Yuk kita pelajari dataset dari https://www.kaggle.com/c/dogs-vs-cats/data. Berikut isi gambaran dataset tersebut.
Hem.. kalau saya lihat sih ukuran dimensi 400 sampai dengan 500 dan ternyata ada pencilan data! Kita buang saja pencilan datanya menjadi seperti berikut
Ukuran Scatter akan mengikuti nilai ratio nya sehingga kalian bisa melihat ukuran ideal diatas yaitu 400 sd 500 pixel. Rekomendasi saya untuk kumpulan data ini adalah mulai melatih jaringan saraf dengan ukuran gambar 400 dan secara bertahap meningkatkannya menjadi 500 dan menyelesaikannya dengan ukuran 500. Dengan cara ini, model harus dapat menggeneralisasi dengan baik untuk resolusi gambar yang berbeda. Tapi umumnya untuk deep learning ukuran gambar seperti 256 x 256 itu sudah sangat ideal sih terlalu besar itu akan menjadi samar nantinya karena kebanyakan fitur yang dihasilkan. Gimana menurut kalian Mencari ukuran Ideal Gambar untuk Deep Learning? ada saran lain
Berikut kode lengkapnya
import pandas as pd import matplotlib.pyplot as plt from PIL import Image import glob files = glob.glob('D:/CNN Cats and DOG/train/*.*') meta_file_list = list() for i,file in enumerate(files,0): if (i%1000)==0: #buat nampilkan progress print(i,file) img = Image.open(file).convert("RGB") tinggi,lebar = img.size if tinggi<600 and lebar <600: #buang pencilan data meta_file_list.append({'No':(i+1), 'File':file, 'Width':lebar, 'Height':tinggi, 'Ratio':(lebar/tinggi)}) meta_df = pd.DataFrame(meta_file_list) print(meta_df.head(5)) fig = plt.figure(figsize=(8, 8)) ax = fig.add_subplot(111) points = ax.scatter(meta_df.Width, meta_df.Height, color='blue', alpha=0.5, s=meta_df["Ratio"]*100, picker=True) ax.set_title("Image Resolution") ax.set_xlabel("Width", size=14) ax.set_ylabel("Height", size=14)