Joshua Alexander Heriyanto, Sarah Hasna Azzahra

1. Pengenalan Image Segmentation

1.1 Overview

Image Segmentation adalah teknik untuk membagi sebuah gambar menjadi beberapa bagian unik dan memilih object of interest, yang merupakan tahapan penting dalam pemrosesan gambar untuk melakukan analisis gambar.

Metode image segmentation saat ini dapat diklasifikasikan menjadi beberapa kategori: segmentasi berbasis threshold, segmentasi berbasis wilayah, segmentasi berbasis tepi, dan segmentasi berbasis teori spesifik.

Dari sudut pandang matematis, image segmentation adalah proses membagi gambar digital ke daerah yang tidak berpotongan.

Proses image segmentation juga merupakan proses menandai. Pixel-pixel dalam satu daerah yang sama akan diberi nomor yang sama.

1.2 Instance Splitting

https://bbs-img.huaweicloud.com/blogs/img/image2(209).png
  1. Classification + Localization: mendeteksi lokasi dan kategori dari objek. Tidak membedakan objek dengan tipe sama.
  2. Object detection: Objek pada gambar dideteksi dan dikategorikan.
  3. Semantic segmentation: Segmentasi tingkat piksel pada gambar. Tidak membedakan objek dari tipe yang sama.
  4. Instance segmentation: Segmentasi tingkat piksel pada gambar. Membedakan objek yang berbeda.

1.3 Skenario Aplikasi dari Instance Splitting

https://bbs-img.huaweicloud.com/blogs/img/image3(205).png

Instance segmentation adalah kombinasi dari object detection dan semantic segmentation. Object detection dilakukan pada gambar, kemudian setiap piksel diberi label (semantic segmentation). Umum digunakan dalam autopilot, pencitraan medis, pengenalan GIS presisi tinggi, dan pemodelan 3D.

1.4 Proses Mask RCNN

https://bbs-img.huaweicloud.com/blogs/img/image4(193).png

Mask R-CNN menggabungkan Object Detection dan Semantic Segmentation. Cara kerjanya kurang lebih sebagai berikut.

Pertama, jaringan saraf memiliki beberapa cabang output. Mask R-CNN menggunakan framework mirip dengan Faster R-CNN. Output Faster R-CNN yaitu bounding box dan kategori objek, sementara Mask R-CNN memiliki cabang tambahan untuk memprediksi peta semantic segmentation dari objek. Intinya, jaringan saraf akan mempelajari dua tugas pada saat bersamaan.

Kedua, Binary Mask digunakan dalam semantic segmentation. Mulanya prediksi semantic segmentation perlu menggunakan nomor seperti 0, 1, 2, 3, 4 untuk mewakili setiap kategori. Dalam Mask R-CNN, cabang deteksi akan memprediksikan kategorinya. Dalam hal ini, anda hanya perlu memprediksi bentuk objek dengan 0, 1.

Ketiga, Mask R-CNN mengusulkan RoiAlign untuk menggantikan RoiPooling pada Faster R-CNN. Maksud dari RoiPooling adalah untuk memetakan semua daerah pada gambar input ke dalam daerah pada neural network feature graph yang sesuai. RoiPooling menggunakan pendekatan dari integer untuk menemukan daerah yang sesuai, sehingga timbul ofset dari daerah aslinya. Ofset ini dapat ditoleransi pada tugas classification, namun memiliki manfaat besar pada segmentation dengan presisi yang lebih tinggi.

1.5 Konsep Kunci dari Model

Langkah utama dari algoritma Mask R-CNN adalah sebagai berikut:

Pertama, gambar input dimasukkan ke dalam feature extraction network untuk mendapatkan feature map.

Kemudian, sejumlah ROI (atau anchor) diatur untuk setiap posisi piksel pada feature graph, lalu daerah ROI dikirim ke RPN network untuk binary classification (foreground dan background) dan regresi koordinat, sehingga mendapatkan wilayah ROI yang baik.

Melakukan operasi ROIAlign untuk daerah ROI yang diperoleh pada langkah sebelumnya, yaitu, pertama petakan piksel gambar asli dan feature map, lalu petakan feature map dengan fitur yang tetap.

Terakhir, daerah ROI ini diklasifikasikan ke beberapa kategori, candidate-grame regression dan FCN diperkenalkan untuk membuat Mask, kemudian tugas segmentasi selesai.

1.6 Pengenalan Dataset COCO

https://bbs-img.huaweicloud.com/blogs/img/image5(172).png

Dataset COCO

http://cocodataset.org/#home

