Implementation of Semantic Segmentation for On-Farm Honeydew Detection

Mfatchur Rahman
Nodeflux
Published in
5 min readMay 9, 2018

Background

Melon merupakan komoditas pertanian potensial. Melon dengan varietas tertentu seperti apollo, golden atau bright meta berpotensi menghasilkan pendapatan Rp.100–150jt per hektar hanya dalam dua bulan masa tanam.

Namun sayangnya, budidaya melon tergolong beresiko karena melon sangat rentan terhadap serangan penyakit. Inveksi yang awalnya hanya pada sejumlah tanaman, berpotensi untuk kemudian menyebar keseluruh populasi. Dalam prakteknya, tidak mungkin petani atau pakar sekalipun mengamati gejala penyakit pada tanaman satu persatu. Oleh karena itu, dibutuhkan bantuan mesin untuk melakukan deteksi dini serangan penyakit, yang juga dikenal dengan istilah smart farming.

Dengan teknologi saat ini, monitoring setiap tanaman menjadi mungkin untuk dilakukan. Sebelum membahas keseluruhan sistem deteksi gejala penyakit pada melon, salah satu kemampuan yang diperlukan adalah segmentasi bagian-bagian melon (untuk kemudian dianalisa gejala penyakitnya). Tulisan ini akan menjelaskan proses segmentasi melon secara on-farm dengan menggunakan neural network secara lebih mendalam.

About The Dataset

Contoh pasangan input dan mask-nya

Untuk mencapai tujuan tersebut, dibutuhkan dataset pelatihan. Data yang akan digunakan berupa gambar-gambar yang diambil dari berbagai video dengan sudut pengambilan gambar dan pencahayaan yang beragam. Varietas melon pada kumpulan gambar yang digunakan sebagai dataset juga beragam, mulai dari rock melon hingga golden meta.

Tiap gambar dalam dataset mempunyai mask image sebagai pasangan. Mask image merupakan gambar biner dimana objek bukan melon direpresentasikan dengan piksel nol. Dalam penelitian ini, dataset terdiri dari 300 pasang gambar.

Network Design

Langkah selanjutnya adalah mendesain neural network yang akan digunakan. Dalam proyek ini, kita akan memodifikasi auto-encoder. Secara teoritik, auto-encoder terdiri dari encoder dan decoder.

Encoder Architecture

Encoder bertujuan untuk meringkas fitur gambar. Encoder dirancang dengan cara mereduksi width dan height gambar secara perlahan, sebaliknya depth atau fitur gambar diperbanyak. Dalam kaitannya dengan melon, objek-objek tak penting seperti pepohonan, gulma, langit otomatis akan ter-suppress, sebaliknya objek target atau buah melon akan ditonjolkan.

Decoder Architecture

Decoder bekerja dengan cara merekonstruksi ulang fitur yang sudah diringkas oleh encoder menjadi gambar target. Arsitektur dari sebuah decoder akan sangat menentukan performa dan kualitas output yang dihasilkan. Secara umum decoder bekerja dengan cara menambah ukuran spatial (width dan height) dari input secara bertahap melalui operasi konvolusi balik atau deconvolution. Pada umumnya, operasi deconvolution menggunakan nilai stride 2. Hal ini agar arsitektur yang dihasilkan lebih efisien dan tidak “membengkak” seperti hal nya dengan stride tunggal.

Meski begitu, operasi deconvolution dengan strides lebih dari satu menghasilkan garis-garis tipis seperti grid pada gambar output. Untuk mengatasi itu, dapat digunakan teknik deconvolution dengan berbagai ukuran filter. Output dari setiap deconvolution ini kemudian digabungkan menjadi 1. Dengan begitu, grid-grid halus pada gambar output dapat semakin menghilang karena tertutup oleh hasil deconvolution lainnya.

Residual Block

Komponen terakhir dari arsitektur yang kita gunakan adalah residual block. Output dari decoder akan diproses oleh residual block untuk menghasilkan mask output. Residual block terdiri dari beberapa convolutional block. Tiap convolutional block menghasilkan residual image. Gambar output merupakan kombinasi dari residual-residual tersebut.

Loss Formulation

Dari arsitektur yang kita gunakan, dihasilkan satu output dan dua residual layer (warna abu-abu). Formulasi loss function dari kombinasi tersebut:

first loss = MSE(mask, first residual)
second loss = MSE(mask, second residual)
output loss =
MSE(mask, output layer)
total loss = a * first loss + b * second loss + c * output loss

Pada umumnya, nilai a,b, dan c adalah 0.01, 0.1, dan 1.

Preprocessing Input Images

Sebelum digunakan sebagai training input, nilai piksel dari gambar-gambar input yang sebelumnya bernilai antara 0–255, dikonversi menjadi nilai desimal antara 0–1. Cara ini dapat mengasilkan loss yang jauh lebih kecil pada epoch-epoch awal, sehingga proses training lebih cepat konvergen.

Training Parameters

Untuk proses training, digunakan adam optimizer dengan learning rate 0.0001. Learning rate adalah laju pembelajaran. Semakin besar learning rate , semakin cepat konvergensi tercapai. Hanya saja, learning rate yang terlalu besar mempersulit tercapainya titik optimum, jika daerah optimum tersebut terlalu curam. Selain itu, learning rate besar juga memberikan grafik loss yang amplitudonya besar.

Sebaliknya, learning rate yang relatif kecil membuat pembelajaran relatif lebih lama, namun memungkin tercapainya titik optimum yang relatif curam dan grafik loss yang cenderung lebih halus.

Result

Gambar Input (sumber: http://denihermawan.hol.es/pertanian/budidaya-buah-melon/)
Pre-sigmoid Feature (Left) Network Output (right)

Gambar disebelah kiri menunjukkan hasil dari layer terakhir sebelum layer output. Gambar tersebut menampilkan nilai sebaran pikselnya, dimana region berwarna biru adalah mask objek, sisanya adalah mask untuk background.
Gambar disebelah kanan merupakan output dari network yang kita gunakan. Output network merupakan aktivasi dari gambar sebelumnya. Dalam penelitian ini, aktivasi yang digunakan adalah fungsi sigmoid (atau umum dikenal dengan istilah logit layer).

Modifikasi terhadap mask output dapat dilakukan untuk menghasilkan hasil berbeda. Mask tersebut dapat digabungkan dengan gambar input (yang telah modifikasi), menghasilkan hasil sebagai berikut:

Mask + Input Image (sumber: http://denihermawan.hol.es/pertanian/budidaya-buah-melon/)
Output 2 (sumber: http://obatpertaniansinaragro.blogspot.co.id/2015/06/kunjungan-ke-lahan-petani-melon.html)
Output 3 (sumber: https://lmgaagro.wordpress.com/2016/09/15/meraup-untung-dengan-budidaya-melon/)

Untuk varietas golden meta (kuning),

Output melon golden meta

References
1.
Rethinking the Inception Architecture for Computer Vision, https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Szegedy_Rethinking_the_Inception_CVPR_2016_paper.pdf
2. Resnet in resnet: generalizing residual architectures, https://arxiv.org/pdf/1603.08029.pdf%EF%BC%89
3. DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs. https://arxiv.org/pdf/1606.00915.pdf
4. U-Net: Convolutional Networks for Biomedical Image Segmentation. https://arxiv.org/pdf/1505.04597.pdf)%e5%92%8c%5bTiramisu%5d(https://arxiv.org/abs/1611.09326.pdf

--

--