您的位置:首页 > 其它

《小超教你写论文》系列第四篇4.2-使用ACF算法进行行人检测

2014-06-17 21:09 591 查看
对于有一定经验能力的大神们,他们有无穷的想法和极强的算法实现能力,能够自由地将自己的想法实现验证。但对于我等小菜,天赋不够,能力不够,那如何实现自己的想法呢?要站在巨人的肩膀上。好处是能够借助已有成果实现自己的想法,缺点是要以大神的工作为根基,大方向需与大神相同。

在前三篇中,提到自己的想法是处理多分辨率的行人,但不是依靠使用图像金字塔,而是采用第一篇翻译的文章中提到的方法。但还缺少一个完整的,可以使用这一想法的行人检测过程,于是选择了ACF算法。

介绍算法之前,先声明上一篇,即4.1篇的错误。在4.1中,自己根据DPM-voc-release3.1的C编写了Felzenszwalb'sHOG,中间应该是有地方出错了,结果不太正确。根据我写的Matlab,对于图片



的HOG结果为



而根据Piotr的工具箱(早知道有人写过Matlab版本,我也不会班门弄斧的去自己写了)的代码,结果应该是



明显大神的结果更正确,更提醒我们信息的重要性,一定要多学习多膜拜大神啊。

下面简单介绍使用ACF算法进行行人检测的过程。ACF算法是加利福利亚理工的计算机视觉组通过4篇会议和1篇PAMI等一系列文章提出的行人检测方法,有着不错的检测结果和很快的速度,是目前比较比较优秀的行人检测算法之一。

先介绍使用的数据库,作者在INRIA和自己的Caltech数据库上测试了算法,这里只简单描述在Caltech上的检测过程。训练过程在下一篇与自己的想法结合后进行说明。
1)从www.vision.caltech.edu/Image_Datasets/CaltechPedestrians/下载的数据库为(*.seq)格式,先用工具箱中的seqIO.m将其转化为一帧帧图片,这样比较好处理。转化后如图



2)训练检测器。这里就省略了,准备将其在下一篇中和自己的思想结合起来进行说明。好在工具箱中有训练好的检测器,直接使用就好。
3)载入检测器。本来应该载入2)中训练的,这里就载入自带的吧,使用load函数载入。
4) 使用检测器进行检测。使用acfDetector函数进行检测,并用bbApply输出检测到的Bounding Box。
下面是在Caltech数据库上的一些检测结果。





下面是自己简单的调用代码,为了让大家清楚具体调用过程。

for i=1:1845
imgdir = 'E:\郑超\目标检测\data\Caltech\test\images\V001';
imgNms=bbGt('getFiles',{imgdir});
I=imread(imgNms{i});
name = 'AcfCaltech';
nm=[name 'Detector.mat'];
t=load(nm);
detector=t.detector;
bbs=acfDetect(I,detector);
figure(1); im(I); bbApply('draw',bbs);
pause(.1);
end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