Klasifikasi gambar menggunakan fitur SIFT dan SVM

12

Saya berharap seseorang dapat menjelaskan bagaimana menggunakan model kantong kata-kata untuk melakukan klasifikasi gambar menggunakan fitur SIFT / SURF / ORB dan mesin vektor dukungan?

Saat ini saya dapat menghitung vektor fitur SIFT untuk sebuah gambar, dan telah menerapkan SVM, tetapi saya merasa sulit untuk memahami literatur tentang bagaimana menggunakan tas kata-kata model untuk 'mengukur vektor' fitur SIFT dan membangun histogram yang memberikan vektor ukuran tetap, yang dapat digunakan untuk melatih dan menguji SVM.

Setiap tautan ke tutorial atau literatur tentang topik ini disambut baik, terima kasih

Jono Brogan
sumber

Jawaban:

16

Jika Anda bisa menerapkan SVM, Anda bisa mengukur fitur-fiturnya. :)

Biasanya fitur dikuantisasi menggunakan k-means clustering. Pertama, Anda memutuskan apa "ukuran kosakata" Anda seharusnya (katakan 200 "kata-kata visual"), dan kemudian Anda menjalankan k-means clustering untuk jumlah cluster (200). Deskriptor SIFT adalah vektor dari 128 elemen, yaitu titik dalam ruang 128 dimensi. Jadi, Anda dapat mencoba mengelompokkannya, seperti poin lainnya. Anda mengekstrak deskriptor SIFT dari sejumlah besar gambar, mirip dengan yang ingin Anda klasifikasikan menggunakan berbagai fitur. (Idealnya ini harus menjadi set gambar yang terpisah, tetapi dalam praktiknya orang sering hanya mendapatkan fitur dari set gambar pelatihan mereka.) Kemudian Anda menjalankan k-means clustering pada set besar deskriptor SIFT ini untuk mempartisi menjadi 200 (atau apa pun) cluster , yaitu untuk menetapkan setiap deskriptor ke sebuah kluster. k-means akan memberi Anda 200 pusat cluster,

Kemudian Anda mengambil masing-masing deskriptor SIFT di gambar Anda, dan memutuskan yang mana dari 200 cluster miliknya, dengan menemukan pusat cluster terdekat dengan itu. Kemudian Anda cukup menghitung berapa banyak fitur dari setiap cluster yang Anda miliki. Dengan demikian, untuk gambar apa pun dengan sejumlah fitur SIFT Anda memiliki histogram 200 nampan. Itu adalah vektor fitur Anda yang Anda berikan ke SVM. (Catatan, istilah fitur kelebihan beban).

Seingat saya, ada banyak pekerjaan yang dilakukan mengenai bagaimana histogram ini harus dinormalisasi. Saya mungkin salah, tetapi saya sepertinya mengingat sebuah makalah yang mengklaim bahwa vektor fitur biner (yaitu 1 jika setidaknya 1 fitur dari kluster ini ada, dan 0 sebaliknya) bekerja lebih baik daripada histogram. Anda harus memeriksa literatur untuk detailnya, dan detailnya penting.

Sunting: Toolbox Sistem Visi Komputer untuk MATLAB sekarang menyediakan sekumpulan fungsionalitas fitur .

Dima
sumber
Hai Dima, terima kasih atas jawaban Anda, saya hanya punya satu pertanyaan, ketika Anda mengatakan "maka Anda menjalankan k-means cluster untuk jumlah cluster", apa yang Anda jalankan pada k-mean clustering? ps Saya hampir tergoda untuk menerima jawaban ini karena komentar Anda tentang istilah fitur terlalu banyak, saya relevan untuk pemrosesan gambar dan saya sangat setuju
Jono Brogan
@JonoBrogan: Anda harus menerima jawaban saya, karena itu benar. :) Saya telah mengedit jawaban untuk mencoba menjelaskan k-means.
Dima
Apakah ini masuk akal sekarang?
Dima
Ya terima kasih Saya telah menerima jawabannya, meskipun saya hanya ingin tahu apakah Anda tahu bagaimana Anda memutuskan berapa "kata visual" yang akan digunakan?
Jono Brogan
3
Tetapi masalah terbesar adalah bahwa algoritma Kmeans tidak selalu memberikan hasil yang sama. Ini sangat acak.