HumanPoseEstimation ---> UpperBodyDetector ---> DPM
箭头表示依赖关系。
UpperBodyDetector v1.04需要 DPM 3.1,也就是 voc-release3.1.tgz
从voc-release 4.01 开始,model structure发生了变化,加入了语法规则。所以除非修改 UpperBodyDetector 源码,v1.04不能与voc-release 4.01版本共用
Windows: W7 + VS2010 + Matlab 2009a
C:\PROGRA~1\MATLAB\R2009A\BIN\MEX.PL
Mac OS X: ML 10.8.5 + XCode 4.5.1 + Matlab 2012a
Mac 下, 直接运行compile成功
Windows下,报错。参照 voc-release 4.01 下的cc源文件,搞定 !
其实也就是缺少一些预定义等
#define int32_t int
#define bzero(a, b) memset(a, 0, b)
int round(float a) { float tmp = a - (int)a; if( tmp >= 0.5 ) return (int)a + 1; else return (int)a; }
注:特别注意 features.cc!!! 有计算上的很细微的差别,不能copy!!!
Mac下,直接compile成功
Windows下,直接运行compile成功
很简单,没有external C/C++ 文件。就是需要用到 voc-release3.1。
还有个OpenCV 的face detection的,可选项
Windows下, 直接installmex 成功; 直接运行没有问题
Mac下, 直接installmex 成功;运行报错:
Error using .*
Integers can only be combined with integers of the same class, or
scalar doubles.
Error in pm2segms (line 74)
segm(p).all = segm(p).all + double(segm(p).regs(:,:,rix))*rix;
Error in SegmentTrack (line 53)
T.PM(dix).segm = pm2segms(UncompressPM(T.PM(dix)), class_id, pars,
verbose);
Error in PoseEstimStillImage (line 42)
T.PM = SegmentTrack(fullfile(base_dir, img_dir),img_fname_format, T,
segm_params, [base_dir '/segms_' classname], verbose);
segm(p).all 是double,segm(p).segs是logical, rix是整数,改成
PoseEstimStillImage 中的bb的格式是[x y width height],而UpperBodyDetection的返回 detections的格式是[x1 y1 x2 y2],
一开始用UBD返回的结果测试怎么都不对,后来跑通了DetectAndEstimDir 才发现,坑死了!!!