Friday, 29 July 2011

How to make your own haar trained ".xml" files

hiii friends
Today i write on how to make ur own xml file. It took me long to figure it out.
The basic requirement is for u to have OpenCV installed and integrated to ur IDE.
If u haven't, then u could do it by following this link:
http://nayakamitarup.blogspot.com/2011/05/introduction-to-opencv-for-image.html

Now that u have installed OpenCV, u r ready to go.

 To start, dowload the "tools.exe" from the link below:
http://www.4shared.com/file/mpbQkWp4/tools.html

Unzip the tools.exe into a folder. U will find the contents like given below:


For training, u would need a database of thousands of images, with and without the object u want to train the xml file for, respectively called as positive and negative images. Near about 1000-2000 positives and 3000 negetives, sound fine for training.

Now u need to place all the positive images(images with object) inside the folder  "\temp\positive\rawdata".
Now that u have placed all the positives, execute the "objectmarker.exe". On executing it, it will show the image, and u need to mark the area containing the object. and u get some thing like this:
 
 Then press "Space Bar". It will feed the coordinates of the bounding rectangle into a text file "info.txt".
Then Press "Enter" to go to next image, and continue similarly till u are done with all the images.
 This is the most tiring part, and makes u wanna kill urself :P .

WARNING: Donot kill urself, have patience. :)

Now u can see the "info .txt" looks somthing like this:


Phew!!!!
Done with the most tiring part. Now insert all the negetive images(images without the object) or the so called background images into the folder "temp\negative", and execute the "create_list.bat" file.
On executing it, it stores the names of negative images along with extension, into a text file "infofile.txt" and it looks something like this:


Now u need to create samples for haar training. It is done by typing the following command in "start->run"

C:\Users\amit\Desktop\hand\lasssssssssssssst\temp\createsamples.exe -info positive/info.txt -vec data/vector.vec -num 527 -w 24 -h 24




Here, to use this command u need to edit it , with the number of positive and negetive images. Since I had used 527 positive images and 1142 negetive images and 30 stages, u can change it according to use by simply replacing the numbers in the command.

Now that the samples have been created, u can start haar training.
The same procedure is to be followed. Type the command in "start->run".

C:\Users\amit\Desktop\hand\lasssssssssssssst\temp\haartraining.exe -data data/cascade -vec data/vector.vec -bg negative/infofile.txt -npos 527 -nneg 1142 -nstages 30 -mem 1000 -mode ALL -w 24 -h 24 -nonsym

This starts the haar training, and u can see on the window, something like this:










This will continue upto the stage u have mentioned. It takes hell lot of a time, and during this time it occupies nearly 60% of the processor.
As the training proceeds,u will find folders forming with the text file "AdaBoostCARTHaarClassifier.txt" forming and a "vector.vec" file is also formed.


On completion of training, replace the "data" in "haar\cascade2xml" by the "data" folder in "haar\temp", and copy the "vector.vec" to location "haar\cascade2xml".
Now execute the "convert.bat" file. It finally forms the output.xml file.

Congrats, u made ur own xml file :)   

An application based on it:
http://nayakamitarup.blogspot.in/2011/06/hand-is-all-u-need.html

http://nayakamitarup.blogspot.in/2011/06/opencv-alien-attack.html

Now to detect using the xml file the code is:


#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <math.h>
#include <float.h>
#include <limits.h>
#include <time.h>
#include <ctype.h>

const char *cascade_name="openpalm.xml";

void detect_and_draw( IplImage* img )
{

    // Create memory for calculations
    static CvMemStorage* storage = 0;

    // Create a new Haar classifier
    static CvHaarClassifierCascade* cascade = 0;

    // Sets the scale with which the rectangle is drawn with
    int scale = 1;

    // Create two points to represent the hand locations
    CvPoint pt1, pt2;

    // Looping variable
    int i;

    // Load the HaarClassifierCascade
    cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );

    // Check whether the cascade has loaded successfully. Else report and error and quit
    if( !cascade )
    {
        fprintf( stderr, "ERROR: Could not load classifier cascade\n" );
        return;
    }

    // Allocate the memory storage
    storage = cvCreateMemStorage(0);

    // Create a new named window with title: result
    cvNamedWindow( "result", 1 );

    // Clear the memory storage which was used before
    cvClearMemStorage( storage );

    // Find whether the cascade is loaded, to find the hands. If yes, then:
    if( cascade )
    {

        // There can be more than one hand in an image. So create a growable sequence of hands.
        // Detect the objects and store them in the sequence
        CvSeq* hands = cvHaarDetectObjects( img, cascade, storage,
                                            1.1, 2, CV_HAAR_DO_CANNY_PRUNING,
                                            cvSize(40, 40) );

        // Loop the number of hands found.
        for( i = 0; i < (hands ? hands->total : 0); i++ )
        {
           // Create a new rectangle for drawing the hand
            CvRect* r = (CvRect*)cvGetSeqElem( hands, i );

            // Find the dimensions of the hand,and scale it if necessary
            pt1.x = r->x*scale;
            pt2.x = (r->x+r->width)*scale;
            pt1.y = r->y*scale;
            pt2.y = (r->y+r->height)*scale;

            // Draw the rectangle in the input image
            cvRectangle( img, pt1, pt2, CV_RGB(230,20,232), 3, 8, 0 );
        }
    }

    // Show the image in the window named "result"
    cvShowImage( "result", img );

}

int main()
{

  // Gets the input video stream from camera
  CvCapture* capture = cvCaptureFromCAM( 0 );

  // Checks if the input stream is obtained
  if( !capture )
  {
    fprintf( stderr, "ERROR: capture is NULL \n" );
    getchar();
    return -1;
  }

  // Show the image captured from the camera in the window and repeat
  while( 1 )
  {

    // Get one frame
    IplImage* frame = cvQueryFrame( capture );

    // Cecks if a frame is obtained
    if( !frame )
    {
      fprintf( stderr, "ERROR: frame is null...\n" );
      getchar();
      break;
    }

    // Flips the frame into mirror image
    cvFlip(frame,frame,1);

    // Call the function to detect and draw the hand positions
    detect_and_draw(frame);

    //If ESC key pressed exit
if( (cvWaitKey(10) & 255) == 27 )
      break;
  }

  // Release the capture device housekeeping
  cvReleaseCapture( &capture );

  return 0;
}



