Pengantar Augmentasi Data untuk Gambar, Menggunakan ImageDataGenerator Tensorflow – Menuju AI – Teknologi, Sains, dan Teknik Terbaik

Penulis: Ankur Manikandan

Visi Komputer, Pembelajaran Mesin

Foto oleh Kyle Glenn di Unsplash

Model yang terlalu pas ke information pelatihan adalah masalah umum yang dihadapi para ilmuwan information dan peneliti pembelajaran mesin secara teratur. Berbagai teknik tersedia untuk mengurangi pemasangan yang berlebihan; dalam artikel ini, kami akan fokus pada Augmentasi Data.

Kerusakan:
1. ) Apa itu augmentasi info?
2. ) Kapan melakukan augmentasi info?
3. ) Augmentasi info menggunakan ImageDataGenerator

Apa itu augmentasi info?

Augmentasi information adalah teknik yang memanfaatkan transformasi atau pengambilan sampel berlebihan untuk mengembangkan kumpulan information asli secara artifisial. [1] Contoh transformasi gambar adalah rotasi gambar, mengubah kecerahan gambar, membalik gambar secara flat atau vertikal, dll.

Kapan melakukan augmentasi info?

Deep Learning telah membantu kami mencapai performa canggih pada tugas-tugas personal vision. Meski demikian, mereka rentan terhadap overfitting. Mari kita lihat contoh sederhana –

Katakanlah Anda ingin membangun jaringan saraf untuk mengidentifikasi Toyota Corolla. Anda telah mengumpulkan information pelatihan, dan gambar Anda sangat mirip dengan yang ditunjukkan di bawah ini.

Gambar dua Toyota Corolla yang dikendarai di jalan.Toyota Corolla. Sumber (kiri): Motortrend, Sumber (kanan): Car And Driver

Anda ingin menguji version Anda di alam liar. Katakanlah Anda menemukan gambar berikut.

Gambar Toyota Corolla sedang dikendarai di jalan.Toyota Corolla. Sumber: edmunds

Perhatikan mobil menghadap ke arah yang berlawanan dibandingkan dengan gambar latihan Anda. Mengingat gambar seperti itu, model Anda mungkin gagal mengidentifikasi mobil tersebut adalah Toyota Corolla. Jika Anda memiliki put information pelatihan dengan gambar yang terlihat sangat mirip satu sama laindengan version Anda akan gagal mempelajari fitur yang relevan dan tidak akan dapat menggeneralisasi gambar yang dilihatnya di dunia nyata. Untuk menghindari masalah ini, kita dapat menerapkan teknik augmentasi information untuk mengurangi penyesuaian berlebih dan meningkatkan kemampuan generalisasi version.

Sangat penting untuk tidak terbawa oleh augmentasi information dan menerapkan transformasi yang berada di luar konteks dunia nyata.

Gambar terbalik dari Toyota Corolla yang dikendarai di jalan raya.Toyota Corolla (dibalik secara vertikal). Sumber: edmunds

Terapkan transformasi yang berada dalam konteks masalah yang Anda coba selesaikan.

Augmentasi info menggunakan ImageDataGenerator

Kami akan menggunakan Establish Data Mobil Stanford untuk tutorial ini. Anda dapat mengikuti kodenya melalui Google Colab.

Datasetnya besar. Untuk tutorial ini, kami akan memberikan contoh beberapa gambar untuk memahami augmentasi data.

Plot 10 gambar mobil.  Setiap mobil memiliki merek dan model yang berbeda.Gambar sampel. Sumber: Gambar oleh penulis

Selanjutnya, kami akan menentukan parameter generator gambar.

DATA_AUG_BATCH_SIZE = two ukuran tumpukan untuk augmentasi information
img_size = (224, 224) Number memasukkan ukuran gambar ke version # Jumlah langkah untuk melakukan augmentasi information
n_steps_data_aug = np.ceil (df_sample. Contour [0]/ / DATA_AUG_BATCH_SIZE).astype(int) Kami mendefinisikan ukuran batch untuk generator gambar. Ini serupa dengan kumpulan dalam pelatihan version. Img_size adalah ukuran gambar yang dibutuhkan oleh version. Jika Anda menggunakan version pembelajaran move tertentu memiliki spesifikasi sendiri untuk ukuran enter gambar ke version. N_steps_data_aug dapat dianalogikan dengan masa dalam pelatihan version. Dalam tutorial ini, kami menghasilkan gambar baru yang sesuai dengan setiap gambar sampel. Iterasi generator kali n_steps_data_aug menghasilkan jumlah gambar yang diperlukan. Number Generator information gambar. Transformasi untuk diterapkan
datagen = ImageDataGenerator (skala ulang = 1. ) / / / 255,
rotasi_range = 40, respectively
width_shift_range = 0,2, respectively
height_shift_range = 0,2, respectively
zoom_range = 0,2, respectively
horizontal_flip = Benar, respectively
brightness_range =[0.4, 1.0],
fill_mode =’terdekat’) skala ulang mengalikan setiap nilai piksel dengan faktor skala ulang. Ini membantu dengan konvergensi yang lebih cepat. rotation_range memutar gambar secara acak dengan sudut rotasi maksimum, 40. Width_shift menggeser gambar dengan bagian dari complete lebar gambar, jika float disediakan. Height_shift menggeser gambar dengan bagian dari complete tinggi gambar, jika float disediakan. zoom_range memperbesar gambar. Nomor acak dipilih dalam rentang tersebut, [1-zoom_range, 1+zoom_range]. horizontal_flip membalik gambar secara acak, secara horizontal. brightness_range mengubah kecerahan gambar. Nomor acak dipilih dalam kisaran yang disediakan. fill_mode mengisi ruang kosong pada gambar menggunakan berbagai teknik yang dipilih oleh pengguna. Ruang kosong terjadi saat gambar digeser sepanjang lebar atau tingginya.

