Klasifikasi Gambar dengan SVM


Saya lagi baca tulisan Vegi Shanmukh tentang klasifikasi gambar dengan SVM. Jadi dia pake algoritma SVM (support vector machine) buat klasifikasi gambar. Di SVM data di plot dalam ruang n-dimensi. N adalah jumlah fitur. Nilai setiap fitur digambarkan dalam koordinat tertentu. Klasifikasi dilakukan dengan mencari hyperplane yang dapat memisahkan titik-titik data tadi menjadi dua kelas misalnya. Contohnya kayak gambar berikut:

dari blognya shanmukh

Disana terlihat dicari garis (hyperplane) yang dapat memisahkan titik2 merah dan titik2 hijau. Di SVM ada beberapa parameter berikut:
Gamma : menentukan seberapa jauh pengaruh dari sebuah training mencapai nilai-nilai yang menghasilkan hasil yang bias

C : Cost dari salah klasifikasi (missclassification)
nilai C kecil — membuat biaya misclassification rendah
nilai C besar— membuat biaya misclassification tinggi

Kernel : algoritma SVM menggunakan fungsi matematika sebagai kernel. Jenis kernel: Linear, RBF(Radial Basis Function), Polynomial Kernel. Contohnya ada di gambar diatas.

Dalam klasifikasi gambar, komputer melihat gambar sebagai array dari sekumpulan angka. Misalnya gambar dengan ukuran 200×200, maka oleh komputer akan diubah jadi array 200 X 200 X 3. 200 pertama adalah lebar, 200 kedua adalah tinggi, sementara 3 adalah chanel RGB. Nilai angka ini akan berkisar antara 0–255.

Di blognya dia pake library SKlearn namanya GridSearchCV. Dia ngasih contoh klasifikasi gambar dalam 3 kelas, mobil, eskrim, dan bola kriket. Kodenya bisa dilihat di blognya . Di codingannya semua gambar di ubah ukurannya, karena SVM hanya menerima gambar dengan ukuran yang sama.

Tahapan kodingan yang dia bikin:

  1. Bikin model SVM : -> svc=svm.SVC()
  2. Bikin model dengan GridSearchCV dan parameters grid: →model=GridSearchCV(svc,parameters_grid)
  3. Data dibagi 2: training dan testing. -> train_test_split() 
  4. Training→ model.fit(training_data,expected_output)
  5. Testing -> model.predict(testing_data)
  6. Hitung akurasi: -> accuracy_score() method from sklearn.metrics
  7. Evaluasi

kode lengkapnya bisa dilihat disini:

https://github.com/ShanmukhVegi/Image-Classification

versi lainnya:

https://github.com/whimian/SVM-Image-Classification/blob/master/Image%20Classification%20using%20scikit-learn.ipynb

Semoga Bermanfaat!


Silahkan tuliskan tanggapan, kritik maupun saran