Augmentasi Data Pada Computer Vision

Adhi Setiawan
Data Folks Indonesia
6 min readAug 27, 2021
Gambar Kucing Tidur
Sumber: Pixabay

Halo ini adalah tulisan pertama saya di medium, pada tulisan ini saya akan membahas sedikit mengenai augmentasi data pada computer vision. Tentunya augmentasi data ini dilakukan pada suatu citra. Sebelum melangkah lebih jauh, saya sudah mengilustrasikan sebuah gambar kucing diatas. Dari gambar diatas, kita sebagai manusia pasti akan dengan sangat mudah menebak bahwa gambar tersebut adalah gambar seekor kucing karena otak kita bisa dengan mudah belajar dan melakukan pengenalan terhadap suatu objek dengan sangat akurat. Namun, bagaimana dengan mesin atau komputer? Mesin/komputer belajar dan melakukan pengenalan terhadap objek dengan cara mengamati sebuah pola. Hal ini menimbulkan suatu masalah apabila mesin belajar dari data citra dengan posisi kucing duduk seperti dibawah ini. Kemudian ada citra lain dengan posisi kucing sedang tidur, maka mesin akan kesulitan untuk mengenalinya karena pola dari objek pada citra tersebut sudah berbeda posisinya. Untuk mengatasi masalah tersebut, pada computer vision ada sebuah teknik yang dinamakan augmentasi data.

Gambar kucing abu-abu sedang duduk
Sumber: Threatened Species Recovery Hub

Augmentasi data merupakan proses memodifikasi atau memanipulasi suatu citra, sehingga citra asli dalam bentuk standar akan diubah bentuk dan posisinya. Contoh penggunaan augmentasi data dapat dilihat pada gambar dibawah ini. Augmentasi data bertujuan agar mesin dapat belajar dan mengenali dari berbagai citra yang berbeda-beda sekaligus bisa dimanfaatkan untuk memperbanyak data. Pada kebanyakan kasus, penggunaan augmentasi data berhasil meningkatkan performa dari model. Peningkatan tersebut terjadi karena mesin berhasil mengenali lebih banyak objek dari bentuk dan pola yang beragam jenisnya. Dapat dilihat juga pada gambar dibawah ini, satu citra saja bisa menghasilkan banyak citra baru dengan posisi yang beragam.

Contoh citra kucing yang telah dilakukan augmentasi data
Contoh augmentasi data

Augmentasi data ini penting untuk dilakukan dengan mempertimbangkan banyak keuntungan yang bisa didapatkan seperti yang sudah dijelaskan sebelumnya. Lebih lanjut pada deep learning, augmentasi data juga akan sangat membantu mengatasi masalah umum pada deep learning yaitu data hungry (membutuhkan banyak data) karena setiap data akan mendapatkan data baru dari augmentasi yang dilakukan. Data baru tersebut bisa didapatkan lebih banyak lagi apabila kita mengkombinasikan beberapa jenis augmentasi data. Sehingga, satu citra bisa terdapat banyak sekali jenis augmentasinya. Ada beberapa jenis augmentasi data yang cukup populer dan sering kali digunakan yang akan dibahas di bawah ini. Augmentasi data yang saya lakukan menggunakan salah satu framework deep learning yaitu Pytorch.

Flip

Flip merupakan salah satu jenis augmentasi data yang berfungsi untuk membalik posisi suatu citra secara vertical ataupun horizontal. Namun perlu diketahui juga, tidak semua citra “boleh” dilakukan flip. Flip yang tidak sesuai akan membuat suatu citra menjadi tidak masuk akal. Contohnya citra gedung, suatu gedung akan menjadi tidak masuk akal jika dilakukan vertical flip karena posisinya akan berubah menjadi diatas. Hal tersebut yang perlu dicegah karena akan membuat model kebingungan menemukan pola nya. Untuk contoh kasus citra gedung tersebut bisa dilakukan flip secara horizontal saja. Namun, ada beberapa citra lain yang “bisa” dilakukan flip vertical seperti bunga. Dibawah ini juga saya cantumkan kode yang digunakan untuk melakukan vertical dan horizontal flip menggunakan PyTorch

Citra bunga yang sudah dilakukan augmentasi data yaitu vertical flip
Contoh citra yang boleh dilakukan vertical flip dan horizontal flip
citra gedung yang sudah dilakukan augmentasi data yaitu vertical flip
Contoh citra yang tidak boleh dilakukan vertical flip
Tampilan citra bunga setelah dilakukan vertical dan horizontal flip
Hasil beberapa citra setelah dilakukan vertical dan horizontal flip

Random Crop

Augmentasi data jenis ini pada prosesnya akan melakukan crop (pemotongan) terhadap citra. Crop dilakukan secara random, namun kita diberikan parameter size yang harus kita tentukan untuk melakukan crop. Sebagai contoh pada kasus dibawah ini saya menggunakan crop size 256 agar tidak terlalu zoom in cropnya. Penggunaan nilai parameter size yang terlalu kecil akan membuat citra terlalu zoom in dan menjadi tidak valid. Sangat disarankan untuk tidak menggunakan nilai crop size yang terlalu kecil dan disesuaikan lagi dengan citra yang digunakan.