Jika Anda ingin mempelajari lebih lanjut tentang transformasi dan opsi lainnya, kunjungi TensorFlow Core v2.4.1 – ImageDataGenerator.

Ada beberapa cara untuk meneruskan gambar ke pembuat data.

Stream: Anda melewatkan information gambar dan melabeli information sebagai array. flow_from_dataframe: Anda meneruskan dataframe dan jalur ke direktori yang berisi gambar. Dataframe memiliki dua kolom, satu kolom berisi jalur document relatif terhadap jalur direktori, dan kolom kedua berisi tag. flow_from_directory: Anda melewati jalur direktori yang berisi gambar yang dikategorikan berdasarkan subdirektori. Setiap subdirektori terkait dengan tag – contoh struktur jalur record, imgs / puppies / img01.png, imgs / cats / img01.png. Ada dua kelas, anjing dan kucing.

Kami akan menggunakan flow_from_dataframe untuk memberi makan gambar ke generator information. Di bawah ini Anda dapat melihat bagaimana dataframe disusun. Di laptop Google Colab, Anda dapat melihat kode untuk melihat bagaimana saya membuat dataframe ini.

Gambar berisi beberapa data yang direpresentasikan dalam format tabel.Dataframe dengan nama document gambar dan tag yang sesuai. Sumber: Gambar oleh penulis Number Mengumpankan gambar ke generator info
aug_gen = datagen.flow_from_dataframe (dataframe = df_sample, directory = img_path, save_to_dir = aug_img_path, save_prefix =’aug’, save_format =’jpeg’, x_col =”fname”, y_col =”course”, batch_size = DATA_AUG_BATCH_ED shuffle = False, class_mode =”kategorikal”, target_size = img_size) Keluaran:
Ditemukan 10 nama document gambar yang divalidasi milik 10 kelas.

Kode di atas memasukkan gambar ke generator information. df_sample adalah dataframe yang saya tunjukkan di atas. Jika Anda ingin menyimpan gambar ke direktori, berikan jalur ke save_to_dir. ImageDataGenerator menyimpan gambar yang dihasilkan dengan nama file yang ditentukan oleh pola: prefix_idx_randn

Prefix: prefix disediakan oleh consumer idx: idx indeks titik information di dataframe diumpankan ke generator randn: nomor acak Number Nama file yang dihasilkan
[‘aug_1_5664789.jpeg’, ‘aug_7_631054.jpeg’, ‘aug_5_6028627.jpeg’, ‘aug_4_8351445.jpeg’, ‘aug_0_9784633.jpeg’, ‘aug_6_5123896.jpeg’, ‘aug_2_3921660.jpeg’, ‘aug_3_7757856.jpeg’, ‘aug_8_8252162.jpeg’, ‘aug_9_5698539.jpeg’]

Hasilkan gambar baru.

Number Jalankan generator info
untuk saya dalam jangkauan (n_steps_data_aug):
next (aug_gen) Number Jumlah gambar yang diperbesar yang dibuat
aug_file_nm = os.listdir (aug_img_path)
number_files = len (aug_file_nm)
print (“Jumlah gambar baru yang dihasilkan: {}”. Structure (number_files)) Output:
Jumlah gambar baru yang dihasilkan: 10

Kami menggunakan n_steps_data_aug untuk mengontrol berapa kali menjalankan generator information. Sebelumnya di artikel, saya menyebutkan bahwa kami ingin menghasilkan satu gambar baru untuk setiap gambar sampel.

Plot 10 gambar mobil.  Setiap mobil memiliki merek dan model yang berbeda.Gambar asli. Sumber: Gambar oleh penulis
Plot 10 gambar mobil.  Setiap gambar mobil telah diubah, seperti, dibalik dan diputar.Gambar yang diubah. Sumber: Gambar oleh penulis

Beberapa gambar mungkin tidak menyerupai information dunia nyata, jadi berhati-hatilah saat menerapkan transformasi ke gambar.

Terakhir, jika Anda ingin mengaitkan kelas yang sesuai dengan gambar yang dihasilkan, Anda dapat membagi nama file yang dihasilkan, mengekstrak indeks dan menentukan labelnya. Kode untuk menentukan tag yang sesuai tersedia di laptop Google Colab.

Dua gambar mobil yang sama.  Gambar di sebelah kiri adalah asli dan gambar di sebelah kanan telah diubah.  Gambar telah dibalik secara horizontal, diputar dan diperbesar.Menggunakan indeks Anda dapat menentukan tag yang terkait dengan gambar yang dihasilkan. Sumber: Gambar oleh penulis

Saya harap artikel ini bermanfaat dan memberi Anda pemahaman tingkat tinggi tentang ImageDataGenerator Tensorflow. Jika Anda ingin mendalami augmentasi information lebih dalam, berikut adalah beberapa sumber:

Referensi

[1] Shorten, C., Khoshgoftaar, TM Sebuah survei tentang Augmentasi Data Gambar untuk Pembelajaran Mendalam. J Big Data 6, 60 (2019). Https://doi.org/10.1186/s40537-019-0197-0

[2] TensorFlow Core v2.4.1 – ImageDataGenerator

Pengantar Augmentasi Data untuk Gambar, Menggunakan ImageDataGenerator Tensorflow awalnya diterbitkan di Limit AI on Moderate, di mana orang-orang melanjutkan percakapan dengan menyorot dan menanggapi cerita ini.

Diterbitkan melalui Towards AI

Leave a Reply