Code covered by the BSD License  

Highlights from
Objects/Faces Detection Toolbox

4.66667
4.7 | 40 ratings Rate this file 284 Downloads (last 30 days) File Size: 17.4 MB File ID: #24092
image thumbnail

Objects/Faces Detection Toolbox

by

Sebastien PARIS (view profile)

 

12 May 2009 (Updated )

Objects/Faces detection using Local Binary Patterns and Haar features

| Watch this File

File Information
Description

Objects/Faces detection toolbox v 0.28
--------------------------------------

This toolbox provides some tools for objects/faces detection using Local Binary Patterns (and some variants) and Haar features.
Object/face detection is performed by evaluating trained models over multi-scan windows with boosting models
(such Adaboosting, FastAdaboosting and Gentleboosting) or with linear SVM models.
The main objective of FDT is to bring simple but efficient tools mainly written in C codes with a matlab interface and easy to modify.

BEFORE INSTALLATION, BE SURE TO HAVE A C COMPILER ON YOUR SYSTEM!!!!!

For windows system, recommanded compilers are MSVC/MSVC express (free)/Intel compiler
For Linux system, recommanded compilers are GCC(free)/Intel compiler

PLEASE BE SURE THAT YOU SETUP YOUR COMPILER BEFORE FDT INSTALLATION.

PLEASE LINK MEX-FILES USING BLAS/LAPACK WITH THE INTEL MKL. SOME CRASHES HAVE BEEN OBSERVED WITH THE BUILT-IN MATLAB BLAS/LAPACK LIB

Please open "readme.txt" for full details and references

Acknowledgements

Vcapg2 and Windows Internet Explorer + Google Search = Ur Ls For Jpg Images inspired this file.

MATLAB release MATLAB 7.8 (R2009a)
Other requirements A C compiler (MSVC/Intel CPP)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (176)
03 Apr 2015 jialin lu

Hi,when I run "setup_fdt",errrors as follwing:
>> setup_fdt
Creating positives dir
Unzipping negatives picts ...
Compile mex files ...
compiling chlbp
compiling chlbp_adaboost_binary_train_cascade
compiling chlbp_adaboost_binary_predict_cascade
compiling chlbp_gentleboost_binary_train_cascade
compiling chlbp_gentleboost_binary_predict_cascade
compiling detector_haar
compiling detector_mblbp
compiling eval_chlbp
compiling eval_haar
compiling eval_haar_subwindow
compiling eval_mblbp
compiling eval_mblbp_subwindows
compiling haar
compiling haar_ada_weaklearner
compiling haar_adaboost_binary_train_cascade
compiling haar_adaboost_binary_predict_cascade
compiling haar_featlist
compiling haar_gentle_weaklearner
compiling haar_gentleboost_binary_train_cascade
compiling haar_gentleboost_binary_predict_cascade
compiling haar_scale
compiling imresize
compiling area
compiling homkermap
compiling homkertable
compiling eval_hmblbp_spyr_subwindow
compiling detector_mlhmslbp_spyr
compiling eval_hmblgp_spyr_subwindow
compiling detector_mlhmslgp_spyr
compiling mblbp
compiling mblbp_ada_weaklearner
compiling mblbp_adaboost_binary_train_cascade
compiling mblbp_adaboost_binary_predict_cascade
compiling mblbp_featlist
compiling mblbp_gentle_weaklearner
compiling mblbp_gentleboost_binary_train_cascade
compiling mblbp_gentleboost_binary_predict_cascade
compiling rgb2gray
compiling fast_rotate
compiling haar_ada_weaklearner_memory
compiling haar_adaboost_binary_predict_cascade_memory
compiling haar_adaboost_binary_train_cascade_memory
compiling haar_gentle_weaklearner_memory
compiling haar_gentleboost_binary_predict_cascade_memory
compiling haar_gentleboost_binary_train_cascade_memory
compiling int8tosparse
compiling fast_haar_ada_weaklearner
compiling fast_haar_adaboost_binary_train_cascade
compiling train_dense
Failed to compile mex-files, unzip precompiled mex64
Error using checkfilename>validateFilename (line 182)
Function UNZIP was unable to find file 'mexw64.zip'.