Dataset COCO (Common Objects in Context) adalah kumpulan dataset computer vision yang menantang dan berkualitas. Selain itu state-of-the-art neural network juga menggunakan nama ini sebagai format datasets yang digunakan.

Format data ini dapat secara otomatis dipahami oleh advanced neural network libraries, seperti Detectron2 milik Facebook, dan bahkan tools yang dibuat khusus untuk memproses data dalam format COCO, seperti COCO-annotator dan COCO api. Memahami representasi data dari dataset ini akan membantu Anda dalam menggunakan dan memodifikasi data yang sudah ada dan membuat set sendiri.

COCO adalah sebuah dataset large-scale object detection, segmentasi, dan deskripsi gambar.

COCO memiliki beberapa karakteristik:

Dataset Superpixel untuk Large-scale Object Detection, Segmentation, dan Deskripsi Gambar

Object segmentation, semantic recognition lebih dari 330.000 gambar, 80 kategori, dan 91 kategori objek. Setiap gambar menyediakan lima deskripsi, dan total 250.000 human key points yang telah ditandai.

Ringkasan:

Dalam studi ini, kita memahami konsep dan skenario aplikasi dari instance segmentation, struktur dan konsep kunci dari mask R-CNN, dan memperkenalkan dataset COCO.


2. Algoritma Mask R-CNN melengkapi instance segmentation

Hands-on Practice dengan menggunakan Huawei Cloud AI

Klik kanan untuk membuka tautan ini dalam tab baru https://nbviewer.jupyter.org. Buka halaman web baru, klik kanan untuk menyalin alamat dari practice cases, paste ke kotak pencarian halaman web baru, dan tekan Enter.

· Instance Split Mask R-CNN Practice Case:

https://github.com/huaweicloud/ModelArts-Lab/blob/master/notebook/DL_image_segmentation_mask/Mask%20R-CNN.ipynb

Model Instance segmentation-Mask R-CNN

Dalam Huawei CLOUD practice ini, kami akan melatih dan menguji model instance segmentation Mask R-CNN. Dalam bidang computer vision, instance segmentation mengacu pada tugas mengidentifikasi dan memberi level setiap objek dari gambar di tingkat piksel. Teknologi ini umum digunakan dalam autopilot, pencitraan medis, pengenalan GIS presisi tinggi, pemodelan 3D, dan sebagainya. Contoh ini memberikan pengenalan singkat model klasik dari Mask R-CNN untuk instance segmentation dan menggunakan Matterport Open Source Mask R-CNN Implementation yang menunjukkan bagaimana cara melatih model Mask R-CNN pada model di ModelArts HUAWEI CLOUD.

Buka ModelArts

Klik tautan berikut:

https://www.huaweicloud.com/product/modelarts.html

untuk mengakses laman ModelArts. Klik Enter Console dan masukkan nama pengguna dan sandi untuk log in ke halaman ModelArts.

Membuat ModelArts Notebook

Mari kita buat notebook development environment di ModelArts. ModelArts notebook menyediakan development environtment Python di halaman web. Anda dapat dengan mudah melakukan compile dan menjalankan kode serta melihat hasilnya.

Langkah 1: Pilih wilayah “Beijing 4” dan klik Development Environtment dan Create pada halaman utama ModelArts.

Langkah 2: Atur parameter yang diperlukan notebook.

Suggest Input
Namemask-rcnn
Work EnvironmentMulti-Engine 1.0 (Python3, Recommended)
Resource PoolPublic resource pools
TypeGPU
Instance FlavorGPU: 1*NVIDIA-P100(16GB) | CPU: 8 Cores 64 GB
StorageEVS
Disk Space5 GB

Langkah 3: Setelah mengkonfigurasi parameter notebook, klik Next untuk melihat informasi notebook. Klik Create Now.

Langkah 4: Setelah selesai dibuat, kembali ke halaman utama development environtment. Lalu, buka notebook dan lanjutkan ke langkah berikutnya.

Membuat Development Environtment di ModelArts

Selanjutnya, kita akan membuat development environtment yang sebenarnya untuk langkah berikutnya.

Langkah 1: Klik tombol Open yang ditampilkan pada gambar berikut untuk mengakses Notebook yang baru saja dibuat.

Langkah 2: Buat Notebook Python3. Klik “New” di sudut kanan atas dan pilih Tensorflow-1.13.1

Langkah 3: Klik pada file name \”Untitled\” di sebelah kiri atas dan masukkan nama yang sesuai.

Menulis dan mengeksekusi kode dalam Notebook

Dalam Notebook, masukkan pernyataan print sederhana dan klik tombol Run untuk melihat hasil eksekusi.

