《小超教你写论文》系列第四篇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数据库上的一些检测结果。
下面是自己简单的调用代码,为了让大家清楚具体调用过程。
在前三篇中,提到自己的想法是处理多分辨率的行人,但不是依靠使用图像金字塔,而是采用第一篇翻译的文章中提到的方法。但还缺少一个完整的,可以使用这一想法的行人检测过程,于是选择了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
相关文章推荐
- 论文阅读笔记——使用双向PCA进行行人检测
- 实战c++中的vector系列--使用sort算法对vector<unique_ptr<string>>进行排序(sort函数出错“应输入 2 个参数,却提供了 3 个)
- 实战c++中的vector系列--使用sort算法对vector<unique_ptr<string>>进行排序(sort函数“应输入 2 个参数,却提供了 3 个)
- 飘逸的python - 使用图像匹配SIFT算法进行LOGO检测
- 实战c++中的vector系列--使用sort算法对vector进行排序(对vector<string>排序、使用稳定的排序std::stable_sort())
- 苹果最新机器学习论文:使用VoxelNet进行3D物体检测
- 【论文笔记】视频物体检测(VID)系列 NoScope:1000x的视频检索加速算法
- 《小超教你写论文》第三篇-Caltech Pedestrain Benchmark,很利于研究的行人检测数据库介绍
- Caffe学习系列——6使用Faster-RCNN进行目标检测
- 实战c++中的vector系列--使用sort算法对vector进行排序(对vector<string>排序、使用稳定的排序std::stable_sort())
- 行人检测算法(ICF DPM)&CCV(A Morden Computer Vision Library)的使用&VisualBox下使用Ubuntu
- 【算法系列】使用LINQ来检测和删除重复的文件
- 使用matlab对行人视频进行检测的代码的分析
- 一步一步学Silverlight 2系列(27):使用Brush进行填充
- 使用VS进行工作流开发系列博客5-Developing Workflows in VS: Part 4 - Design and Bind Your Forms
- 使用VS进行工作流开发系列博客2-Developing Workflows in VS: Part 1 - Workflow Objects and A Crash Course on Mechanics
- 一步一步学Silverlight 2系列(27):使用Brush进行填充
- 使用VS进行工作流开发系列博客8-Developing Workflows in VS: Part 7 - Summary and Final Thoughts
- C/C++面试之算法系列--借刀杀人,不使用任何中间变量实现strlen
- 使用NetBeans进行J2ME开发系列