Error in checkfilename (line 50)
[fullfilename, fid] = validateFilename( ...

Error in parseUnArchiveInputs (line 82)
[archiveFilename, url] = checkfilename(archiveFilename, validExtensions, ...

Error in unzip (line 58)
[zipFilename, outputDir, url, urlFilename] = parseUnArchiveInputs( ...

Error in setup_fdt (line 80)
unzip('mexw64.zip' , conf.path);
in my downloded Objects/Faces detection toolbox v 0.28 ,I donn't see the 'mexw64.zip'fiel,Would you please help me to check it? Thank you so much

25 Feb 2015 alexmarco

Hi, in the new matlab version (R2014b), in the function getmapping, BITSHIFT(A,K,N) is no more supported. It asks to use BITSHIFT(A,K,ASSUMEDTYPE) instead.

Which is the value to use?

thanks

Comment only
09 Oct 2014 Lin

Lin (view profile)

When I ran setup_fdt, met an error as:
"Function UNZIP was unable to find file 'mexw64.zip'."
Would you please help me to check it? Thank you so much.
By the way, I use MATLAB 7.8 and VC2010

29 Aug 2014 Ngoc Nam Bui

Thank you for your great toolbox, but I have some problem with the 2.8 version.

I cannt find the model model_detector_haar_24x24.mat. I tried to build the model using Example 3 in train_cascade. Then using this model and run demo_detector_haar I have this error:
Error using detector_haar
sum(cascade(1 , :)) <= T
Error in demo_detector_haar (line 83)
pos = detector_haar(rgb2gray(aa) , model);

Would you please check it? Thank you so much.

01 Aug 2014 farzan

farzan (view profile)

 
26 Jan 2014 Liu Liu

thanks for your kindly reply.

Comment only
24 Jan 2014 Sebastien PARIS

Sebastien PARIS (view profile)

Liu Liu

Probably, I didn't really test this function... it's in beta stage ... If you find some bug/improvements for this, I can update with your work

Comment only
24 Jan 2014 Liu Liu

In other words, the numerator should be "options.fpperim" in the equation of "options.fppw_mean".What do you think, Sebastien PARIS?

24 Jan 2014 Liu Liu

Excuse me, I want to ask you a question.
In function "function options = perf_dr_fa(options , model)",there is a definition of "options.fppw_mean".

Why do you use
"options.fppw_mean = mean(options.tpperim./options.totalscan , 2);" instead of "options.fppw_mean = mean(options.fpperim./options.totalscan , 2);"?

29 Dec 2013 MORISUNNER DEFENSE  
12 Nov 2013 Wang Xiong

Hi! Where is the "vcapg2w32.zip" ? I don't finde it. Thanks!

Comment only
21 Oct 2013 Sebastien PARIS

Sebastien PARIS (view profile)

Yuan,

You are right, the mat file is missing. You can retrain the model. I will also update the zip file including it
Thanks

Comment only
16 Oct 2013 yuan

yuan (view profile)

Hello,
I have the same issue with Tanushri.
When I try to run the demo_haar as well as demo_mblbp.m files, it says:

Error using load
Unable to read file model_detector_mblbp_24x24_4: No such file or directory.
similarly is the case for model_detector_haar_24x24.

Do I need to build the model first before running the demo?

Thanks!

Comment only
23 May 2013 haha

haha (view profile)

I was trying to, if i come up with an answer, I will be glad to share it with you

22 May 2013 Sebastien PARIS

Sebastien PARIS (view profile)

Unfortunatly with two branches ... The table lookup version is much better.. If you want to do it with my toolbox, I will include your work :)

Comment only
22 May 2013 haha

haha (view profile)

Thank you a lot for answering, but did you just use the simple decision stump with two branches as weaklearner other than the lookup table like learner?

Comment only
22 May 2013 haha

haha (view profile)

 
21 May 2013 Sebastien PARIS

Sebastien PARIS (view profile)

haha,

My choice of decision tree as weaklearner for MB-LBP is not the best one coz LBP values span a non continous space. There is another choice of weak-learner but I didn't implement it

Comment only
21 May 2013 haha

haha (view profile)

Hello, I really appreciate your work a lot as I have stuck by the weak classifier of MB-LBP for a long time. I noticed that you have refered an article Face Detection Based on Multi-Block LBP Representation, did you use the week classifier of multi-branch decision trees in your code?
Thank you a lot for answering my question!

20 May 2013 Sebastien PARIS

Sebastien PARIS (view profile)

Mina,

I know there are some problems when linking with the inshipped BLAS/LAPACK Lib. Please install the last intel MKL version and link like

mex -v -DOS64 -DOMP fast_haar_adaboost_binary_train_cascade.c "C:\Program Files (x86)\Intel\Composer XE 2013\mkl\lib\intel64\mkl_core.lib" "C:\Program Files (x86)\Intel\Composer XE 2013\mkl\lib\intel64\mkl_intel_lp64.lib" "C:\Program Files (x86)\Intel\Composer XE 2013\mkl\lib\intel64\mkl_intel_thread.lib" -largeArrayDims

Comment only
09 May 2013 Mina

Mina (view profile)

Hi,Sebastien.

I try to use the example 1 in train_cascade. However, Matlab crashes on fast_haar_ada_weaklearner mex-file and I get Segmentation error, this happens on BLASCALL.

Here is my system info:
MATLAB Version: 8.0.0.783 (R2012b)
Operating System: Microsoft Windows 7 Version 6.1 (Build 7601: Service Pack 1)
Java Version: Java 1.6.0_17-b04 with Sun Microsystems Inc. Java HotSpot(TM) 64-Bit Server VM mixed mode.

Thanks in advance.

Comment only
28 Mar 2013 Tanushri

Hello,
When I try to run the demo_haar as well as demo_mblbp.m files, it says:

Error using load
Unable to read file model_detector_mblbp_24x24_4: No such file or directory.
similarly is the case for model_detector_haar_24x24.

Kindly help in this regard

Comment only
27 Mar 2013 qi

qi (view profile)

hi,Sebastien,when I run the train_cascade.m, I set the specific parameters as follows: options.algoboost = 2,The initial number of negative samples are 2500,The initial number of postives samples are 2500,options.rect_param =[ 19 types of features];
options.maxstage = 9;When the code run the stage=6,the results as follow:generate_data_cascade2 6 in 5132.308 s
Train weaklearner 1 in 2.969 s
stage 6/9, m = 1, alpham = 1.0000
stage 6/9, m = 1, betam = 0.0000
Train weaklearner 2 in 3.074 s
stage 6/9, m = 2, alpham = 1.0000
stage 6/9, m = 2, betam = 0.0000
Train weaklearner 3 in 3.074 s
stage 6/9, m = 3, alpham = 1.0000
stage 6/9, m = 3, betam = 0.0000
Train weaklearner 4 in 3.130 s
stage 6/9, m = 4, alpham = 1.0000
stage 6/9, m = 4, betam = 0.0000
Train weaklearner 5 in 3.088 s
stage 6/9, m = 5, alpham = 0.9010
stage 6/9, m = 5, betam = 0.0020
Train weaklearner 6 in 3.094 s
stage 6/9, m = 6, alpham = 0.7920
stage 6/9, m = 6, betam = 0.0080
Train weaklearner 7 in 3.127 s
stage 6/9, m = 7, alpham = 0.6550
stage 6/9, m = 7, betam = 0.0090
Train weaklearner 8 in 3.116 s
stage 6/9, m = 8, alpham = 0.7340
stage 6/9, m = 8, betam = 0.0090
Train weaklearner 9 in 3.113 s
stage 6/9, m = 9, alpham = 0.6600
stage 6/9, m = 9, betam = 0.0080
Train weaklearner 10 in 3.100 s
stage 6/9, m = 10, alpham = 0.6530
stage 6/9, m = 10, betam = 0.0090
Train weaklearner 11 in 3.140 s
stage 6/9, m = 11, alpham = 0.7430
stage 6/9, m = 11, betam = 0.0090
Train weaklearner 12 in 3.191 s
stage 6/9, m = 12, alpham = 0.7500
stage 6/9, m = 12, betam = 0.0090
Train weaklearner 13 in 3.049 s
stage 6/9, m = 13, alpham = 0.6300
stage 6/9, m = 13, betam = 0.0090
Train weaklearner 14 in 3.194 s
stage 6/9, m = 14, alpham = 0.5940
stage 6/9, m = 14, betam = 0.0090
Train weaklearner 15 in 3.241 s
stage 6/9, m = 15, alpham = 0.5550
stage 6/9, m = 15, betam = 0.0090
Train weaklearner 16 in 3.129 s
stage 6/9, m = 16, alpham = 0.6050
stage 6/9, m = 16, betam = 0.0090
Train weaklearner 17 in 3.128 s
stage 6/9, m = 17, alpham = 0.5730
stage 6/9, m = 17, betam = 0.0090
Train weaklearner 18 in 3.154 s
stage 6/9, m = 18, alpham = 0.5690
stage 6/9, m = 18, betam = 0.0090
Train weaklearner 19 in 3.104 s
stage 6/9, m = 19, alpham = 0.6060
stage 6/9, m = 19, betam = 0.0090
Train weaklearner 20 in 3.251 s
??? Attempted to access
options.betaperstage(6); index out of
bounds because
numel(options.betaperstage)=5.

Error in ==> train_cascade at 547
options.stat(: , nb_stage) =
[stat(:) ;
options.betaperstage(nb_stage) ;
options.alphaperstage(nb_stage)];
Have you met such problem some times ago?How can I improve it? Thanks.

Comment only
27 Mar 2013 qi

qi (view profile)

 
14 Mar 2013 Sebastien PARIS

Sebastien PARIS (view profile)

Neo,

I will have a look to your problem...
Can u send me your exact parameters variable ?

Comment only
05 Mar 2013 Neo

Neo (view profile)

Hi,Sebastien.
I try to use the example 1 in train_cascade. However, It's pop up alert like below:
Attempted to access ufx(3); index out of bounds because numel(ufx)=2.

Error in train_stage_cascade (line 181)
currentthresh = ufx(co);

Error in train_cascade (line 532)[options , Xfa] = train_stage_cascade(Xtrain , ytrain , Xtest , ytest ,
options);

Error in Try_face_dect (line 103)
[options , model]= train_cascade(options);

Please help me since I cannot found the reason.

23 Feb 2013 qi

qi (view profile)

Hi,Sébastien,I find the results are different when I debug the train_cascade.m in liunx(64bits) and in xp(32bits). The code is same . Can you tell me why? Thanks.

25 Nov 2012 Nagesh

Nagesh (view profile)

Hi,Please reply for my previous post...

Comment only
19 Oct 2012 Sebastien PARIS

Sebastien PARIS (view profile)

J : Did you download the last version ?

Comment only
15 Oct 2012 J

J (view profile)

i use the example 1 in train_cascade.m
all positive pictures are 24x24
just change the number of training and testing to be smaller
but it always came out the error message as follows
??? Attempted to access options.betaperstage(1); index out of bounds because numel(options.betaperstage)=0.

Error in ==> train_cascade at 527
options.stat(: , nb_stage) = [stat(:) ; options.betaperstage(nb_stage) ; options.alphaperstage(nb_stage)];

can anyone help me i can't figure it out

Comment only
10 Oct 2012 Nagesh

Nagesh (view profile)

Its very nice Toolbox for face detection,It shows your tremendous effort for that.....Thank You very much for such a good Toolbox
I am referring IEEE paper which uses 20by20 image rather than 24by24 &
5 Haar like (rectangular)features...
Your toolbox is for 24by24 &
2 Haar like features (Whether I am Right?)
So how can I use this toolbox for 20by20 image & 5 Haar like features
([1 2][2 1][1 3][3 1][2 2])
& from where i can download the dataset of 20by20 images...

Comment only
07 Oct 2012 Xiaobai

hi,paris
sorry to bother you again. There's a questions about viola_24x24.mat i want to ask you. Pictures of faces and nonfaces, where do they come from?Did you collect them yourself or you use a popular database like Feret or PIE ?

Comment only
05 Oct 2012 Sebastien PARIS

Sebastien PARIS (view profile)

Re-open the Haar_dico4 with the GUI, you will understand ....

Comment only
05 Oct 2012 Xiaobai

I'm afraid u are right. I don't quite know how to use it. But i figure out what the haar_dico_4.mat does. Are they same?? Can u please give me a demo of how to use gui_features_dictionary.m? Thank you..

Comment only
02 Oct 2012 qi

qi (view profile)

Dear Sir,
When I debug the omp.c,the result is :omp.c(10) : fatal error C1021: Invalid preprocessor command“#warning” .I try to modify it ,but the result also can not pass,please help me,thanks!

Comment only
02 Oct 2012 Sebastien PARIS

Sebastien PARIS (view profile)

Xiaobai,

Did you run the small utiliy to design Haar patterns in \gui\gui_features_dictionary.m ?

I think you can design such patterns with it (not completly sure)

Comment only
29 Sep 2012 Xiaobai

dear Sebastien
I gotta say this toolbox is really of a great help to me. Now i wanna know if your code can compute 45o rotated Haar-like features because I only figued out how to use your code to compute upright figures. Hope u can help me out!! Thx in advance.

Comment only
18 Sep 2012 Sebastien PARIS

Sebastien PARIS (view profile)

xiaobai,

An update will appear with the 2 missing files. Look at demo_haar.html to understand how to compute haar features.

Comment only
17 Sep 2012 Xiaobai

your work is excellent!!
but how come i can't find 'haar_dico_2.mat' negatives.zip and model_detector_haar_24x24 ?
Did you forget or something?
I'v been working on a project lately and i need to compute haar features of 20*20 samples? I don't know which part of your code does this job...sorry i'm not to good at matlab..

15 Sep 2012 qi

qi (view profile)

dear Sebastien
I want to download your new updated Objects/Faces detection toolbox and some references ,but I can not find the address,please send them to my email :
qiguangjing123@126.com,thank you very much.

Comment only
13 Sep 2012 Sebastien PARIS

Sebastien PARIS (view profile)

qi,

With a such rating, you should try another toolbox, or even better do yourself....

Comment only
12 Sep 2012 qi

qi (view profile)

hi,paris
I saw the Elapsed time of the Sixth example in the demo_haar.m is 612.424368 seconds On the Internet ,but when I try it,the result is (Elapsed time) 2727.809425 seconds. Please help me to find the reasons,thanks.

03 Sep 2012 amin

amin (view profile)

Hi can someone explain to me this error:
Error using detector_haar
sum(cascade(1 , :)) <= T

Error in train_cascade_Example_1 (line 46)
tic,[D , stat] = detector_haar(I , model);,toc

Comment only
03 Sep 2012 J

J (view profile)

I'm sorry it doesn't work too.
Could you provide a simple example?
thanks

Comment only
14 Aug 2012 Parker

Parker (view profile)

Did you forget negatives.zip in latest build?

Comment only
13 Aug 2012 Sebastien PARIS

Sebastien PARIS (view profile)

I just uploaded a new version. Hope will fix all the problems. Thank you for reporting.

Comment only
13 Aug 2012 J

J (view profile)

train_cascade
alpha0=0.8
beta0=0.01
actually the all parameters are the same as Example 1 in train_cascade.m

Comment only
12 Aug 2012 Sebastien PARIS

Sebastien PARIS (view profile)

J,

What kind of cascade are you using ?
What are the values of alpha0 and beta0 ?

Comment only
09 Aug 2012 J

J (view profile)

Hi Sébastien
I have update to version 0.25
but with using the same training code
with Npostrain=Nnegtrain=1000
it runs perfectly in version 0.24 but not in 0.25
follows are the error message

??? Attempted to access options.betaperstage(1); index out of bounds because numel(options.betaperstage)=0.

Error in ==> train_cascade at 527
options.stat(: , nb_stage) = [stat(:) ; options.betaperstage(nb_stage) ;
options.alphaperstage(nb_stage)];

thanks

Comment only
27 Jul 2012 payam

payam (view profile)

 
17 Jul 2012 Fa Fa

Fa Fa (view profile)

Hi Sebastien,
i need to create 511 binary Lookup table, for modified census transform feature and to work with adaboost with training images.
please can you help me?
Thanks

Comment only
03 Jul 2012 J

J (view profile)

 
29 Jun 2012 Sebastien PARIS

Sebastien PARIS (view profile)

For the last stages of the cascade ... since the FA rate is very low ..., main time is spended to collect FA....

Comment only
11 Jun 2012 J

J (view profile)

positive is 24*24 have 40 pictures.
negative is less than 500*500 have 1000 pictures.
most training time is on negative part.

Comment only
07 Jun 2012 Sebastien PARIS

Sebastien PARIS (view profile)

What is the size of your pattern ? (24x24) ?

Comment only
04 Jun 2012 J

J (view profile)

Thanks for answering.
But know i have another question.
I'm using "train_cascade" training my own model. And I change Nnegtrain into 1000.
Is it normal that it will take several days for training?
(I mean main loop in train_cascade)

Comment only
30 May 2012 Sebastien PARIS

Sebastien PARIS (view profile)

J,

It's a know problem. I have to update a new version well I will find some moments.

As workaround, change the while loop by

while((currentbeta < beta0) && (lufx <= (co+1)))

Sébastien

Comment only
25 May 2012 J

J (view profile)

HI
i'm trying to train my own model using train_cascade
i use the default value in nargin but change a little bit.
posext into bmp. Npostrain=Nnegtrain=25. Npostest=Nnegtest=15.
With these it cames out the error message 'Attempted to access ufx(3); index out of bounds because numel(ufx)=2.' in train_stage_cascade at 170.
i can't figure out this problem.
thanks.

BTW is the negative picture number must equals to the positive picture number?

Comment only
17 Apr 2012 Sebastien PARIS

Sebastien PARIS (view profile)

Lucas,

You are right, I will change the description in Haar_featlist and dependencies

ny Number of rows of the pattern (default ny = 24)
nx Number of columns of the pattern (default nx = ny)
rect_param Features rectangles parameters (10 x nR), where nR is the total number of rectangles for the patterns.
(default Vertical(2 x 1) [1 ; -1] and Horizontal(1 x 2) [-1 , 1] patterns)
rect_param(: , i) = [ip ; wp ; hp ; nrip ; nr ; xr ; yr ; wr ; hr ; sr], where
if index of the current Haar's feature. ip = [1,...,nF], where nF is the total number of Haar's features
wp width of the current rectangle pattern defining current Haar's feature
hp height of the current rectangle pattern defining current Haar's feature
nrif total number of rectangles for the current Haar's feature if
nr index of the current rectangle in the current Haar's feature, nr=[1,...,nrif]
xr,yr top-left coordinates of the current rectangle of the current pattern
wr,hr width and height of the current rectangle of the current pattern
sr weights of the current rectangle of the current pattern

Please run gui_features_dictionary in the \gui subdir to build such parameters

Outputs
-------

F Features's list (6 x nF) in UINT32 where nF designs the total number of Haar features
F(: , i) = [if ; xf ; yf ; wf ; hf ; ir]
if index of the current feature, if = [1,....,nF] where nF is the total number of Haar's features (see nbfeat_haar function)
xf,yf top-left coordinates of the current Haar's feature
wf,hf width and height of the current feature Haar's feature
ir Linear index of the FIRST rectangle of the current Haar's feature according rect_param definition. ir is used internally in Haar function
(ir/10 + 1) is the matlab index of this first rectangle

Comment only
13 Apr 2012 Lucas Chai

Am I clear? I mean in function F = haar_featlist([ny] , [nx] , [rect_param]), the first parameter of the output F in ur description is iF(1,..,nF), but the result value shows it is actually the ip (index of the pattern in options.rect_param), u can check it.

And for the last parameter ir, if (ir/10+1)is given, the meaning is obvious, thanx again

13 Apr 2012 Sebastien PARIS

Sebastien PARIS (view profile)

Tsai,

Let me clarify :
ir Linear index of the FIRST rectangle of the current Haar feature according rect_param definition. ir is used internally in Haar function. (ir/10 + 1) is the matlab index of this first rectangle

Hope will help you ...

Comment only
13 Apr 2012 Lucas Chai

Dear Mr Paris,
for the 'haar_featlist' function below, the first and the last parameter of the output are confusd, i read the description of F, the first parameter is ip, but in ur files it is if, and the last parametr is ir index of rectangle definition of the current feature in rect_param, but the value is 0,20,40,70,100, not sure about it. Wud u pls spare some time for more explanations. Thanx

options.F = haar_featlist(Ny , Nx , options.rect_param);

13 Apr 2012 Sebastien PARIS

Sebastien PARIS (view profile)

Tsai,

If compilation with -DOMP was succesfull, now you can add a num_threads = number of core in the options structure. Please open *.c header for full instructions.

Comment only
13 Apr 2012 Lucas Chai

Hi, Mr Paris,
Can I ask how to set the OpenMP available?
The compiling result is ok, but not any information on openMP

21 Mar 2012 Sebastien PARIS

Sebastien PARIS (view profile)

levgenia,

Yes you have to fill the positives folder. Please read the readme.txt to find datasets of positives samples for face detection.

Comment only
19 Mar 2012 Ievgeniia

Hello,

Thank you very much for the tool!
I have a question regarding positives folder. It seems to be empty. Thus, I receive an error when executing, for instance, example 1 from train_cascade.
What am I doing wrong?
Thanks in advance

Comment only
01 Mar 2012 Hussein

Dear Sir,

Its Working Good Now, Thank You So Much For This An Amazing Tool, I Appreciate Your Effort !!

Warmest Regards,

29 Feb 2012 Sebastien PARIS

Sebastien PARIS (view profile)

It should worlks .... How is the light condition? try something with normal light....

Comment only
29 Feb 2012 Hussein

Dear Sir,
Thank you for your instant reply, i located the codes and it compiled perfectly,

Thank You..

I still have one last question, when i run Demo_Detector_haar, it runs fine and have no errors but why i could not see the GREEN square ? do i have to do something with the codes to make that square display ?? ..

Thanks in advance Sir ..

Comment only
29 Feb 2012 Sebastien PARIS

Sebastien PARIS (view profile)

Hussain,

There is an error in mexme_fdt for Linux system (sorry I don't have any Linux/MacOs box). I have to update with others small bugfixes. Please locate

if(ispc)
...
else
libblas = '-lmwblas';
end

should work after ...

Sébastien

Comment only
28 Feb 2012 Hussein

Dear Sir,
I followed your instructions but when i run setup_fdt
it shows

>> setup_fdt
Unzipping negatives picts ...
Compile mex files ...
>>

is it supposed to be like this ?? because i could not see any compiling process !! im using Mac os x 10.6.8 Snow Leo, Matlab 2011a and gcc compiler ..

also when i run mexme_fdt it shows

>> mexme_fdt
??? Undefined function or variable "libblas".

Error in ==> mexme_fdt at 143
str = [str , files1{i} , '.c ' , libblas , strOMP];

please HELP !!

Comment only
12 Jan 2012 Sebastien PARIS

Sebastien PARIS (view profile)

Hello,

As written in the description :
"For Windows system, default LCC compiler included in matlab can't compile all files, you should have some errors during installation.
".
Please choose a modern compiler, MSVC express for example which is free

Comment only
11 Jan 2012 kgan

kgan (view profile)

I followed the earlier instructions however i keep on having the same error

Unzipping negatives picts ...
Compile mex files ...
compiling chlbp
compiling chlbp_adaboost_binary_train_cascade
compiling chlbp_adaboost_binary_predict_cascade
compiling chlbp_gentleboost_binary_train_cascade
compiling chlbp_gentleboost_binary_predict_cascade
compiling detector_haar
compiling detector_mblbp
compiling eval_chlbp
compiling eval_haar
compiling eval_haar_subwindow
compiling eval_mblbp
compiling eval_mblbp_subwindows
compiling haar
compiling haar_ada_weaklearner
compiling haar_adaboost_binary_train_cascade
compiling haar_adaboost_binary_predict_cascade
compiling haar_featlist
compiling haar_gentle_weaklearner
compiling haar_gentleboost_binary_train_cascade
compiling haar_gentleboost_binary_predict_cascade
compiling haar_scale
compiling imresize
compiling area
compiling homkermap
compiling homkertable
compiling eval_hmblbp_spyr_subwindow
compiling detector_mlhmslbp_spyr
compiling mblbp
compiling mblbp_ada_weaklearner
compiling mblbp_adaboost_binary_train_cascade
compiling mblbp_adaboost_binary_predict_cascade
compiling mblbp_featlist
compiling mblbp_gentle_weaklearner
compiling mblbp_gentleboost_binary_train_cascade
compiling mblbp_gentleboost_binary_predict_cascade
compiling rgb2gray
compiling fast_rotate
compiling haar_ada_weaklearner_memory
compiling haar_adaboost_binary_predict_cascade_memory
compiling haar_adaboost_binary_train_cascade_memory
compiling haar_gentle_weaklearner_memory
compiling haar_gentleboost_binary_predict_cascade_memory
compiling haar_gentleboost_binary_train_cascade_memory
compiling int8tosparse
compiling fast_haar_ada_weaklearner
compiling fast_haar_adaboost_binary_train_cascade
compiling train_dense
Error linear.cpp: .\tron.h: 4 syntax error; found `function' expecting `;'
Error linear.cpp: .\tron.h: 5 syntax error; found `{' expecting `;'
Error linear.cpp: .\tron.h: 5 skipping `{'
Error linear.cpp: .\tron.h: 6 syntax error; found `:' expecting `;'
Error linear.cpp: .\tron.h: 6 skipping `:'
Error linear.cpp: .\tron.h: 7 syntax error; found `double' expecting `;'
Error linear.cpp: .\tron.h: 7 illegal initialization for `fun'
Error linear.cpp: .\tron.h: 7 syntax error; found `0' expecting `;'
Error linear.cpp: .\tron.h: 7 unrecognized declaration
Warning linear.cpp: .\tron.h: 7 empty declaration
Error linear.cpp: .\tron.h: 8 syntax error; found `void' expecting `;'
Error linear.cpp: .\tron.h: 8 illegal initialization for `grad'
Error linear.cpp: .\tron.h: 8 syntax error; found `0' expecting `;'
Error linear.cpp: .\tron.h: 8 unrecognized declaration
Warning linear.cpp: .\tron.h: 8 empty declaration
Error linear.cpp: .\tron.h: 9 syntax error; found `void' expecting `;'
Error linear.cpp: .\tron.h: 9 illegal initialization for `Hv'
Error linear.cpp: .\tron.h: 9 syntax error; found `0' expecting `;'
Error linear.cpp: .\tron.h: 9 unrecognized declaration
Warning linear.cpp: .\tron.h: 9 empty declaration
Error linear.cpp: .\tron.h: 11 syntax error; found `int' expecting `;'
Error linear.cpp: .\tron.h: 11 illegal initialization for `get_nr_variable'
Error linear.cpp: .\tron.h: 11 syntax error; found `0' expecting `;'
Error linear.cpp: .\tron.h: 11 too many errors

C:\PROGRA~1\MATLAB\R2010B\BIN\MEX.PL: Error: Compile of 'linear.cpp' failed.

Failed to compile mex-files, unzip precompiled mex32

i am using matlab 2010b and LCC compiler for windows

Comment only
17 Nov 2011 Claude Rico

I am a final year student and hope to graduate if i finish my thesis project... can anyone help me how to make a real time face recognition with a displayed information in an extracted face... thanks and God bless!

Comment only
28 Oct 2011 guofeng ma

Dear Paris
By the way, if there is a detailed demon about the ROC drawing. I will be a great help.

Comment only
28 Oct 2011 Sebastien PARIS

Sebastien PARIS (view profile)

Guofeng,

I just uploaded the version v0.22 with more examples especially how to use train_cascade.m. This update will appear in a couple of hours.

Comment only
27 Oct 2011 guofeng ma

i want train a face detector using new data set(haar feature,adaboost and gentleboost,conventional cascade),but do give a demo?
my email mgf9788@hotmail.com

Comment only
27 Oct 2011 guofeng ma

Please help it.
I run the "train_cascade.m Example 1" source code(options.usefa=1 and options.algoboost=0or1,2),but,Xfa is all face images(generate_data_cascade.m). is this right?

13 Oct 2011 guofeng ma

Thank you for an answer.
I do not have any problem in myNootBook windowsVista 32. However, I cannot run it in myDeskPC windows7 64.and Compiling it does not have any problem in windows7 64.

Comment only
13 Oct 2011 Sebastien PARIS

Sebastien PARIS (view profile)

ma,

For win32 system, your example is working. I have to check for win64. Thanks for reporting.
N.B. The version 0.3 is upcoming.

Comment only
13 Oct 2011 guofeng ma  
13 Oct 2011 guofeng ma

Please help it.
I become the error when I run the next source code, and Matlab is over.

load viola_24x24
load haar_dico_2

[Ny , Nx , P] = size(X);
II = image_integral_standard(X);
y = int8(y);
options.G = haar_matG(Ny , Nx , rect_param);
options.indexF = int32(0:size(options.G , 2)-1);
options.fine_threshold = 1;
w = (1/length(y))*ones(1 , length(y));

tic,[model , wnew] = fast_haar_ada_weaklearner(II , y , w , options);,toc

I think that it is the issue of fast_haar_ada_weaklearner no.

YmPC information
windows 7 64
Matlab R2011b Compiler:Microsoft Visual C++ 2010 Express in C:Program Files (x86) \Microsoft Visual Studio 10.0

Comment only
13 Sep 2011 Mr Smart  
26 Aug 2011 Sebastien PARIS

Sebastien PARIS (view profile)

Some protections ? what do u mean ?. This code is open, no special protection. which function are u using ?

Sebastien

Comment only
26 Aug 2011 TSE

TSE (view profile)

Dear Paris,I was working with your code and try to improve the function of lbp_feature, but I cant make it work it seems that you implemented some protection of your code,if so could you tell me how to remove them?

19 Jul 2011 Sebastien PARIS

Sebastien PARIS (view profile)

Tsai ... Unfortunetly no. But I don't think training will talk weeks ... especially with the multi-core support.

Comment only
11 Jul 2011 Lucas Chai

problem solved~ i still donno why. i just put the fold to the root DIR, and it works ok~ And Mr Paris, if i train the face detecter using adaboost for a few weeks, and due to some reasons(like the electricity is cut off), what I can do to continue the boosting progress using ur program

10 Jul 2011 Lucas Chai

don't konw why, always appears C:\Users\Tsai\AppData\Local\Temp\mex_wzxP6o\chlbp.obj "D:\Program Files\MATLAB\R2008a\extern\lib\win32\microsoft\libmwblas.lib"
LINK : fatal error LNK1104: cannot open file "chlbp.mexw32"

Comment only
23 Jun 2011 Sebastien PARIS

Sebastien PARIS (view profile)

Never tried with an IP-camera. If you know how to get a frame, there should not have any problem. All USB webcam should work too. For the last question, no limitation is imposed.

Comment only
17 Jun 2011 Javier Rivera

Hi there! I was wondering what kind of webcam I can use with this toolbox. I have a webcam that is accessed from an address (i.e. 111.222.333.444), and I want to know if it is possible to use this code with it, or just USB webcams. Also, how many faces can it detect from a single camera?

Comment only
08 May 2011 Nitin

Nitin (view profile)

 
04 May 2011 Steve

Steve (view profile)

 
04 May 2011 Sebastien PARIS

Sebastien PARIS (view profile)

Raida : please install the free msvc express compiler (you should try to find the 2005 express since your are using 2009b). Then type mex -setup in matlab command.
Run setup_fdt after

Comment only
04 May 2011 Raida Al Alawi

Dear

My OS is Windows 7 (6 bits)
I am using R2009b version

I run setup_fdt and I got a series of warnings followed by the following error

Compile mex files ...
compiling chlbp
cannot open output file chlbp.mexw32:

C:\PROGRA~2\MATLAB\R2009B\BIN\MEX.PL: Error: Link of 'chlbp.mexw32' failed.

Failed to compile mex-files, unzip precompiled mex32

Then I run mexme_fdt and I got the following:

compiling chlbp
cannot open output file chlbp.mexw32:

C:\PROGRA~2\MATLAB\R2009B\BIN\MEX.PL: Error: Link of 'chlbp.mexw32' failed.

??? Error using ==> mex at 221
Unable to complete successfully.

Error in ==> mexme_fdt at 146
eval(['mex ' str])

Can you please help me in installing and using the toolbox

Regards

Comment only
02 May 2011 Sebastien PARIS

Sebastien PARIS (view profile)

Chirath : what is your system ? Matlab version and compiler ?. I think you must use included LCC compiler. Please use the free msvc compiler instead.

Comment only
02 May 2011 Chirath Dharshana

Hi Sebastian,
For our project we need to use the face detection tool.
When we tried to compile mex files, following errors occured.

Error linear.cpp: .\tron.h: 4 syntax error; found `function' expecting `;'
Error linear.cpp: .\tron.h: 5 syntax error; found `{' expecting `;'
Error linear.cpp: .\tron.h: 5 skipping `{'
Error linear.cpp: .\tron.h: 6 syntax error; found `:' expecting `;'
Error linear.cpp: .\tron.h: 6 skipping `:'
Error linear.cpp: .\tron.h: 7 syntax error; found `double' expecting `;'
Error linear.cpp: .\tron.h: 7 illegal initialization for `fun'
Error linear.cpp: .\tron.h: 7 syntax error; found `0' expecting `;'
Error linear.cpp: .\tron.h: 7 unrecognized declaration
Warning linear.cpp: .\tron.h: 7 empty declaration
Error linear.cpp: .\tron.h: 8 syntax error; found `void' expecting `;'
Error linear.cpp: .\tron.h: 8 illegal initialization for `grad'
Error linear.cpp: .\tron.h: 8 syntax error; found `0' expecting `;'
Error linear.cpp: .\tron.h: 8 unrecognized declaration
Warning linear.cpp: .\tron.h: 8 empty declaration
Error linear.cpp: .\tron.h: 9 syntax error; found `void' expecting `;'
Error linear.cpp: .\tron.h: 9 illegal initialization for `Hv'
Error linear.cpp: .\tron.h: 9 syntax error; found `0' expecting `;'
Error linear.cpp: .\tron.h: 9 unrecognized declaration
Warning linear.cpp: .\tron.h: 9 empty declaration
Error linear.cpp: .\tron.h: 11 syntax error; found `int' expecting `;'
Error linear.cpp: .\tron.h: 11 illegal initialization for `get_nr_variable'
Error linear.cpp: .\tron.h: 11 syntax error; found `0' expecting `;'
Error linear.cpp: .\tron.h: 11 too many errors

C:\PROGRA~1\MATLAB\R2010A\BIN\MEX.PL: Error: Compile of 'linear.cpp' failed.

Failed to compile mex-files, unzip precompiled mex32

-----------------------------------

Please help us.
Thank you in advance.

Comment only
21 Apr 2011 Sebastien PARIS

Sebastien PARIS (view profile)

Van: Yes for me these 2 files merged are my positives (there are some negatives also inside but I don't use them really)

I didn't know this paper. The idea is good to use "meta" haar features, but if I understand correctly you'll have much more features. Actually you have to modify mode code to create such features. I don't think it's really hard but should be very memory requiering

Comment only
21 Apr 2011 Van

Van (view profile)

 
20 Apr 2011 Van

Van (view profile)

Hi Sebastien,
Thank you for your quick response. As I understand, these 2 files, viola_24x24, and jesen_24x24, are face databse in gray scale. Matrix x is face image, and y is idicator whether or not it's a posotive or negative. Am I right?
For increasing efficient of detection, I'd read some papers, one of them is:
Joint Haar-like Features for Face Detection
URL: dtpapers.googlecode.com/files/01544911.pdf
The paper above is introduce some extend Haar-like feature to improve efficience of detection. So, I wonder where you define Haar-like feature, and how you define them.

Thank you,

Van Quach

Comment only
20 Apr 2011 Sebastien PARIS

Sebastien PARIS (view profile)

Van: You will need a such database for training your positives examples... I am sure they are a lot of such databases in the web. When you'll have, you maybe need to downscale each images to something close to 24x24 pixels

Sebastien

Comment only
20 Apr 2011 Van

Van (view profile)

Hi Paris,
Your code is very great. I learn a lot from your code. Regard to training haar detector, as I understood, before running train_cascade, we have to have 2 matrix: jensen_24x24 and viola_24x24 for detecting face. However, in my project, I intend to detect user's eyes, not the face. Could you please give me a hint how to create the matrix for training Haar detector? For more detail, I don't know how to create Xpos matrix for detecting eye:
----------------------
load viola_24x24
Xpos = X(: , : , find(y == 1));
load jensen_24x24
Xpos = cat(3 , Xpos , X(: , : , find(y == 1)));

...

[options , model] = train_cascade(Xpos , options);

-------
Thank you for your hard working :)

Comment only
13 Apr 2011 Sebastien PARIS

Sebastien PARIS (view profile)

Jingsong,

Thx for reporting, fixed in the next update.

Comment only
12 Apr 2011 Jingsong Xu

excellent work.

I meet one problem.
When I use chlbp.c, here is the samples in chlbp.c

clear, close all
load viola_24x24
Ny = 24;
Nx = 24;
options.N = [8 , 4 , 12];
options.R = [1 , 1 , 2];
options.map = zeros(2^max(options.N) , length(options.N));

mapping = getmapping(options.N(1),'u2');
options.map(1:2^options.N(1) , 1) = mapping.table';
options.map(1:2^options.N(2) , 2) = (0:2^options.N(2)-1)';
mapping = getmapping(options.N(3),'u2');
options.map(1:2^options.N(3) , 3) = mapping.table';
options.shiftbox = cat(3 , [Ny , Nx ; 1 , 1] , [16 , 16 ; 4 , 4] , [Ny , Nx ; 1 , 1]);

options.T = 50;

H = chlbp(X , options);

after this I type

H2 = chlbp(X(:,:,2) , options);

and i find H2 is different H(:,:,2)?why?

Comment only
07 Apr 2011 zhu ?

zhu ? (view profile)

nice work!!

Comment only
23 Feb 2011 Sebastien PARIS

Sebastien PARIS (view profile)

Daniel,

Whithin few days. I am finishing all the test and debugging.

Comment only
23 Feb 2011 Daniel

Daniel (view profile)

Thank you very much for your quick answer Sebastien. Do you know aproximately when are you going to upload the new version?

Thank you, I'm very pleased to use your software.

Comment only
23 Feb 2011 Sebastien PARIS

Sebastien PARIS (view profile)

Daniel,

A new major update is coming with better cascade training algorithms and plenty of other stuff.
However the actual parameter of demo_detector_haar should work for 1280x960 also

Comment only
22 Feb 2011 Daniel

Daniel (view profile)

Hi to everybody. Could anybody tell me which are the best input arguments for 'detector_haar' function to detect faces from a video source like this: 'vid = videoinput('winvideo', 1, 'RGB24_1280x960');'

I'm using demo_detector_haar and I don't know what's the best 'haar.model', 'cascade', 'min_detect', etc...

How can I know it? Have I do my own haar.model? how?

thank you very much for your work.

Comment only
12 Feb 2011 shri

shri (view profile)

hi am newbie please explain what feature_list func does? thanking you

Comment only
21 Dec 2010 Sebastien PARIS

Sebastien PARIS (view profile)

If I can remember well, there was some numerical discrepencies without if a long serie of the same class occurs....

Comment only
20 Dec 2010 Lucas Chai

in function haar_adaboost_binary_model_cascade(x,y),why do u do permutation? what is the difference without it?

Comment only
06 Dec 2010 zhu ?

zhu ? (view profile)

Hi, I confused on coventional cascade structure and multi-exit cascade structure. I need your kind to help me, I think they different like these:

Suppose that there are 10 Weaklearns: ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩

coventional cascade structure maybe like this:
layer-1 ①
layer-2 ② ③
layer-3 ④ ⑤ ⑥
layer-4 ⑦ ⑧ ⑨ ⑩

multi-exit cascade structure maybe like this:
layer-1 ①
layer-2 ① ② ③
layer-3 ① ② ③ ④ ⑤ ⑥
layer-4 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩

This is my idea,can you agree with me ?

Comment only
05 Dec 2010 zhu ?

zhu ? (view profile)

Hi Sebastien,
Which face databse you have used in your code? I found you use Viola_24×24.mat and Jensen_24×24.mat,but can you tell me they are come from which face database.

Comment only
30 Nov 2010 Lucas Chai

Sebastien Paris , wud pls upload the realadaboost code for training ? In this way, ur code will be more pupular

Comment only
28 Nov 2010 Sebastien PARIS

Sebastien PARIS (view profile)

Please compile mex files for your system (and more generaly, read full instruction in readme.txt)

run "mexme_fdt.m" after be sure that "mex -setup" had been done before.

Comment only
28 Nov 2010 Mariam Z

while tryin the demo_mblbp, i found the error' Undefined function or method 'mblbp_featlist' for input arguments of type 'double'...can u please help me wid it?

Comment only
27 Nov 2010 Sebastien PARIS

Sebastien PARIS (view profile)

Feel free to modify the code, it's an open and simple for that. However, I will say for you last remark, that the weaklearners selected by the fast algorithm and the classic gentleboost are almost the same (see HTML documentation)

Comment only
27 Nov 2010 zhu ?

zhu ? (view profile)

I confused on the way to select min error, i think it may be selected like this:
alpha = var1c - var2c;

beta = (m1c*var2c - m2c*var1c);

gamma = m2c*m2c*var1c - m1c*m1c*var2c + 2*var1c*var2c*log(ctep*(var2c/var1c));

std1c = 1.0/sqrt(var1c);
if(alpha==0)
{
x1=-gamma/(2*beta);
x2=x1;
std2c = std1c;
}
else
{
std2c = 1.0/sqrt(var2c);
delta = beta*beta - alpha*gamma;
if(delta==0)
{
x1=(m1c+m2c)/2;
x2=x1;
}
else
{
delta=abs(delta);
sqrtdelta = sqrt(delta);
x1 = (-beta + sqrtdelta)/(alpha);
x2 = (-beta - sqrtdelta)/(alpha);
}
}


if(m1c>m2c)
{
if(x1=x2)
{
err11= 0.5*(p2*(1.0 - erf((x1 - m2c)*std2c)) + p1*(1.0 + erf((x1 - m1c)*std1c)));
err10=err11;
Err1=err11;
Err2=Err1;
opt1=1;
opt2=opt1;
temp_th=x1;
opt=opt1;
tempmin=Err1;

}
else
{
err11= 0.5*(p2*(1.0 - erf((x1 - m2c)*std2c)) + p1*(1.0 + erf((x1 - m1c)*std1c)));
err10=err11;
Err1=err11;
opt1=1;
err21= 0.5*(p2*(1.0 - erf((x2 - m2c)*std2c)) + p1*(1.0 + erf((x2 - m1c)*std1c)));
err20= 0.5*(p2*(1.0 + erf((x2 - m2c)*std2c)) + p1*(1.0 - erf((x2 - m1c)*std1c)));
if(err21<err20)
{
Err2=err21;
opt2=1;
}
else
{
Err2=err20;
opt2=-1;
}
if(Err1<Err2)
{
tempmin=Err1;
opt=opt1;
temp_th=x1;
}
else
{
tempmin=Err2;
opt=opt2;
temp_th=x2;
}
}
}
else
{
if(x1=x2)
{
err20= 0.5*(p2*(1.0 + erf((x2 - m2c)*std2c)) + p1*(1.0 - erf((x2 - m1c)*std1c)));
err21=err20;
Err2=err20;
Err1=Err2;
opt2=-1;
opt1=opt2;
temp_th=x2;
opt=opt2;
tempmin=Err2;

}
else
{
err20= 0.5*(p2*(1.0 + erf((x2 - m2c)*std2c)) + p1*(1.0 - erf((x2 - m1c)*std1c)));
err21=err20;
Err2=err20;
opt2=-1;
err10= 0.5*(p2*(1.0 + erf((x1 - m2c)*std2c)) + p1*(1.0 - erf((x1 - m1c)*std1c)));
err11= 0.5*(p2*(1.0 - erf((x1 - m2c)*std2c)) + p1*(1.0 + erf((x1 - m1c)*std1c)));
if(err11<err10)
{
Err1=err11;
opt1=1;
}
else
{
Err1=err10;
opt1=-1;
}
if(Err1<Err2)
{
tempmin=Err1;
opt=opt1;
temp_th=x1;
}
else
{
tempmin=Err2;
opt=opt2;
temp_th=x2;
}
}
}


if(tempmin<Errormin)
{
Errormin=tempmin;
featuresIdx_opt = f;
th_opt = temp_th;
a_opt = opt;
}

Comment only
27 Nov 2010 zhu ?

zhu ? (view profile)

i still can't understand you method for calculating erf,can you tell me how to resolve ?

Comment only
27 Nov 2010 Sebastien PARIS

Sebastien PARIS (view profile)

Hi,

It's right, is a bug... However, in pratice the case where alpha = 0, never occurs.... Thanks you for reporting.

Comment only
27 Nov 2010 zhu ?

zhu ? (view profile)

hi
i can 't understand the way to calculate erf,can you tell me you method ? 3q

Comment only
26 Nov 2010 zhu ?

zhu ? (view profile)

hi
i think x1 = -gamma/beta is right,but in you code you write
x1 = -beta/gamma,so i think it may be a bug.

Comment only
26 Nov 2010 Sebastien PARIS

Sebastien PARIS (view profile)

Hi,

In "Digital Image Processing", Rafael C. Gonzalez, P 622-623 see equations. Actually my implementation seems right.

p1 = 0.5;
p2 = 0.5;

m1 = -3 ;
m2 = 1;

s1 = (1.2)^2;
s2 = (1.4)^2;
cte = p1/p2;
alpha = s1 - s2;
beta = 2*(m1.*s2 - m2.*s1);
%beta = (m1.*s2 - m2.*s1);

gamma = (m2*m2).*s1 - (m1*m1).*s2 + 2*s1*2*s2.*log(cte.*sqrt(s2/s1));% 2*s1*2*s2.*log(cte.*sqrt(s2/s1)) = 2*s1*s2.*log(cte.*(s2/s1))

delta = beta.*beta - 4*alpha.*gamma;

% delta = beta.*beta - alpha.*gamma;

if(delta < 0)

delta = -delta;

end

if(alpha ~= 0)

x1 = (-beta + sqrt(delta))./(2*alpha);
x2 = (-beta - sqrt(delta))./(2*alpha);
%
% x1 = (-beta + sqrt(delta))./(alpha);
% x2 = (-beta - sqrt(delta))./(alpha);

else

x1 = -gamma/beta;
T = (m1 + m2)/2 + (sqrt(s1)/(m1 - m2))*log(cte);
x2 = x1;

end

Comment only
26 Nov 2010 zhu ?

zhu ? (view profile)

Hi Sebastien
i think i find a bug:
if(alpha != 0.0)
{

x1 = (-beta + sqrtdelta)/(alpha);

x2 = (-beta - sqrtdelta)/(alpha);

}
else
{

x1 = -beta/gamma;

x2 = x1;

}
i think when alpha=0, x1=x2=-gamma/(2*beta) !

Comment only
26 Nov 2010 zhu ?

zhu ? (view profile)

Hi Sebastien
i think i find a bug:
if(alpha != 0.0)
{

x1 = (-beta + sqrtdelta)/(alpha);

x2 = (-beta - sqrtdelta)/(alpha);

}
else
{

x1 = -beta/gamma;

x2 = x1;

}
i think when alpha=0, x1=x2=-gamma/(2*beta) !

Comment only
26 Nov 2010 Sebastien PARIS

Sebastien PARIS (view profile)

Please read the referenced paper ....

Comment only
26 Nov 2010 zhu ?

zhu ? (view profile)

Hi Sebastien
Can you tell me how to calculate th_opt in fast_haar_adaboost_binary_model_cascade.c .Specially, i didn't undetstand the code like this :
alpha = var1c - var2c;

beta = (m1c*var2c - m2c*var1c);

gamma = m2c*m2c*var1c - m1c*m1c*var2c + 2*var1c*var2c*log(ctep*(var2c/var1c));

delta = beta*beta - alpha*gamma;

if(delta < 0)
{

delta = -delta;

}

sqrtdelta = sqrt(delta);

std1c = 1.0/sqrt(var1c); /* 1.0/sqrt(2.0*var1c); */

std2c = 1.0/sqrt(var2c); /* 1.0/sqrt(2.0*var2c); */

if(alpha != 0.0)
{

x1 = (-beta + sqrtdelta)/(alpha);

x2 = (-beta - sqrtdelta)/(alpha);

}
else
{

x1 = -beta/gamma;

x2 = x1;

}

if(m1c > m2c)
{

Err1 = 0.5*(p2*(1.0 - erf((x1 - m2c)*std2c)) + p1*(1.0 + erf((x1 - m1c)*std1c)));

Err2 = 0.5*(p2*(1.0 - erf((x2 - m2c)*std2c)) + p1*(1.0 + erf((x2 - m1c)*std1c)));

}
else
{

Err1 = 0.5*(p1*(1.0 - erf((x1 - m1c)*std1c)) + p2*(1.0 + erf((x1 - m2c)*std2c)));

Err2 = 0.5*(p1*(1.0 - erf((x2 - m1c)*std1c)) + p2*(1.0 + erf((x2 - m2c)*std2c)));

}

if(Err1 < Err2)

{
if(Err1 < Errormin)
{

Errormin = Err1;

featuresIdx_opt = f;

th_opt = x1;

a_opt = -1.0;

}

}
else
{
if(Err2 < Errormin)
{

Errormin = Err2;

featuresIdx_opt = f;

th_opt = x2;

a_opt = 1.0;
}

}

}

Comment only
26 Nov 2010 zhu ?

zhu ? (view profile)

Hi Sebastien,
I don not know BLAS fucntions, i can't find it in matlab help documents.

Comment only
25 Nov 2010 Sebastien PARIS

Sebastien PARIS (view profile)

BLASCALL is an alias for calling a BLAS function....

Comment only
25 Nov 2010 zhu ?

zhu ? (view profile)

Hi Sebastien,
Can you tell me what "BLASCALL" mean in fast_haar_adaboost_binary_model_cascade?

Comment only
23 Nov 2010 Louis

Louis (view profile)

Hi Sebastien,
I have XP, dual core , and visual studio 2010. It does compile well, but when i run it on some models that i generate using chlbp_gentleboost_binary_model_cascade.c, it says "Matlab has encountered internal problem and needs to be closed". I tried to trace the eval_chlbp.c file and "i think" there are some errors there, i am not sure because my knowledge in C is close to none.

eval_chlbp.c is supposed to extract only the models features instead of extracting all the features as in chlbp.c; hence, it should be significantly faster correct?

Comment only
23 Nov 2010 Sebastien PARIS

Sebastien PARIS (view profile)

Louis : which system you have ? CPU, OS, Compiler ?.
Regards,

Comment only
23 Nov 2010 Louis

Louis (view profile)

Hi Sebastien,
I am using the function eval_chlbp which you have in the toolbox but it is giving me memory error saying that i have to close matlab :( ... I understand that you havent used it throughout the demo, but i need it since i am implementing a chlbp detector.

Do you have an updated version of or i am doing something wrong.

Many thanks

Comment only
22 Nov 2010 zhu ?

zhu ? (view profile)

thank you ,i have download it in ieee

Comment only
21 Nov 2010 Sebastien PARIS

Sebastien PARIS (view profile)

As referenced in the mex-file :

Reference : M-T Pham and T-J Cham, "Fast trainning and selection of Haar features using statistics in boosting-based face detection",
--------- in Proc. 11th IEEE ICCV'07

Comment only
20 Nov 2010 zhu ?

zhu ? (view profile)

dear Sebastien
i can't understand you FastAdaboosting algorithm, because i can't understand "Haar_matG" funciton.
please tell me what your purpose for sparse,and what references you have used.

Comment only
20 Nov 2010 Sebastien PARIS

Sebastien PARIS (view profile)

Hi,
Of course, you have different results especially with N = 4. You want to define th_opt = (a[i-1] + a[i])/2 and me by th_opt = (a[i] + a[i+1])/2, when N is large (and it's the case usually), it won't change a lot of for the value of th_opt. In your example, of couse, It changed with N = 4. You have 2 choices for defining the interval. You prefered the second choice, but in practice, with N> 1000, it won't change a lot....

Comment only
19 Nov 2010 zhu ?

zhu ? (view profile)

dear Sébastien
i think is different,i have compared them with vc++6.0 and they have different result.

#include "stdafx.h"
void qsindex (double *a, int *index , int lo, int hi)
{

int i=lo, j=hi , ind;

double x=a[(lo+hi)/2] , h;

do
{
while (a[i]<x) i++;
while (a[j]>x) j--;
if (i<=j)
{
h = a[i];
a[i] = a[j];
a[j] = h;
ind = index[i];
index[i] = index[j];
index[j] = ind;
i++;
j--;
}
}
while (i<=j);

if (lo<j) qsindex(a , index , lo , j);
if (i<hi) qsindex(a , index , i , hi);
}

/*select best th_opt and a_opt,by Sebastien Paris*/
/*void main(int argc, char* argv[])
{

double a[4]={4,3,2,1};
int index[4]={0,1,2,3};
int y[4]={1,-1,1,1};
int N=4;
int N1;
N1=N-1;
double Tplus=0,Tminus=0;
double Errormin=2;
double w[4]={0.15,0.35,0.25,0.25};
int ind,ytemp;
double wtemp;
////////////////////////////before sort/////////////////////////////
for(int i=0;i<4;i++)
{
printf("a[%d] ",i);

}
printf("\n");
for( i=0;i<4;i++)
printf(" %g ",a[i]);
printf("\n");

for( i=0;i<4;i++)
printf(" %d ",index[i]);
printf("\n");
for( i=0;i<4;i++)
printf(" %d ",y[i]);
printf("\n");
for( i=0;i<4;i++)
printf(" %g ",w[i]);
printf("\n");


int lo=0,hi=N1;
qsindex (a, index , lo, hi);

///////////////////////////////after sort

for( i=0;i<4;i++)
{
printf("a[%d] ",i);

}
printf("\n");
for( i=0;i<4;i++)
printf(" %g ",a[i]);
printf("\n");

for( i=0;i<4;i++)
printf(" %d ",index[i]);
printf("\n");
for( i=0;i<4;i++)
printf(" %d ",y[index[i]]);
printf("\n");
for( i=0;i<4;i++)
printf(" %g ",w[index[i]]);
printf("\n");

for(i = 0 ; i < N ; i++)
{

if(y[i] == 1)
{

Tplus += w[i];

}
else
{

Tminus += w[i];

}
}

printf("Tplus=%g,Tminus=%g\n",Tplus,Tminus);
printf("*********************\n");

double Splus=0,Sminus=0;
double Errplus,Errminus;
double th_opt,a_opt;
//select best th_opt and a_opt,by Sebastien Paris
for(i = 0 ; i < N ; i++)

{

ind = index[i];

ytemp = y[ind];

wtemp = w[ind];

Errplus = Splus + (Tminus - Sminus);

Errminus = Sminus + (Tplus - Splus);

printf("Errplus=%g,Errminus=%g\n",Errplus,Errminus);

if(Errplus < Errormin)
{

Errormin = Errplus;

if(i<N1)
{

th_opt = (a[i] + a[i+1])/2;

}
else
{

th_opt = a[i];

}

a_opt = 1.0;

}

if(Errminus < Errormin)
{

Errormin = Errminus;

if(i<N1)
{

th_opt = (a[i] + a[i+1])/2;

}
else
{

th_opt = a[i];

}



a_opt = -1.0;

}


if(ytemp == 1)
{

Splus += wtemp;

}
else

{

Sminus += wtemp;

}
printf("when i=%d,a_opt=%g,th_opt=%g,Errormin=%g\n",i,a_opt,th_opt,Errormin);
printf("*********************\n");
}
printf("************finally*********\n");
printf("best a_opt=%g,best th_opt=%g,Errormin=%g\n",a_opt,th_opt,Errormin);
}
*/
/*select best th_opt in my opinion*/
void main(int argc, char* argv[])
{

double a[4]={4,3,2,1};
int index[4]={0,1,2,3};
int y[4]={1,-1,1,1};
int N=4;
int N1;
N1=N-1;
double Tplus=0,Tminus=0;
double Errormin=2;
double w[4]={0.15,0.35,0.25,0.25};
int ind,ytemp;
double wtemp;
///////////////////////////////before sort
printf("before sort:\n");
for(int i=0;i<4;i++)
{
printf("a[%d] ",i);

}
printf("\n");
for( i=0;i<4;i++)
printf(" %g ",a[i]);
printf("\n");

for( i=0;i<4;i++)
printf(" %d ",index[i]);
printf("\n");
for( i=0;i<4;i++)
printf(" %d ",y[i]);
printf("\n");
for( i=0;i<4;i++)
printf(" %g ",w[i]);
printf("\n");


int lo=0,hi=3;
qsindex (a, index , lo, hi);
///////////////////////////////after sort
printf("after sort:\n");
for( i=0;i<4;i++)
{
printf("a[%d] ",i);

}
printf("\n");
for( i=0;i<4;i++)
printf(" %g ",a[i]);
printf("\n");

for( i=0;i<4;i++)
printf(" %d ",index[i]);
printf("\n");
for( i=0;i<4;i++)
printf(" %d ",y[index[i]]);
printf("\n");
for( i=0;i<4;i++)
printf(" %g ",w[index[i]]);
printf("\n");

for(i = 0 ; i < N ; i++)
{

if(y[i] == 1)
{

Tplus += w[i];

}
else
{

Tminus += w[i];

}
}
printf("Tplus=%g,Tminus=%g\n",Tplus,Tminus);
printf("*********************\n");
double Splus=0,Sminus=0;
double Errplus,Errminus;
double th_opt,a_opt;
//select best th_opt and a_opt,in my opinion

for(i = 0 ; i < N ; i++)
{

ind = index[i];

ytemp = y[ind];

wtemp = w[ind];

Errplus = Splus + (Tminus - Sminus);

Errminus = Sminus + (Tplus - Splus);
printf("Errplus=%g,Errminus=%g\n",Errplus,Errminus);

if(Errplus < Errormin)
{

Errormin = Errplus;
if(i==0)
th_opt = a[i];

else
{

th_opt = (a[i-1] + a[i])/2;

}

a_opt = 1.0;

}

if(Errminus < Errormin)
{

Errormin = Errminus;

if(i==0)
th_opt = a[i];


else
{

th_opt = (a[i-1] + a[i])/2;

}


a_opt = -1.0;

}


if(ytemp == 1)
{

Splus += wtemp;

}
else

{

Sminus += wtemp;

}
printf("when i=%d,a_opt=%g,th_opt=%g,Errormin=%g\n",i,a_opt,th_opt,Errormin);
printf("*********************\n");
}
printf("*********finally********\n");
printf("best a_opt=%g,best th_opt=%g,Errormin=%g\n",a_opt,th_opt,Errormin);

}

Comment only
19 Nov 2010 zhu ?

zhu ? (view profile)

thank you ,Sebastien Paris!
I have resolved this problem. when i read the code in "haar_adaboost_binary_model_cascade.c",i the think the best th_opt should be selected like this:
for(i = 0 ; i < N ; i++)
{

ind = index[i];

ytemp = y[ind];

wtemp = w[ind];

Errplus = Splus + (Tminus - Sminus);

Errminus = Sminus + (Tplus - Splus);
printf("Errplus=%g,Errminus=%g\n",Errplus,Errminus);

if(Errplus < Errormin)
{

Errormin = Errplus;
if(i==0)
th_opt = a[i];

else
{

th_opt = (a[i-1] + a[i])/2;

}

a_opt = 1.0;

}

if(Errminus < Errormin)
{

Errormin = Errminus;

if(i==0)
th_opt = a[i];


else
{

th_opt = (a[i-1] + a[i])/2;

}


a_opt = -1.0;

}


if(ytemp == 1)
{

Splus += wtemp;

}
else

{

Sminus += wtemp;

}

Comment only
11 Nov 2010 Sebastien PARIS

Sebastien PARIS (view profile)

If your'are not able to recompile vcapg2, please download compiled mex file at : http://www.mathworks.com/matlabcentral/fileexchange/2939-vcapg2

as mentioned in description

Comment only
11 Nov 2010 zhu ?

zhu ? (view profile)

Hi!
I want to use demo_detector_haar in matlab 2009a(7.8.0),but it does't work. matlab remind you:
>> demo_detector_haar
??? Undefined function or method 'vcapg2' for input arguments of type 'double'.

Error in ==> demo_detector_haar at 33
aa = vcapg2(0,2);

so I recompile all code,I do like this:
>> mex -setup
Please choose your compiler for building external interface (MEX) files:

Would you like mex to locate installed compilers [y]/n? y

Select a compiler:
[1] Lcc-win32 C 2.4.1 in D:\PROGRA~1\MATLAB\R2009a\sys\lcc
[2] Microsoft Visual C++ 6.0 in D:\Program Files\Microsoft Visual Studio

[0] None

Compiler: 2

Please verify your choices:

Compiler: Microsoft Visual C++ 6.0
Location: D:\Program Files\Microsoft Visual Studio

Are these correct [y]/n? y

Trying to update options file: C:\Documents and Settings\Administrator\Application Data\MathWorks\MATLAB\R2009a\mexopts.bat
From template: D:\PROGRA~1\MATLAB\R2009a\bin\win32\mexopts\msvc60opts.bat

Done . . .

**************************************************************************
Warning: The MATLAB C and Fortran API has changed to support MATLAB
variables with more than 2^32-1 elements. In the near future
you will be required to update your code to utilize the new
API. You can find more information about this at:
http://www.mathworks.com/support/solutions/data/1-5C27B9.html?solution=1-5C27B9
Building with the -largeArrayDims option enables the new API.
**************************************************************************
>> mexme_fdt
compiling chlbp
compiling chlbp_adaboost_binary_model_cascade
compiling chlbp_adaboost_binary_predict_cascade
compiling chlbp_gentleboost_binary_model_cascade
compiling chlbp_gentleboost_binary_predict_cascade
compiling detector_haar
compiling detector_mblbp
compiling eval_chlbp
compiling eval_haar
compiling eval_haar_subwindow
compiling eval_mblbp
compiling haar
compiling haar_ada_weaklearner
compiling haar_adaboost_binary_model_cascade
compiling haar_adaboost_binary_predict_cascade
compiling haar_featlist
compiling haar_gentle_weaklearner
compiling haar_gentleboost_binary_model_cascade
compiling haar_gentleboost_binary_predict_cascade
compiling haar_scale
compiling imresize
compiling int8tosparse
compiling mblbp
compiling mblbp_ada_weaklearner
compiling mblbp_adaboost_binary_model_cascade
compiling mblbp_adaboost_binary_predict_cascade
compiling mblbp_featlist
compiling mblbp_gentle_weaklearner
compiling mblbp_gentleboost_binary_model_cascade
compiling mblbp_gentleboost_binary_predict_cascade
compiling rgb2gray
compiling fast_haar_ada_weaklearner
compiling fast_haar_adaboost_binary_model_cascade
I find it does not compile vcap2.cpp!why?
In my PC I have installed DirectShow SDK,and I can find dxtrans.h,what should I do next?

Please help me,thank you very much!

Comment only
28 Oct 2010 adam akbar

Wow amazing program, finally i can run it...
i have question, how to increase fps??

28 Oct 2010 adam akbar

yes i have.
the vcapg2.cpp is not compile yet.
can you show me how to compile it??
my matlab wont compile c++ file
or can you give me result from compiling vcapg2 file?

Comment only
28 Oct 2010 Sebastien PARIS

Sebastien PARIS (view profile)

Do you have a functional webcam installed ?.

Comment only
26 Oct 2010 adam akbar

i got some error when run demo_detector_harr

Error in ==> demo_detector_haar at 33
aa = vcapg2(0,2);

how to solve this?

Comment only
21 Oct 2010 Sebastien PARIS

Sebastien PARIS (view profile)

I don't undestand your question. Please run the four demo files...

Comment only
20 Oct 2010 adam akbar

i already do this step

>> mex -setup
Please choose your compiler for building external interface (MEX) files:

Would you like mex to locate installed compilers [y]/n? y

Select a compiler:
[1] Lcc-win32 C 2.4.1 in C:\PROGRA~1\MATLAB\R2009b\sys\lcc

[0] None

Compiler: 1

Please verify your choices:

Compiler: Lcc-win32 C 2.4.1
Location: C:\PROGRA~1\MATLAB\R2009b\sys\lcc

Are these correct [y]/n? y

Trying to update options file: C:\Documents and Settings\Adam\Application Data\MathWorks\MATLAB\R2009b\mexopts.bat
From template: C:\PROGRA~1\MATLAB\R2009b\bin\win32\mexopts\lccopts.bat

Done . . .

**************************************************************************
Warning: The MATLAB C and Fortran API has changed to support MATLAB
variables with more than 2^32-1 elements. In the near future
you will be required to update your code to utilize the new
API. You can find more information about this at:
http://www.mathworks.com/support/solutions/data/1-5C27B9.html?solution=1-5C27B9
Building with the -largeArrayDims option enables the new API.
**************************************************************************

>> mexme_fdt
compiling chlbp
compiling chlbp_adaboost_binary_model_cascade
compiling chlbp_adaboost_binary_predict_cascade
compiling chlbp_gentleboost_binary_model_cascade
compiling chlbp_gentleboost_binary_predict_cascade
compiling detector_haar
compiling detector_mblbp
compiling eval_chlbp
compiling eval_haar
compiling eval_haar_subwindow
compiling eval_mblbp
compiling haar
compiling haar_ada_weaklearner
compiling haar_adaboost_binary_model_cascade
compiling haar_adaboost_binary_predict_cascade
compiling haar_featlist
compiling haar_gentle_weaklearner
compiling haar_gentleboost_binary_model_cascade
compiling haar_gentleboost_binary_predict_cascade
compiling haar_scale
compiling imresize
compiling int8tosparse
compiling mblbp
compiling mblbp_ada_weaklearner
compiling mblbp_adaboost_binary_model_cascade
compiling mblbp_adaboost_binary_predict_cascade
compiling mblbp_featlist
compiling mblbp_gentle_weaklearner
compiling mblbp_gentleboost_binary_model_cascade
compiling mblbp_gentleboost_binary_predict_cascade
compiling rgb2gray
compiling fast_haar_ada_weaklearner
compiling fast_haar_adaboost_binary_model_cascade

but fdtool is not appear in toolbox please help.
thank you

Comment only
07 Sep 2010 Qiu dw

Qiu dw (view profile)

Thank you for sharing code.

30 Aug 2010 Kai Tang

To Bluebird,

you can also test the LBP in matlab from MVG.
http://www.ee.oulu.fi/mvg/page/lbp_matlab

By the way, I have done the eye, even gaze detection based on paris' excellent work. Thanks a lot!!!

26 Aug 2010 Sebastien PARIS

Sebastien PARIS (view profile)

Please configure your compiler by "mex -setup"

Comment only
25 Aug 2010 Tobin

Tobin (view profile)

I've already tried, I get an error: Error using mexme_fdt>getmeopts at 208, getmeopts [Bruno]:Cannot open comopts.bat file

Comment only
24 Aug 2010 Sebastien PARIS

Sebastien PARIS (view profile)

Simply run "mexme_fdt;" witout any options structure...

Comment only
24 Aug 2010 Tobin

Tobin (view profile)

Hi,
I'd like to disscus fd toolbox. I've got matlab 2010.
mexme_fdt.m ends with error: Could not find specified options file
'mexopts_intel10.bat'. Even if i have it in matlab path. Could anyone help me please?
Thanks, Tobias

Comment only
22 Aug 2010 Samuel

Samuel (view profile)

Thank you for this software. The haar functions in .c are fast and very useful.

Comment only
11 Aug 2010 Sebastien PARIS

Sebastien PARIS (view profile)

Hello,

Probably to many values to output ..... You can modify chlbp.c in order to output theses outputs.....

Comment only
09 Aug 2010 Louis

Louis (view profile)

Awesome toolbox. I have a question regarding the CHLBP, does it happen that you have the one that has the LBP values output (i.e. not the histogram bins output).

What i am looking for is you give an image and get the the LBP(R,N) for the pixels; it should a step before CHLBP which calculates the distibution of the LBP pixels

Thanks

09 Jun 2010 HMN

HMN (view profile)

 
20 May 2010 Sebastien PARIS

Sebastien PARIS (view profile)

Hello,

You installed the toolbox in 'C:\Program Files\MATLAB\R2009a\toolbox\fdtool' ? strange location, anyway ..
Which compiler didyou use ?. did you run mexme_fdt from the right dit ?i.e. 'C:\Program Files\MATLAB\R2009a\toolbox\fdtool' ?

like :

cd 'C:\Program Files\MATLAB\R2009a\toolbox\fdtool'
mexme_fdt

Comment only
19 May 2010 Iqbal Nouyed

Hi Sebastien,

I am having trouble in compiling the toolbox. I have tried the already given instruction as follows:

path('C:\Program Files\MATLAB\R2009a\toolbox\fdtool', path);
mex -setup

but after running the mexme_fdt i'm getting the following error:

compiling chlbp

C:\PROGRA~1\MATLAB\R2009A\BIN\MEX.PL: Error: 'chlbp.c' not found.

??? Error using ==> mex at 218
Unable to complete successfully.

Error in ==> mexme_fdt at 148
eval(['mex ' str])

Could you please help me?

Thanks.

Comment only
31 Mar 2010 Sebastien PARIS

Sebastien PARIS (view profile)

mex -setup

Comment only
30 Mar 2010 rajendra gharase

hii.. i am weak in matlab.
can u tel me..
how to do the mex set up?
thanks...

23 Feb 2010 Kai Tang  
23 Feb 2010 Kai Tang

To jethro tan,
Paris has done an excellent work on face detection. Maybe he is busy for other things, but he has figured out this question as
[model cascade]=multi_exit_asymetric_boosting(Xpos, negatives_path, options)

Comment only
31 Jan 2010 jethro tan

I trained my own model file "model.mat" by your file "fast_haar_adaboost_binary_model_cascade.c". But a cascade matrix must be created properly for detection module,such as [3 4 2 1;0 0 0 0]. How do I construct a cascade matrix properly?

Comment only
21 Jan 2010 Mohammad Ghahramani

It is a very useful set of codes but would you please change the imresize to sth else.

I added the path to fdtool folder but MATLAB mixes up with two imresize functions at a time and returns an empty matrix if you just use imresize in a code. The same error reported here: http://www.mathworks.co.uk/matlabcentral/newsreader/view_thread/265938

Comment only
18 Jan 2010 Fumin Shen

I am sorry I made such a stupid mistake!
Thanks for your time!

Comment only
18 Jan 2010 Sebastien PARIS

Sebastien PARIS (view profile)

did you did a mex -setup before ?

Comment only
18 Jan 2010 Fumin Shen

This is an excellent work!!
But there's a problem when i run "mexme_fdt.m" to compile *.c files.
??? Error using ==> mexme_fdt>getmexopts at 208
getmexopts [Bruno]: cannot open comopts.bat file

And i failed to find the file "comopts.bat" or 'mexopts.bat' in the files downloaded.
Could any one tell me why?

10 Nov 2009 Sebastien PARIS

Sebastien PARIS (view profile)

Add fdtool dir in your path and run "mexme_fdt.m" to compile *.c files

Comment only
09 Nov 2009 Nessrine

i 'm not soo good in matlab implementation but i would like to test this code. can any one help me specialy i have no idea to use .c file with matlab for me this is the first matter.
thank an advance

04 Nov 2009 Sebastien PARIS

Sebastien PARIS (view profile)

Thanks you Soeren for these indications and comments.
Please if you have better models than those already included, I'll include them in a future release.

Sébastien

Comment only
04 Nov 2009 Soeren Sproessig

to build vcagp2.cpp (used in demo_detector_haar as camera acquisition provider) there are some other tricks
1. create a dummy dxtrans.h which seems to be missing in the SDK:
c:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\dxtrans.h
#define __IDxtCompositor_INTERFACE_DEFINED__
#define __IDxtAlphaSetter_INTERFACE_DEFINED__
#define __IDxtJpeg_INTERFACE_DEFINED__
#define __IDxtKey_INTERFACE_DEFINED__

see: sample from http://www.riseoftheants.com/mmx/faq.htm#mjpegsample

2. some changes in code to be able to compile with VC08 and the current SDK in Win64:

82d81
<
629,630c628
< // pbmi->hInst = (HINSTANCE)GetWindowLong(GetFocus(),GWL_HINSTANCE);
< pbmi->hInst = (HINSTANCE)GetWindowLongPtr(GetFocus(), GWLP_HINSTANCE);
---
> pbmi->hInst = (HINSTANCE)GetWindowLong(GetFocus(),GWL_HINSTANCE);
958c956
< wc.lpfnWndProc =(WNDPROC) WndProc;
---
> wc.lpfnWndProc = WndProc;

Comment only
04 Nov 2009 Soeren Sproessig

in addition to my prior post:
to build vcapg2.cpp you need to have a current Microsoft DirectX SDK installed...

Comment only
04 Nov 2009 Soeren Sproessig

excellent work!

to use it with matlab R2009b x64 on win7pro64 I had to change mexme_fdt.m a little bit:

44c44,46
< lib = ['"' , fullfile(matlabroot , sprintf('extern\\lib\\%s\\microsoft\\libmwblas.lib',computer('arch'))) , '"'];
---
>
> lib = ['"' , fullfile(matlabroot , 'extern\lib\win32\microsoft\libmwblas.lib') , '"'];
>
135c137

Comment only
04 Nov 2009 Soeren Sproessig  
05 Sep 2009 Bodla Rakesh  
Updates
18 May 2009

- v 0.1 bis : correct some typos and minor changes ...

19 Jun 2009

V 0.1c
-Should compile on non C99 compiler
-Add demo_detector_haar
-Minor changes

09 Oct 2009

-Minor Update for Linux compilation

11 Nov 2009

- Remove some Crashes
- Correct bugs with LCC and prior version of Matlab (add uselcc options in mexme_fdt)

12 Nov 2009

- Correct some crashes
- Improve number of plateform supported (LCC, Win64, etc ...)

20 Nov 2010

-fixed smal bugs, compatible with Linux64 and include a modified version of vcapg2 compatible with win64. Thanks Pr Fehn for his help

22 Nov 2010

-A full win32/win64 working version of vcapg2. Thanks again to Pr Fehn.

04 Apr 2011

-v0.2 Major Update. see readme.txt for full changes
             

16 Apr 2011

Minor update (0.21):
- Add missing negatives.zip
- Add dense version of Liblinear
- Fix chlbp.c

27 Oct 2011

-v0.22. Minor update. Please open readme.txt for details.

09 Nov 2011

- Update spyr option for HMSLBP approach. Now weights of each subwindows can be tune by users.
- Add online help

09 Nov 2011

- Update spyr option for HMSLBP approach. Now weights of each subwindows can be tune by users.
- Add online help

17 Nov 2011

- Correct bugs in eval_hmblbp_spyr_subwindow.c
- Minor comestic changes
- Update readme.txt

26 Jul 2012

- Find all changes in readme.txt

13 Aug 2012

- Fix all functions with spyr variable. Now spyr matrix are (nscale x 5) instead of (nscale x 4)
- Fix train_cascade

18 Sep 2012

-Add negatives.zip and haar_dico_2.mat

04 Sep 2013

-Minor bugfix

09 Sep 2013

- some new bug fixes
- add new options for train_model
- provide a more robust model for demo_detector_hmblbp

Contact us