158 comments:

  1. So far so good, just waiting for training to be complete...

    Wondering how well this will actually work. You are like the only person I could find that has wrote this tutorial.

    Thank you, I have been fighting OOM errors, no clue why..

    One thing I am concerned about is the low resolution 24x24, is that something to worry about? I used the createsamples with just the -vec flag and that allows you to view your samples, they are so low resolution you can hardly see them.

    If you increase to anything higher then 24x24 you get OOM errors... I'm only working with 50 positives right now, not sure how well that will work but its my first go at it.

    I'd like to get multi threading going on, I have a 16 core system it can handle much more and would likely complete much faster, I saw comparisons going from single to multi 24 hours to 3 hours.

    :P tip: If you type the word "you" you will look more professional ;)

    ReplyDelete
  2. OOM errors may be due to your operating system being unable to create any more virtual memory.

    About the low resolution 24x24, it wont be a problem. I have tried and its working great.

    And if you do multi threading, do tell me how it goes. :)

    ReplyDelete
  3. .. was deep into a 48 hour multiple learning session... and I bluescreened.... stage 16 of 20 ... anyway to resume?

    As for multi threading... I'm going to try and recompile with TBB.. but this time in a VM in linux.. if my host bluescreens I'll have auto protect enabled and I'll be able to resume..

    ReplyDelete
  4. I converted what was left in the directory and it works although I am getting some false positives because all the images were taken in the same room that I'm testing in... As for TBB and VS2010 support I found a wonderful tutorial on using CMake to generate VS10 projects that will compile openCV with TBB support. I read some place that the TBB support will cut the training time from 24 hours to 3 hours, I'm running out of time tonight so I'll give it a go tomorrow.

    http://www.youtube.com/watch?v=XeBhwbRoKvk

    ReplyDelete
  5. To resume you have to start the training again. It will resume itself from where it was last trained upto.

    ReplyDelete
  6. Oh that's nice. Do you know if you would get better accuracy using positive images that are PNGs of only the content you want to detect with a transparent background?

    ReplyDelete
    Replies
    1. Yaa its giving better results..

      Delete
  7. BTW, I recompiled OpenCV with TBB and it appears to only multithread the detection, this is great but the newest version doesn't appear to support multi-threaded training. I haven't tested the performance increase you get from that just yet. I also plan on using the CUDA support. I have been using the Microsoft Kinect and EmugCV, I've built a flimsy .NET adapter for the camera. I'd like to come up with a complete package that provides a single interface for the skeleton tracking, IR depth camera, and video camera. Something that will provide much more information than the beta SDK that is out.

    ReplyDelete
  8. Thats nice..I must give it a try training images with transparent background.

    And i think I will get myself a Kinect :)

    ReplyDelete
    Replies
    1. Hi! I was hoping if you could share a link for tool.exe if you still have it?

      Delete
  9. Compiled OpenCV haartrain with OpenMP, performance doubles, load is balanced across all cores, I'm still bound by certain operations that cannot be multithreaded but its an improvement in training time. Instead of 1 core running at 100%, I have 4 cores running at 50% each.

    ReplyDelete
  10. Replies
    1. OpenMP - Open Multi-Processing
      The OpenMP API supports multi-platform shared-memory parallel programming in C/C++ and Fortran.

      Delete
  11. Dude thanks for the tutorial. It is very helpful but I faced a problem at the end. Everything worked fine but when tried the convert.bat it gives me an error. This is the error:

    "Null pointer (NULL object pointer)
    in function cvSave,
    D:\User\VP\opencv\cxcore\src\cxpersistence.cpp(5097)"

    But I don't have any D drive. If you could help me then it will be really greatful.

    K Out!

    ReplyDelete
    Replies
    1. Hii Kamran..
      U have not copied the files from the location- "temp/data/cascade/" to "cascade2xml/data/"

      Also copy the file vector.vec from location "temp/data/" to "cascade2xml/"

      After copying files try using the convert.bat. It will work.

      Hope it is helpful :)

      Delete
    2. Dude sorry for the late reply had exams.
      I did do that before and did do that after you told me to but it still gives me the same error.

      Delete
    3. I tried everything and found that only not copying the files gave the same error as u have....
      Are u doing it right?
      It would be helpful if u could tell me the steps followed..

      Delete
    4. i have the same problem with Kamran.

      Delete
    5. I think you are copying the whole cascade folder...what needs to be done is to copy the data from the cascade folder and paste it cascade2xml/data/....it worked for me

      Delete
    6. finally it worked, but it takes a hell of a time to get it done, doesnt it?

      i am working on a test, with only 45 positives and 91 negatives. It has been 4 days, and it is still in stage 15th from 30 stages.

      do you have any recommendation or suggestion?

      thank you

      Delete
    7. Yaa, it takes a hell lot of time.
      U could use the data formed until now, to make the xml file.
      If the results u get from it is satisfactory, then :)
      else u would need to continue training. U could add more images for improvement

      Delete
    8. i have same this problem.i tryed @mit recommend but is can't fix it

      Delete
    9. Put the data folders in cascade2xml/data not in cascade2xml/data/cascade

      Delete
    10. Same problem and it's not working even if i have done the above steps correctly..

      Delete
    11. SAME PROBLEM I HAD ALL THE STEPS FOLLOWED and checked several times, it still dont work..can any one suggest how to properly fix this..?

      Delete
  12. Can you post a code for detecting an object using the xml file please?
    Thanks in advance

    ReplyDelete
  13. Hi @mit, amazing work you have here! Thanks for the information - helped me ALOT - I was stuck on producing positives until I saw your tutorial. I'm haar training right now, and am using 1600 positives and around 2000 negatives with 30 stages - and it's taking FOREVER! would you recommend reducing the number of stages to a smaller number? what effect does that have on the result?

    Thanks

    SK

    ReplyDelete
    Replies
    1. Hii SK
      It takes forever really, makes u want to kill urself :)
      BTW how long have u been training?
      Reducing is not a good option if u want to develop a gud one, but if u got less time then reduce it.
      If u take a small number of stage, then the cascade formed will not be properly trained, i.e. before reaching the false alarm.
      Refer to the link for more information
      http://nayakamitarup.blogspot.in/2011/06/gesture-recognition-using-haar.html

      Delete
    2. Hi @mit, I've been Haar training for almost 3 days now, and its on stage 7 of 30. And thanks for the link, I understand now. Hopefully I can get my hands on some sort of super computer so i dont have to wait till the end of time :P :P

      Thanks again!

      SK

      Delete
  14. dude i keep getting this error in the createsamples.exe can you help me?

    Bad argument (unrecognizaed or unsuported array type)
    in function cvReleaseData
    D:\users\vp\opencv\cxcore\cxarray.cpp(1168)

    my info.txt looks like this
    rawdata/photo (1).bmp 1 245 165 124 136
    rawdata/photo (10).bmp 1 209 219 265 171
    rawdata/photo (100).bmp 1 161 180 103 100
    rawdata/photo (101).bmp 1 196 125 162 156
    rawdata/photo (102).bmp 1 157 132 116 140

    ReplyDelete
    Replies
    1. can someone reply tot his error..

      Delete
    2. photo (1).bmp <--- replace space with "-" or del it

      Delete
  15. never mind solved it, the names of the info.txt cant hav spaces

    ReplyDelete
  16. My haartraining is taking a LOT of time. It has been 5 days and is still in stage 2.

    Is this normal?

    ReplyDelete
    Replies
    1. What are the size of images used???
      Have u used large images??Try using small images of size 24x24 or 20x20...size in kbs..

      Or u could stop the training and convert the data uptill now to xml file.... Try detecting with the xml file..If results are permissible then :)
      else u could resume the training.

      Delete
  17. hi.. i haw 116 pos and 203 neg pictures (bmp, each ~4,6 MB)

    when i start the haartraining.exe (~13% CPU) with the above parameters i got stuck? at parent node 11 (and it does not look like your screenshot at all):

    ....haarcascade tools\temp>haartraining.exe -data da
    ta/cascade -vec data/vector.vec -bg negative/infofile.txt -npos 116 -nneg 204 -n
    stages 30 -mem 1000 -mode ALL -w 24 -h 24 -nonsym
    Data dir name: data/cascade
    Vec file name: data/vector.vec
    BG file name: negative/infofile.txt
    Num pos: 116
    Num neg: 204
    Num stages: 30
    Num splits: 1 (stump as weak classifier)
    Mem: 1000 MB
    Symmetric: FALSE
    Min hit rate: 0.995000
    Max false alarm rate: 0.500000
    Weight trimming: 0.950000
    Equal weights: FALSE
    Mode: ALL
    Width: 24
    Height: 24
    Max num of precalculated features: 546133
    Applied boosting algorithm: GAB
    Error (valid only for Discrete and Real AdaBoost): misclass
    Max number of splits in tree cascade: 0
    Min number of positive samples per cluster: 500
    Required leaf false alarm rate: 9.31323e-010
    Stage 0 loaded
    Stage 1 loaded
    Stage 2 loaded
    Stage 3 loaded
    Stage 4 loaded
    Stage 5 loaded
    Stage 6 loaded
    Stage 7 loaded
    Stage 8 loaded

    Tree Classifier
    Stage
    +---+---+---+---+---+---+---+---+---+
    | 0| 1| 2| 3| 4| 5| 6| 7| 8|
    +---+---+---+---+---+---+---+---+---+

    0---1---2---3---4---5---6---7---8

    Number of features used : 261600

    Parent node: 8

    *** 1 cluster ***
    POS: 9 9 1.000000
    NEG: 15 3.31928e-007
    BACKGROUND PROCESSING TIME: 233.68
    Precalculation time: 0.52
    +----+----+-+---------+---------+---------+---------+
    | N |%SMP|F| ST.THR | HR | FA | EXP. ERR|
    +----+----+-+---------+---------+---------+---------+
    | 1|100%|-| 0.999999| 1.000000| 0.000000| 0.000000|
    +----+----+-+---------+---------+---------+---------+
    Stage training time: 0.16
    Number of used features: 1

    Parent node: 8
    Chosen number of splits: 0

    Total number of splits: 0

    Tree Classifier
    Stage
    +---+---+---+---+---+---+---+---+---+---+
    | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9|
    +---+---+---+---+---+---+---+---+---+---+

    0---1---2---3---4---5---6---7---8---9


    Parent node: 9

    *** 1 cluster ***
    POS: 9 9 1.000000
    NEG: 15 1.21636e-007
    BACKGROUND PROCESSING TIME: 633.03
    Precalculation time: 0.52
    +----+----+-+---------+---------+---------+---------+
    | N |%SMP|F| ST.THR | HR | FA | EXP. ERR|
    +----+----+-+---------+---------+---------+---------+
    | 1|100%|-| 1.000000| 1.000000| 0.000000| 0.000000|
    +----+----+-+---------+---------+---------+---------+
    Stage training time: 0.16
    Number of used features: 1

    Parent node: 9
    Chosen number of splits: 0

    Total number of splits: 0

    Tree Classifier
    Stage
    +---+---+---+---+---+---+---+---+---+---+---+
    | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10|
    +---+---+---+---+---+---+---+---+---+---+---+

    0---1---2---3---4---5---6---7---8---9--10


    Parent node: 10

    *** 1 cluster ***
    POS: 9 9 1.000000
    NEG: 15 2.57773e-008
    BACKGROUND PROCESSING TIME: 3043.57
    Precalculation time: 0.52
    +----+----+-+---------+---------+---------+---------+
    | N |%SMP|F| ST.THR | HR | FA | EXP. ERR|
    +----+----+-+---------+---------+---------+---------+
    | 1|100%|-| 1.000000| 1.000000| 0.000000| 0.000000|
    +----+----+-+---------+---------+---------+---------+
    Stage training time: 0.16
    Number of used features: 1

    Parent node: 10
    Chosen number of splits: 0

    Total number of splits: 0

    Tree Classifier
    Stage
    +---+---+---+---+---+---+---+---+---+---+---+---+
    | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11|
    +---+---+---+---+---+---+---+---+---+---+---+---+

    0---1---2---3---4---5---6---7---8---9--10--11


    Parent node: 11

    *** 1 cluster ***
    POS: 9 9 1.000000
    0%

    ReplyDelete
    Replies
    1. what am i doing wrong?

      Delete
    2. It is better to use smaller images..size in kb..
      More over check the parameters like the number of negative images and the w and h..
      This is due to incorrect parameters....In an image converter, try changing the format of image files to bmp and the size to 24x24..then try the above steps....

      Delete
    3. thx for the reply..
      i changed the pictures to 267x200 and ~200kb and .bmp (no change in the outcome, still stuck)

      the number of pos and neg is right in the parameters.
      the pos images are in 267x200 and i did the objectmarker with them:
      rawdata/IMG_20120524_123206.bmp 1 49 46 80 84
      rawdata/IMG_20120524_123208.bmp 1 68 41 77 93
      etc..
      and the neg. are also 267x200
      or should i change the pics to 24x24?? but then the object is too schmal to mark, or did you meant just the negative? i thought the 24x24 represents the marked object so should it be smthg more like 80x84 and 77x93? (but your info.txt from obj marker is also different from the size 24x24).. maybe it would be clearer for me with an example :)

      do you, by any chance, have the haartraining.exe for multithread or a link to the exe? i tried to recompile but it didn't worked out..

      thx in advance

      Delete
    4. I have the exact same issue... Did you reach a conclusion to the origins of that problem ?

      Delete
    5. hi jad,

      i used the 270x200 bmp pictures ~200kb (pos and neg) but i got rid of the blurry, not so good pictures too improve the recognition process (i figured quality before quantity)

      i got quite good results with these parameters:
      (and the process was very fast, few hours tops.. depends on the stages. stages up to 15 and i had no problems anymore)

      haartraining.exe -data data/cascade -vec data/vector.vec -bg negative/infofile.txt
      -npos 150 -nneg 500 -nstages 15 -mem 2048 -mode ALL -w 24 -h 24 -nonsym -nsplits 2 -minhitrate 0.999 -maxfalsealarm 0.5

      haartraining.exe -data data/cascade -vesc data/vector.vec -bg negative/infofile.txt -npos 150 -nneg 500 -nstages 10 -mem 1000 -mode ALL -w 24 -h 24 -nonsym

      Delete
    6. Hey,

      Thanks for the fast reply I appreciate it a lot. Unfortunately I am still getting output like this one

      Parent node: 5

      *** 1 cluster ***
      POS: 11 11 1.000000
      NEG: 11 0.000322184
      BACKGROUND PROCESSING TIME: 0.26
      Precalculation time: 0.02
      +----+----+-+---------+---------+---------+---------+
      | N |%SMP|F| ST.THR | HR | FA | EXP. ERR|
      +----+----+-+---------+---------+---------+---------+
      | 1|100%|-| 1.000000| 1.000000| 0.000000| 0.000000|
      +----+----+-+---------+---------+---------+---------+
      Stage training time: 0.22
      Number of used features: 1

      Parent node: 5
      Chosen number of splits: 0

      Total number of splits: 0

      Tree Classifier
      Stage
      +---+---+---+---+---+---+---+
      | 0| 1| 2| 3| 4| 5| 6|
      +---+---+---+---+---+---+---+

      0---1---2---3---4---5---6

      Which means there is still something wrong with my parameters.

      So I have one final request and I will trouble you no more: Can you show me the commands that you put, including the one for the createsample.exe ?(And, if you can, show me its output?)

      Thanks again in advance,

      Jad.

      Delete
    7. for example

      create samples:
      createsamples.exe -info positive/info.txt -vec data/vector.vec -num 150 -w 24 -h 24

      haartraining.exe -data data/cascade -vesc data/vector.vec -bg negative/infofile.txt -npos 150 -nneg 500 -nstages 10 -mem 1000 -mode ALL -w 24 -h 24 -nonsym

      Parent node: 8

      *** 1 cluster ***
      POS: 158 158 1.000000
      NEG: 448 0.00298834
      BACKGROUND PROCESSING TIME: 0.94
      Precalculation time: 24.47
      +----+----+-+---------+---------+---------+---------+
      | N |%SMP|F| ST.THR | HR | FA | EXP. ERR|
      +----+----+-+---------+---------+---------+---------+
      | 1|100%|-|-0.341286| 1.000000| 1.000000| 0.321782|
      +----+----+-+---------+---------+---------+---------+
      | 2|100%|-|-0.530532| 1.000000| 1.000000| 0.325083|
      +----+----+-+---------+---------+---------+---------+
      | 3|100%|-|-0.709634| 1.000000| 1.000000| 0.222772|
      +----+----+-+---------+---------+---------+---------+
      | 4|100%|-|-0.794293| 1.000000| 0.946429| 0.264026|
      +----+----+-+---------+---------+---------+---------+
      | 5| 87%|-|-0.971608| 1.000000| 0.953125| 0.188119|
      +----+----+-+---------+---------+---------+---------+
      | 6| 88%|-|-1.000623| 1.000000| 0.877232| 0.132013|
      +----+----+-+---------+---------+---------+---------+
      | 7| 89%|-|-1.201564| 1.000000| 0.890625| 0.135314|
      +----+----+-+---------+---------+---------+---------+
      | 8| 91%|-|-0.934982| 1.000000| 0.656250| 0.110561|
      +----+----+-+---------+---------+---------+---------+
      | 9| 78%|-|-0.604570| 1.000000| 0.426339| 0.130363|
      +----+----+-+---------+---------+---------+---------+
      Stage training time: 38.09
      Number of used features: 9

      Parent node: 8
      Chosen number of splits: 0

      Total number of splits: 0

      Tree Classifier
      Stage
      +---+---+---+---+---+---+---+---+---+---+
      | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9|
      +---+---+---+---+---+---+---+---+---+---+

      0---1---2---3---4---5---6---7---8---9


      Parent node: 9

      *** 1 cluster ***
      POS: 158 158 1.000000
      NEG: 448 0.00197665
      BACKGROUND PROCESSING TIME: 1.40
      Required number of stages achieved. Branch training terminated.
      Total number of splits: 0

      Tree Classifier
      Stage
      +---+---+---+---+---+---+---+---+---+---+
      | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9|
      +---+---+---+---+---+---+---+---+---+---+

      0---1---2---3---4---5---6---7---8---9

      Delete
  18. hi .how are you i want to ask you
    i had trained on 230 positive and negative images with 20 stage recently .but it always finished early on stage 5 due to branch terminated (core i5 3 gb ram)but it dont detect hand sign .FYI i used to make 3 min video of hand sign at wall of yellowish and white and then extract 230 pos image and 430 neg image(with out object) from video.
    what is this problem ?please reply

    ReplyDelete
  19. what is the size of your xml file???
    Increase the number of positives and negatives.

    ReplyDelete
  20. Dude great tutorial. It really helped me. Dude I wanted to talk about something with you but could not find any contact info. If you could give me your email address then I could discuss something with you.

    K Out!

    ReplyDelete
    Replies
    1. Thanx :)
      email id: nayakamitarup@gmail.com

      Delete
  21. Hi! I've been using your tutorials for generating xml files for various hand gesture detection. The first one I made worked fine but the rest seem to fail. My first xml file was only about 43 kb while the others I generated was already 207 kb. I'm using 1000positives and 3000negatives for 22stages. Hope you could help us. Thanks. :)

    ReplyDelete
    Replies
    1. Trying to figure out the possible problem..Will let u know when I find out something

      Delete
  22. One more thing, what software do you use for testing your xml files? Where do you build your codes? And what camera are you using for it?

    ReplyDelete
    Replies
    1. Hii koji
      I use OpenCV integrated in codeblocks.

      http://nayakamitarup.blogspot.in/2011/05/introduction-to-opencv-for-image.html

      Using the code given above in this tutorial I test the working. I use webcam of my laptop. Currently started using kinect.

      Delete
  23. Hi, should negative in grayscale? Or should it be like normal pictures but without the object you want to detect? Thanks for your time. :)

    ReplyDelete
    Replies
    1. The negetive need not be in grayscale. but it should be without the object u need to detect

      Delete
    2. This comment has been removed by the author.

      Delete
    3. Oh okay thanks. I have another question because I noticed that all the sample pictures have the same size(225kb) and dimensions(320x420), in the positive and negative folder. Does it have to be like that? Example, If i have 1000 positive pictures, does all the pictures have to be 250KB in size and 320x240 in dimension?

      Moreover, is it okay if I use JPEG images? Because the sample is in BMP.

      Delete
    4. No not required that all images have same dimension...

      I also tried using the jpg images, but the objectmarker.exe didnt seem to work, whenever jpg images were used.

      Delete
  24. Hello. I've been training to generate an xml file for hand that has 5k positives, 5k negatives, 22 stages, and using 2000 for memory. I'm using my desktop for this one. I'm just wondering why it takes only around 1hour to finish my training. And then testing it with CodeBlocks, it does not work/detect my gesture. Hope you can help me with this one.

    ReplyDelete
    Replies
    1. If its finishing this fast, there should be error somewhere..Can u post what is being displayed while training.

      Delete
  25. Hi, if this training can take forever what difference would realtime training would make? and how can you modify your code to do real time training?

    ReplyDelete
    Replies
    1. After this training is complete, u need not improvise. The trained xml file is used for detection.

      But in real time training, it must modify, update or train itself each time to the current surroundings up to a level, where the resulting output is same as the required output.
      Example- neural networks.

      Delete
    2. could you come up with a blog showing how it could be done?

      Delete
    3. Am still working at it..will post soon :)

      Delete
  26. Hi, I tried training 5K-positive images JPG type and 5k-colored negative images BMP type (320x240, 225kb), for 30 stages. The xml file is 58kb, It's not working when I'm testing it with the codes given above. I'm using codeblocks, i tested other xml file I got from the internet and It's working just fine, but the xml I generated was not working, Any advice?

    ReplyDelete
    Replies
    1. Hey if u used the jpg images, the objectmarker.exe shouldn't have worked.
      Check for it by seeing the info.txt.
      If it is empty, try using bmp images.

      Delete
  27. Thank you very much sir for your efforts..
    But please I have a problem..
    Every time I run the code it works ONLY with the openpalm.xml but when trying any other xml file almost the embedded classifiers taht are in opencv like haarcascade_frontalface_alt2.xml ...etc it gives me the error message
    ERROR: Could not load classifier cascade
    I'm a beginner in the AR field and made my own classifier and want
    to train it PLEASE HELP ME..Thank you very much in advance

    ReplyDelete
    Replies
    1. This happens only when its location has not been properly given..Did u place the xml files in the same folder as the program?

      Delete
    2. This comment has been removed by the author.

      Delete
    3. This comment has been removed by the author.

      Delete
  28. Hello I am using the tutorial but when I'm training it seem like it goes into infinite loop
    any solution
    thank you

    ReplyDelete
  29. hi,
    i have an error "open cv gui error handler (enable to obtain positive samples in function CvCreateTreeCascadeClassifier)
    ..src\cvhaartraining.cpp(2209)"
    please can you help me

    ReplyDelete
    Replies
    1. I get the same when running the haartraining.exe

      Delete
    2. Me too having same problem. Can anybody help us out here?
      Lamissou Lamiss dude, if you have found out some way to solve it please let me know...:)

      Delete
  30. Amit bhai, I have a quad core PC, when I start the haartraining I have noticed that only 26% of the CPU is used. Why doesn't haartraining use my entire CPU or atleast 80%? As it would take less time for training.

    K Out!

    ReplyDelete
    Replies
    1. Hii
      The "-mem 512" is the available memory in MB for precalculation. Default is 200MB, so increase if more memory is available. Max is 2 gb for 32 bit.

      Delete
  31. When I am trying to create samples, I am getting an error below

    Bad argument (unrecognized or unsupported array type) in function cvReleaseData,
    D:\User\VP\opencv\cxcore\src\cxarray.cpp(1168)

    ReplyDelete
  32. hello

    i successfully created the info.txt file and the infofile.txt, when i try using the training command "haartraining.exe -data data/cascade -vec data/vector.vec -bg negative/infofile.txt -npos 1446 -nneg 1672 -nstages 20 -mem 3000 -mode ALL -w 24 -h 24 -nonsym"

    i get this pop up error message, ""One of arguments' values is out of range (Negative or too large argument of cvAlloc function)
    in fucntion cvAlloc, D:\User\VP\opencv\cxcore\src\cxalloc.cpp(106)""


    i extracted tools folder in the C drive (C:\) and i dont have the location specified in the error message.

    please help. Thank you

    ReplyDelete
    Replies
    1. Memory allocation for 32 bit is up to 2000 only (try changing your -mem 3000 to -mem 2000)

      Delete
  33. This comment has been removed by the author.

    ReplyDelete
  34. My code is still on stage 21 from last 4 hrs
    here is the info on the screen
    0---1---2---3---4---5---6---7---8---9--10--11--12--13--14--15--16--17--18--19
    --20--21


    Parent node: 21

    *** 1 cluster ***
    POS: 183 183 1.000000
    44%

    can somebody tell me what is going on with this?

    ReplyDelete
  35. Hello! I need some help...I'm having problem with executing "haartraining.exe". Everything upto this step went fine...:D
    When I execute this command, after about a minute or so, I get an error message which says "OpenCV GUI Error Handler". Except these words, no any other word is displayed in the error message. I mean there are buttons but no text such as "Abort", "Retry", "Cancel",etc. on them. Please suggest me some ideas...!

    ReplyDelete
    Replies
    1. Same problem here, I run the sample with 640x480, and get stuck in the first stages... I used 300 +ve and 300 -ve samples.
      When I decrease to 30 +ve samples, it remains the same.

      However, when I changed the sample to 24 x 24, it's running normally so far.

      p.s. the original bmp is 640x480, I created the sample to 24x24 with:
      "createsample.exe -info positive/info.txt -nec data/vector.vec -num 300 -w 24 -h 24"

      and then start the training with the samples:
      "haartraining.exe -data /data/cascade -vec data/vector.vec -bg negative/infofile.txt -npos 298 -nneg 300 -nstages 25 -mem 100 - mode ALL -w 24 -h 24 -nonsym"

      Hopes this help

      Delete
  36. Hi, do we need to resize the sample pictures to 24 x 24 or the program will do it automatically?

    Another question, can all the images differ in resolution from one to another?

    Thanks in advance.

    ReplyDelete
  37. when i run the haarTraining i got this error (Unable to obtain positive samples) in function cvCreateTreeCascadeClassifier,..\src\cvhaartraining.cpp()2209
    please .. what i can do with this error ????

    ReplyDelete
  38. How long is the haartraining.exe supposed to take roughly?

    Im only testing on a small data set of 20 positive and negative images on a brand new i7 rig and it still ends up taking for ever and getting stuck processing some nodes.

    Any help would be great as this is the first tutorial that takes you through all steps.

    ReplyDelete
  39. when i convert.bat is error

    Null pointer (NULL object pointer)
    in function cvSave,
    D;\User\VP\opencv\cxcore\src\cxpersistence.cpp(5097)

    help me please.

    ReplyDelete
  40. Dan,
    Please ignore this message if your question is resolved.
    But what I found from testing is that if you change the positive images to 24x24 and keep the size low in kb, and let the negative images be the original dimensions and size in memory, then the training will not take more than 30-60 mins for the number of images you mentioned.

    ReplyDelete
  41. So, the code contain Adaboost? Mean, when we use detect_and_draw(frame);
    It excute Adaboost or just only Haarlike

    ReplyDelete
  42. hi...
    Do you have .xml for hand detection? If so can you please mail me the xml file...my mailid is p.suchi1990@gmail.com. thank you in advance....

    ReplyDelete
  43. whether the positive images should be containing clipped images or original images having object to be detected?

    ReplyDelete
  44. Is it alright to use 20 by 20 PGM format images?

    ReplyDelete
  45. Hi dear,
    Can't we use jpg instead of bmp files?

    ReplyDelete
  46. Hi!!
    I have used bmp imges with size 320*240..and i have created samples with following:
    "createsample.exe -info positive/info.txt -nec data/vector.vec -num 300 -w 24 -h 24"

    My question is that it is necessary to resize images to 24*24?
    Is 320*240 size give better result than 24*24?
    Plz help...

    ReplyDelete
  47. Thanx brother..
    Its really a good tutorial.
    Thank you very much

    ReplyDelete
  48. hi...
    i want to create haarcascade for eye pupil detection, for training that i had used 651 positive and 1000 negative images upto stage 14. still the resultant xml didnt work at all.

    C:\tools\temp\opencv_haartraining.exe -data data/cascade -vec vector651.vec -bg negative/infofile.txt -npos 651 -nneg 1000 -nstages 20 -mem 2000 -mode ALL -w 20 -h 20 -nonsym

    please help

    ReplyDelete
  49. Hi. I am relatively new to this field and I need a code that uses my xml file to detect the required object. I have created the xml file. As test images, i want it to read an image from a directory and not from the camera. Could you please help me with the code for the same? It would help immensely. Thanks a lot!

    ReplyDelete
  50. Hi im doing a project to recognize 7UP Bottle. been trying to do the haartraining... but in my case, when i run the haar traing, the program finishes in a few mins. The resulting xml is obviously not correct and cant detect anything.

    Is anybody experiencing the same problems? May i know what i can do to rectify it.

    Can anybody share with me an xml for bottle detection!! i need it urgently for a school project.

    My email is ken_h2000@hotmail.com

    Thanks!

    ReplyDelete
  51. hi, i am new to this field and for my university project i have to detect toy cars. can anyone plz tell me that 24X24 size of image should be of postitve and negative samples?? or after executing objectmarker when we mark the object that automatically reduces the size and that should be equal to 24 x 24??? plz anyone answer my query... itx urgent...

    ReplyDelete
  52. Hello Amit, first of all thanx for your so nice and helpful tutorial. I tried your steps using small number of samples, very small.
    positive images = 7
    negative images = 6
    everything was fine I tried like this:

    temp\createsamples.exe -info positive/info.txt -vec data/vector.vec -num 7 -w 24 -h 24

    and then

    haartraining.exe -data data/cascade -vec data/vector.vec -bg negative/infofile.txt -npos 7 -nneg 6 -nstages 12 -mem 1000 -mode ALL -w 24 -h 24 -nonsym

    but the output wasnot like u showed

    The cursor keep blinking here .
    Could you help me?? How many nstages should I assign?
    Thanks in advance

    ReplyDelete
  53. +---+---+---+---+

    0---1---2---3
    Parent node: 3
    *** 1 cluster ***
    POS: 7 7 1.000000
    NEG: 6 0.05
    BACKGROUND PROCESSING TIME: 0.00
    Precalculation time: 0.39
    +----+----+-+---------+---------+---------+---------+
    | N |%SMP|F| ST.THR | HR | FA | EXP. ERR|
    +----+----+-+---------+---------+---------+---------+
    | 1|100%|-| 1.000000| 1.000000| 0.000000| 0.000000|
    +----+----+-+---------+---------+---------+---------+
    Stage training time: 0.18
    Number of used features: 1

    Parent node: 3
    Chosen number of splits: 0

    Total number of splits: 0

    Tree Classifier
    Stage
    +---+---+---+---+---+
    | 0| 1| 2| 3| 4|
    +---+---+---+---+---+
    ///.....similarly...//

    Parent node: 9

    *** 1 cluster ***
    POS: 7 7 1.000000
    NEG: 6 0.000134517
    BACKGROUND PROCESSING TIME: 0.60
    Precalculation time: 0.38
    +----+----+-+---------+---------+---------+---------+
    | N |%SMP|F| ST.THR | HR | FA | EXP. ERR|
    +----+----+-+---------+---------+---------+---------+
    | 1|100%|-| 1.000000| 1.000000| 0.000000| 0.000000|
    +----+----+-+---------+---------+---------+---------+
    Stage training time: 0.18
    Number of used features: 1

    Parent node: 9
    Chosen number of splits: 0

    Total number of splits: 0

    Tree Classifier
    Stage
    +---+---+---+---+---+---+---+---+---+---+---+
    | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10|
    +---+---+---+---+---+---+---+---+---+---+---+

    0---1---2---3---4---5---6---7---8---9--10


    Parent node: 10

    *** 1 cluster ***
    POS: 7 7 1.000000
    NEG: 6 1.43542e-005
    BACKGROUND PROCESSING TIME: 5.61
    Precalculation time: 0.39
    +----+----+-+---------+---------+---------+---------+
    | N |%SMP|F| ST.THR | HR | FA | EXP. ERR|
    +----+----+-+---------+---------+---------+---------+
    | 1|100%|-| 1.000000| 1.000000| 0.000000| 0.000000|
    +----+----+-+---------+---------+---------+---------+
    Stage training time: 0.18
    Number of used features: 1

    Parent node: 10
    Chosen number of splits: 0

    Total number of splits: 0

    Tree Classifier
    Stage
    +---+---+---+---+---+---+---+---+---+---+---+---+
    | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11|
    +---+---+---+---+---+---+---+---+---+---+---+---+

    0---1---2---3---4---5---6---7---8---9--10--11


    Parent node: 11

    *** 1 cluster ***
    POS: 7 7 1.000000
    NEG: 6 2.11725e-005
    BACKGROUND PROCESSING TIME: 3.80
    Precalculation time: 0.39
    +----+----+-+---------+---------+---------+---------+
    | N |%SMP|F| ST.THR | HR | FA | EXP. ERR|
    +----+----+-+---------+---------+---------+---------+
    | 1|100%|-| 1.000000| 1.000000| 0.000000| 0.000000|
    +----+----+-+---------+---------+---------+---------+
    Stage training time: 0.16
    Number of used features: 1

    Parent node: 11
    Chosen number of splits: 0

    Total number of splits: 0

    Tree Classifier
    Stage
    +---+---+---+---+---+---+---+---+---+---+---+---+---+
    | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12|
    +---+---+---+---+---+---+---+---+---+---+---+---+---+

    0---1---2---3---4---5---6---7---8---9--10--11--12


    Parent node: 12

    *** 1 cluster ***
    POS: 7 7 1.000000
    NEG: 6 1.23664e-006
    BACKGROUND PROCESSING TIME: 66.41
    Precalculation time: 0.36
    +----+----+-+---------+---------+---------+---------+
    | N |%SMP|F| ST.THR | HR | FA | EXP. ERR|
    +----+----+-+---------+---------+---------+---------+
    | 1|100%|-| 1.000000| 1.000000| 0.000000| 0.000000|
    +----+----+-+---------+---------+---------+---------+
    Stage training time: 0.14
    Number of used features: 1

    Parent node: 12
    Chosen number of splits: 0

    Total number of splits: 0

    Tree Classifier
    Stage
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+
    | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13|
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+

    0---1---2---3---4---5---6---7---8---9--10--11--12--13


    Parent node: 13

    *** 1 cluster ***
    POS: 7 7 1.000000

    The cursor keep blinkin here

    ReplyDelete
  54. Thanks a lot i was fed up with this in lot of time,,
    finally i found the correct way from u

    Thanks,

    ReplyDelete
  55. Dude i am trying to make my own xml file using 99 positive images and 116 negative images implying 20 stages... and it's kinda stuck at 18th stage from past 12 hour... what should i do?? i mean i should still wait and see what happens or i should start from beginning taking less stages now... ??

    ReplyDelete
  56. What are the features that are considered here ??

    ReplyDelete
  57. hey when i executed haartraining.exe the cmd just dissappeared..it didnot show me any stage output on the monitor..can someone help me??

    ReplyDelete
  58. hiii please whene now I want exactly the proccess holes ends, I use 91 positive and 101 negative image and i specified just 4 steps, but proceess stuck in a certain level? what do I do? and please whene the finish where the xml file will be saved?

    ReplyDelete
  59. hi .. when i run createsample.exe it shows cmd and fades out or closed within a sec ... using win 7 32bit .. need ur help

    ReplyDelete
  60. objectmaker.exe is also doing the same ?

    ReplyDelete
  61. any one please help me.I,m getting error running the haartraining.exe file as mentioned . while running it says "Unspecified error(Unable to obtain negative samples) in function cvCreateTreeClassifier,....\src\cvhaartraining.cpp(2223)."

    how can i fix it.please help.thanks in advance. ...

    ReplyDelete
    Replies
    1. thanks God .. i managed to solve the problem.great tutorial ..(Y)

      Delete
    2. hi!
      can please explain me the solution u found.
      thx

      Delete
  62. i generated different haar file for bottle and phone but when i am trying to detect i am getting so many false predictions along with bottle and phone.i used 800 positive and 1600 negative images and ran the haar file for 30 stages. is there any way to reduce those false predictions...................can some one help me ????

    ReplyDelete
  63. Thank you very much for this tutorial..in here i am going to train faces using this and in face database face images are .pmg images..they are not automatically load here.can I please have any idea for loading that images please.

    ReplyDelete
  64. Hello @mit.
    Your objectmaker have some errors. It don't want to add my rectangles to info.txt and i don't see those being added as i draw rectangle either.

    It happens sometimes. I draw a rectangle then press Space and it's successfuly added. Then i draw another rectangle and press Space and it don't want to add it. Only after several attempts it allows me to add the rectangle and i can see it in the console below corresponding image. So i've not managed to do my samples because of this problme. What the hell is that?

    ReplyDelete
    Replies
    1. Ok, let's assume that i've managed to make proper info.txt. But now it doesn't want to build samples.
      Look:
      http://s37-temporary-files.radikal.ru/85ec839318a5490b869b0e56993dffeb/-929206895.jpg

      0 samples.

      Do you know what the reason might be is?

      Delete
  65. Hello @mit.. I want to ask with you..

    example: C:\Users\amit\Desktop\hand\lasssssssssssssst\temp\createsamples.exe -info positive/info.txt -vec data/vector.vec -num 527 -w 24 -h 24

    -num 527, whether the number of positive images or ROI (Region of Interest)? I'm confused, because I successed to create info.txt and create trainig sample. But when I opened info.txt, I look number of ROI more than positive images. Furthermore I convert vector file to images (.png) I get same images files 527. While, number of ROI more than that.. Can you explain it to me?

    ReplyDelete
  66. Thank you!
    The tutorial helped a lot in my project and my learning.
    I did my haartraining, as you explained and all steps worked.
    Now I will make a more robust.

    Hugs man!

    ReplyDelete
    Replies
    1. Hi,sorry for asking this question here.did you train it using .pmg images? cannot we use .jpg images for training?If you can please leave a comment here.

      Delete
    2. This comment has been removed by the author.

      Delete
    3. Yes BMP used, but do not know the difference.
      Only now I insert more images and not completing the haartraining.
      I left more than 8 hours and does not end...

      Delete
  67. Thank you very much for this tutorial..in here i am going to train faces using this and in face database face images are .pmg images..they are not automatically load here.can I please have any idea for loading that images please.or in here can't we use .jpg images?

    ReplyDelete
    Replies
    1. I do not understand why you do not use BMP. Why you have to use JPG?

      Delete
    2. In here I am going to face detect using haar cascade face training,,and there are no database found as face database with .bmp images.

      Delete
    3. Understand .. but if you can not do with jpeg, converts images.

      I'm still trying create my haar cascade, think I'll migrate pro Ubuntu and see if I can do a satisfactory.

      Delete
    4. Thank you very much..I will try this..

      Delete
    5. Is there any database have you use here with faces? I have downloaded several databases,But they are not displayed.

      Delete
  68. what version of opencv you use in your training..?

    ReplyDelete
  69. Hi. i just wanted to know what this error means, i was trying to create a XML running the "convert.bat" when suddenly a dialog box appeared and says

    NUll pointer(Null Object pointer)
    in function cvSave,
    D:\User\VP\opencv\cxcore\src\cxpersistence.cpp(5097)

    i dont know if its an error on my OPENCV . i am using OPENCV 2.4.6

    ReplyDelete
    Replies
    1. I was having this error as well. Make sure directly under Cascade2xml/data directory you have the Numbered subdirectories... NOT like Cascade2xml/data/cascade/ . That's what fixed it for me at least.

      Delete
  70. Hi, I have a problem just in early stage!! the "info.txt" contains nothing, can anybody help me? Thank you

    ReplyDelete
  71. Hello all, we have generated an XML file successfully. When we use the XML on matlab for detecting, the nothing happends...the result is -1. But, when we use XML from OpenCV we can find human faces etc etc, that means that we have done everything right but our generated XML is corrupted. Can somebody help us please?

    ReplyDelete
  72. this messeage appeared "Null pointers" will i execuse convert.bat
    Could you help me please?

    ReplyDelete
  73. hello , how can i use haar classifier in visual studio 2010 integrated with opencv246...im not using code block. the main problem is how can i run the command to create samples?

    ReplyDelete
  74. Hi!
    thank you for this great tutorial! i got a problem on the haartraiing step :
    i have 216 pos images and 250 neg !
    my first question: what the -w and -h are for? is for the size of the marker or the size of the pos..? .

    ReplyDelete
  75. Well..
    I got a problem about positive pictures.
    The object can be rotated in positive pictures?
    I mean, for example, train a scooter.
    I took a photo with scooter and around in a circle.
    Is it can detect exactly?

    I use that but performence is not good.
    So I confused about object rotated.

    Thanks.

    ReplyDelete
  76. its not creating any samples for me it says Unable to open file: data/vector.vec

    ReplyDelete
    Replies
    1. Thanks anyways buddy!! sorted it out!!!! and thanks for the tutorial, BIG HEP!!!!!!!

      Delete
  77. Hi, please help-me..
    I genrete yhe xml files, but when I use the method detect_and_draw(), the video frames pass very slow, I don't no what I do..
    and thanks for the answer, and this is a very good tutorial.

    ReplyDelete
    Replies
    1. I'm not sure. It may help if you reduce the quality of video or resize it to be smaller.

      Delete
  78. How can I choose picture as negative picture or any picture can use as negative picture?

    ReplyDelete
  79. Can anyone please tell me what actually is a "stage" in this context?

    ReplyDelete
  80. Do the negative sample images are to be necessarily in 'gray scale' format?

    ReplyDelete
  81. ObjectMarker.exe is not going to execute, cmd appears and the disappears in less then a second, running Win 7 Home Premium 64 bit, and i have associated my OpenCv with Eclipse IDE

    ReplyDelete
  82. hi there,since the positive images are not bmp the objectMarker cant find them make the positive images bmp :)

    ReplyDelete
  83. hi why the link on the very top shows the"tool.exe"file have been deleted? Can you offer me a new link? Thanks!

    ReplyDelete
  84. same problem !! "http://www.4shared.com/file/mpbQkWp4/tools.html "says tool.exe file deleted.

    ReplyDelete
  85. Hi, the tools which you have mentioned is no longer available.
    "'tools.rar' is unavailable.This file was deleted."

    ReplyDelete
  86. Hi can you provide me the link for tool.exe .the file got deleted.
    Thanks

    ReplyDelete
  87. Good day.
    The link you have given at the beginning for downloading files is not working.

    To start, dowload the "tools.exe" from the link below:
    http://www.4shared.com/file/mpbQkWp4/tools.html

    Unzip the tools.exe into a folder. U will find the contents like given below:

    Can you help to fix it?

    Regards.

    ReplyDelete
  88. Hello
    Can you please give the link to "tools.exe", it is unavailable.

    Thanks

    ReplyDelete
  89. hello!
    I tried to download the "tools.exe" from the link below:
    http://www.4shared.com/file/mpbQkWp4/tools.html
    but the file has been removed.
    Can you offer me another link where I can download this file?

    ReplyDelete
  90. Hi there. Awesome tutorial.
    Could you please put up the tools package again? The link doesnt work anymore.
    Thanks

    ReplyDelete
  91. Can we use Haarclassifier above steps for gender classification in video

    ReplyDelete
  92. link "http://www.4shared.com/file/mpbQkWp4/tools.html" is not working

    ReplyDelete
  93. The 4shared link is dead. Please can you re upload it
    Thanx

    ReplyDelete
  94. Find the latest used and new cars for sale.
    Great used car deals and prices.
    More here used cars boise

    ReplyDelete