Studi Kasus Penerapan Deep Learning R Mask CNN
Terdapat beberapa perkembangan yang mencolok dalam ekosistem teknologi visi komputer, namun segmentasi gambar menjadi salah satu yang menonjol. Segmentasi gambar memiliki beragam aplikasi. Hari ini, segmentasi gambar menjadi topik utama yang harus dipahami oleh siapa pun yang bekerja pada proyek computer vision. Artikel hari ini akan menggali lebih dalam mengenai segmentasi gambar, menjelaskan dua jenis segmentasi, dan membandingkan serta mengontraskan perbedaan mungkin antara segmentasi instan dan semantik.
Memisahkan objek yang saling berdempetan merupakan tantangan yang cukup sulit bagi robot. Secara umum algoritma konvensional seperti watershed hanya mampu memisahkan objek dengan beragam pengaturan, hal ini tentu menjadi kendala sehingga tidak begitu fleksibel.
Algoritma Watershed memiliki berbagai penerapan, seperti dalam analisis medis untuk segmentasi organ dalam scanning gambar, atau dalam analisis citra satelit untuk memisahkan berbagai jenis permukaan tanah. Meskipun algoritma ini kuat dalam mengatasi segmentasi dengan batas yang kompleks, ia juga bisa rumit dan membutuhkan pemahaman yang baik tentang konsepnya serta penyesuaian parameter yang tepat untuk mendapatkan hasil yang akurat.
Pada banyak kasus seperti memisahkan objek antara foreground dan background dapat dilakukan menggunakan algoritma otsu ataupun deep learning via Unet Model, namun ada Unet Model tidak akan mampu melakukan instance segmentation. Kalian bisa membaca postingan di blog ini untuk penerapan UNet. Biar kalian tidak bingung, saya akan jelaskan sedikit mengenai semantic dan instance, seperti pada gambar berikut ini
Sangat terlihat jelas untuk semantic hanya akan mengelompokan objek yang mirip sedangkan untuk instance akan memisahkan objek tersebut walaupun saling berhimpitan.
Studi Kasus Penerapan Deep Learning R Mask CNN
Instance segmentation merupakan pengembangan dari semantic segmentation, yaitu menganggap objek yang tumpang tindih dengan kelas yang sama sebagai instance yang berbeda. Perhatikan objek berikut
Bila kita lakukan proses segmentasi seperti biasa maka hanya menghasilkan objek sebanyak 1 saja yaitu
Bahkan kalaupun menggunakan deep learning Unet maka objek yang akan dikenali hanya terdiri dari 1 objek saja karena ada saling dempet pada objek tersebut, namun ketika memisahkan lebih lanjut menggunakan algoritma deep learning R Mask CNN akan terdapat 4 objek. Berikut adalah hasil penerapan instance segmentation pada objek yang saling himpit. Setelah melalui proses pelatihan yang cukup lama dengan grafik loss berikut ini
Hasil yang didapatkan cukup memuaskan sekali dengan objek yang berhasil dikenali yaitu 4 objek
Penerapan Deep Learning R Mask CNN bisa kalian gunakan framework Pytorch dengan model yang sudah dilatih di
model = torchvision.models.detection.maskrcnn_resnet50_fpn(pretrained=True) # load an instance segmentation model pre-trained pre-trained on COCO
Kendala yang saya hadapi untuk kasus diatas sebenarnya bukan dari background (karena sudah dibuat konstan yaitu menggunakan warna hitam) akan tetapi lebih pada objek yang mampu tahan terhadap rotasi sehingga pada proses pembuatan dataset saya sengaja menggunakan augmentation rotation dengan variasi sebagai berikut degres = np.array([0,15,30,45,60,75,90])
Source Code
Hemm untuk coding sebenarnya kalian bisa pelajari di https://haochen23.github.io/2020/06/fine-tune-mask-rcnn-pytorch.html. Saya banyak mengubah kode2 yang website tersebut untuk menyiasati kendala pada RAM, jadi walaupun laptop saya hanya mempunyai 12 GB RAM mampu melakukan komputasi ratusan gambar serta melakukan penerapan check point setiap 5 kali iterasi sehingga bila tidak selesai dalam beberapa hari/jam bisa kita lanjutkan dikemudian hari.
Penerapan R Mask CNN untuk Instance Segmentation telah dilakukan dengan hasil yang baik serta dapat digunakan untuk kebutuhan robotika untuk membantu analisis lebih lanjut mengenai objek tersebut.
Spek Komputer
Deep Learning sesuai dengan namanya membutuhkan daya komputasi yang tidak sedikit dan idealnya sih menggunakan GPU dengan Cuda Support yang saat ini paling tidak seharga 20 jutaan akan tetapi kita siasati dengan menggunakan
- Mencoba Google Colab Pro atau
- teknik batch dataset yang lebih sedikit, dan
- menerapkan checkpoint setiap beberapa kali iterasi
Sehingga walaupun dengan hanya modal laptop dengan spek tidak terlalu tinggi, kita masih bisa melakukan komputasi. Happy coding…
ref:
https://blog.roboflow.com/difference-semantic-segmentation-instance-segmentation/