Hasil kode augmentasi data citra kucing yang telah dilakukan random crop
Hasil penggunaan center crop

Berikut juga ada contoh penggunaan nilai size yang terlalu kecil. Jika terlalu kecil maka akan membuat gambar menjadi tidak valid.

Gambar citra kucing yang tidak valid karena nilai size yang terlalu kecil
Contoh hasil augmentasi yang tidak valid karena gambar terlalu zoom in

Random Rotation

Random rotation, seperti namanya akan melakukan rotasi sebuah citra. Rotasi yang dilakukan beragam, namun kita diberikan nilai derajat (degrees) yang bisa kita tentukan. Sebagai contoh pada gambar dibawah saya memberikan nilai 20 derajat. Agar rotasi rotasi maksimal yang dilakukan hanyalah sebesar 20 derajat.

Hasil kode augmentasi data citra kucing yang telah dilakukan random rotation
Hasil penggunaan random rotation

Random Resize Crop

Jika pada jenis augmentasi sebelumnya hanya dilakukan crop, pada random resize crop akan dilakukan perubahan ukuran (resize) terlebih dahulu sebelum citra tersebut di potong (crop). Parameter yang digunakan pun sama dengan crop yaitu nilai size yang bisa kita tentukan sendiri. Namun, kita tetap harus memperhatikan agar tidak memberikan nilai yang terlalu besar atau terlalu kecil.

Hasil kode augmentasi data citra kucing yang telah dilakukan random resize crop
Hasil penggunaan random resize crop

Center Crop

Center crop akan menghasilkan sebuah citra yang terpotong persis di bagian tengah. Terhadap parameter size yang kita juga diberikan kebebasan dalam menentukan nilainya. Nilai yang terlalu kecil akan membuat citra memotong tepat ke tengah dan apabila terlalu besar akan membuat citra tidak terpotong tepat di tengah dan malah akan menjadi kecil. Bisa dicoba langsung saja ya untuk melihat perbedaannya :)

Hasil kode augmentasi data citra kucing yang telah dilakukan center crop
Hasil penggunaan center crop

Random Affine

Random affine disini akan membuat sebuah citra sedikit bergeser posisinya. Pada random affine terdapat beberapa parameter yang disediakan. Degrees digunakan untuk membuat posisi citra berotasi. Parameter ini mirip dengan random rotation. Kemudian ada juga parameter translate dan shear yang akan dijelaskan di bawah ini.

Translate

Parameter translate akan membuat citra bergeser posisinya seperti gambar dibawah. Nilai parameter translate ini ada dua, yaitu nilai minimal dan maksimal yang bisa diisikan di antara rentang 0 sampai 1. Sebagai contoh disini saya menggunakan nilai rentang minimal yaitu 0.3 dan maksimal 0.3. Artinya saya ingin agar pergeseran hanya sebesar 0.3 saja. Sebaiknya menggunakan parameter nilai maksimal yang tidak sampai satu karena hal tersebut akan membuat citra menjadi bergeser terlalu jauh seperti gambar kedua dibawah ini.

Hasil kode augmentasi data citra kucing yang telah dilakukan random affine translate
Hasil penggunaan random affine (translate)
Hasil augmentasi data yang salah pada citra kucing yang telah dilakukan random affine.
Hasil penggunaan random affine apabila memberikan nilai maksimal 1. (citra menjadi ada yang tidak valid)

Shear

Shear akan memiringkan posisi citra seperti dibawah ini. Nilai yang digunakan sebaiknya tidak terlalu besar juga karena akan membuat citra menjadi gepeng (mungkin bisa dicoba sendiri ya apabila nilainya terlalu besar). Sebenarnya kedua parameter pada random affine ini bisa digunakan secara bersamaan yaitu shear dan translate, namun saya memberikan contoh terpisah disini agar bisa terlihat jelas perbedaannya.

Hasil kode augmentasi data citra kucing yang telah dilakukan random affine translate
Hasil penggunaan random affine (shear)

Color Jitter

Sesuai dengan namanya, color jitter akan memanipulasi warna pada citra. Ada dua parameter yang bisa digunakan disini, yaitu brightness untuk merubah kecerahan citra dan contrast untuk merubah kontras pada citra tersebut. Kedua parameter ini juga bisa digunakan secara bersamaan dan dipisah.

Brightness

Hasil kode augmentasi data citra kucing yang telah dilakukan color jitter brightness
Hasil penggunaan color jitter (brightness)

Contrast

Hasil kode augmentasi data citra kucing yang telah dilakukan color jitter contrast
Hasil penggunaan color jitter (contrast)

Kesimpulan

Augmentasi data adalah salah satu teknik yang penting untuk dilakukan pada computer vision. Manfaat yang didapatkan juga sangat terasa, karena akan membuat mesin mampu mengenali dari berbagai citra yang berbeda sekaligus juga bisa menambah data secara tidak langsung. Tentunya masih banyak jenis augmentasi data selain yang disebutkan pada tulisan ini. Untuk lebih jelasnya bisa langsung mencoba untuk eksplorasi lebih lanjut. Semoga bermanfaat.

--

--