MATLAB Answers

How to do training in matlab using SVM?

4 views (last 30 days)
Anushka
Anushka on 11 Mar 2015
Edited: Nikolay S. on 17 Mar 2015
I have to detect humans from an image for that I should first train the system using SVM.How to do training in matlab using SVM?What is the code for the same?

Answers (2)

Dima Lisin
Dima Lisin on 13 Mar 2015
Hi Anushka,
First of all, you can use the vision.PeopleDetector object in the Computer Vision System Toolbox to detect humans. The object includes a pre-trained HOG-SVM classifier.
Alternatively, you can use the trainCascadeObjectDetector. This function will train a boosted cascade classifier, rather than an SVM.

Nikolay S.
Nikolay S. on 17 Mar 2015
Edited: Nikolay S. on 17 Mar 2015
Good evening Anna.
Allow me to add my humble opinion.
To train and SVM , you need a series of positive and negative examples- usually you need hundreds/thousands of each, with negatives being much more (~x10, ~x20...) then positives. In case of images this will mean you need to have multiple examples of human figures photos as positives, and relevant images without such figures as negatives (we usually used all image regions without humans as negatives). This usually implies having sufficient database with ground truth markings/ annotations. Building this on your own is lots of work, but luckily for many problems under serious research you have available set of examples. Now, you convert each image (negative and positive) into a feature vector- resulting in a huge group of vectors- each with a priory know label- "positive" or "negative". You provide this to SVMtrain function (depending on the toolbox you're using), specifying SVN parameters- linear, RBF, etc, and voila, you got a trained SVN. Now, with SVNclassify- using the trained classifier and given a feature vector you will know whether is is considered positive and negative. You got Yourself a detector ! Good luck!

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!