Sekarang development environment sudah siap, Anda bisa melanjutkan menulis kodenya!

Install dan reference packages

Jika menggunakan kernel tf-1.8, uncomment dua baris berikut dari kode dan eksekusi.

Jika menggunakan kernel tf-1.13, dua baris berikut dari kode tidak perlu dieksekusi.

Tulisan pada sudut kanan atas skrip menunjukkan apakah kernel menggunakan tf-1.8 atau tf-1.13. Untuk menukar kernel, pilih Kernel > Change kernel.

Download kode dan data yang dibutuhkan


Mask R-CNN training

Langkah 1: Import library Python yang sesuai dan siapkan pre-training modelnya.

Langkah 2: Tuliskan konfigurasi-konfigurasi terkait.

Definisikan subclass MyTrainConfig dari class Config dan spesifikasikan parameter terkait. Parameter utamnya sebagai berikut:

  1. NAMA: nama Config yang unik
  2. NUM_CLASS: jumlah kategori. COCO memiliki total 80 objek dan background.
  3. IMAGE_MIN_DIM dan IMAGE_MAX_DIM: ukuran maksimal dan minimum gambar. Kita akan menggunakan gambar dengan ukuran tetap 128 x 128. Oleh karena itu, keduanya diatur menjadi 128.
  4. Train_ ROIS_PER_IMAGE: jumlah training RoIs pada setiap gambar.
  5. STEPS_PER_EPOCH dan VALIDATION_STEPS: Selama training dan verifikasi, jumlah steps dalam setiap ronde dikurangi. Mengurangi jumlah steps dapat mempercepat training tetapi juga mengurangi tingkat presisi deteksi.

Langkah 3: Siapkan dataset.

Kami menggunakan CocoDataset untuk menghasilkan set training dan validation.

Membuat Model

Langkah 1: Buat objek model dalam mode “training” untuk menyesuaikan shape dengan dataset.

Langkah 2: Load weight dari model pre-trained.

Selanjutnya, kita latih modelnya menggunakan pre-trained model dikombinasikan dengan shape dataset.

Training model

Keras model dapat dibuat berdasarkan layer yang ditentukan. Dalam metode training model, parameter layer dapat digunakan untuk menentukan layer tertentu untuk pelatihan. Nilai preset dari layer parameter:

  1. heads: Hanya classification, mask, dan bbox regression dalam head network yang dilatih.
  2. all: semua layer
  3. 3 +: Training ResNet Tahap 3 dan tahap selanjutnya
  4. 4 +: Training ResNet Tahap 4 dan tahap selanjutnya
  5. 5 +: Training ResNet Tahap 5 dan tahap selanjutnya

Sebagai tambahan, layer parameter juga mendukung regular expression yang dapat memilih layer berdasarkan nama. Anda dapat memanggil model.keras_model.summary() untuk melihat nama layer, dan kemudian menentukan layer mana yang akan di-training sesuai yang diperlukan.

Gunakan Mask R-CNN untuk mendeteksi objek pada gambar.

Langkah 1: Buat InferenceConfig, kemudian buat inference model object lalu load weight information yang kita buat sebelumnya.

Langkah 2: Pilih gambar dari validation dataset untuk melakukan prediksi dan tampilkan hasilnya.

Langkah 3: Anda juga dapat meng-upload gambar Anda sendiri untuk diprediksi.

Mode upload gambar: Klik Upload pada halaman web untuk meng-upload gambar. Gambar tersebut akan disimpan dalam direktori test_path dengan nama test.jpg.

Evaluasi model

Pada tahap ini, kita melakukan evaluasi sederhana dari model yang telah kita training dengan nilai mAP (mean Average Precision).


Ringkasan:

Image segmentation, seperti namanya, adalah proses membagi gambar ke dalam beberapa bagian (segment). Dalam proses ini, setiap piksel dalam gambar dihubungkan dengan sebuah tipe objek. Ada dua jenis image segmentation: semantic segmentation dan instance segmentation.

Dalam semantic partitioning, semua objek dengan tipe yang sama akan diberi satu class sebagai label, dimana dalam instance partitioning, objek serupa memiliki tag mereka sendiri.

Dalam arsitektur Mask R-CNN, setiap piksel dibagi menjadi sebuah kelompok kategori menggunakan bounding boxes dan semantic segmentation, dan objek diklasifikasikan dan di-localized. Untuk setiap RoI (Region of Interest), diperoleh segmentation mask dan menghasilkan sebuah class + bounding box. Arsitektur ini adalah ekstensi dari Faster R-CNN. Faster R-CNN terdiri dari deep convolutional network dan detektor lokal.