0

is there anyone ever tried to train an HOG-liner svm pedestrian detector base on The TUD-brussel dataset(which is introduced from this website):

https://www.mpi-inf.mpg.de/departments/computer-vision-and-multimodal-computing/research/people-detection-pose-estimation-and-tracking/multi-cue-onboard-pedestrian-detection/

I tried to implement it on opencv through visual studio 2012. I cropped positive samples from the original positive images base on their annotations(about 1777 samples for total). Negative samples was cropped from original negative images randomly, 20 samples for each image(about 3840 samples for total).

I also adapted two round bootstrapping(checking for hardexamples and retrain) to improve its performance. However, the test result for this detector on TUD-brussel was awful, about 97% miss rate when FPPG(false positive per image) equals to 1. I found another paper which achieved a reasonable result when trainning on TUD-brussel with HOG(on Figure3(a)): https://www1.ethz.ch/igp/photogrammetry/publications/pdf_folder/walk10cvpr.pdf.

Is anybody have any idea on training HOG+linear SVM on TUD-brussel?

1 Answers1

0

I have to face with a similar situation recently.I developed an image classifier with hog and linear svm in python using pycharm.Problem i faced was it took lot of time to train.

Solution: Simple I resized each image to 250*250.it really incresed performance in my situation

  1. Resize each image
  2. convert to gray scale
  3. find PCA
  4. flat that and append it to training list
  5. append labels to training labels

    for file in listing1:
     img = cv2.imread(path1 + file)
     res=cv2.resize(img,(250,250))
     gray_image = cv2.cvtColor(res, cv2.COLOR_BGR2GRAY)
     xarr=np.squeeze(np.array(gray_image).astype(np.float32))
     m,v=cv2.PCACompute(xarr)
     arr= np.array(v)
     flat_arr= arr.ravel()
     training_set.append(flat_arr)
     training_labels.append(1)
    

    Now Training

    trainData=np.float32(training_set)
     responses=np.float32(training_labels)
     svm = cv2.SVM()
     svm.train(trainData,responses, params=svm_params)
     svm.save('svm_data.dat')
    
  • Hi, I tried to resize every image into 64*128, which is the size I want before training. But still, the detector's performance is pretty bad, doesn't match those results from paper. – Chengzhang Zhong Mar 26 '16 at 01:41