




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录1引言22 HOG定义23 HOG框架34 HOG特征描述44.1 HOG描述子44.2多层扫描55 HOG各个阶段的具体过程55.1 HOG描述子的构建过程55.2 SVM分类器的构建过程65.3 HOG检测算法的过程66使用HOG方法训练76.1 实验环境76.2 实验过程86.3实验效果11HOG识别方法总结李洋1引言现今在物体识别的方法中,绝大部分都是由这两步构成,第一步是建立图像的描述子,第二部是根据第一步的描述子选择对应的平台进行检测,就是分类方法。本文主要介绍HOG方法的原理,检测方法,训练过程,及一个简单物体的识别的完整过程举例。2 HOG定义HOG全名为Historgram of gradient,即方向梯度直方图,HOG可以解决两类问题,一是静态图像上的人体检测,这时使用locally normalised Histograms of Oriented Gradients (HOG)作为特征描述子,本文以下内容均说明的是静态图像上的HOG方法。二是检测视频上运动物体的检测。要具有好的效果:未经平滑的梯度,较好的方向投票,较强的正规化,重叠块SVM找到一个超平面,也就是在给定的特征空间上,寻找目标与非目标间的最大的gap(间隔)。3 HOG框架HOG检测物体的框架:HOG检测物体的整体框架分为两个阶段:学习阶段与检测阶段。学习阶段是对固定大小的图像区域进行有还是没有目标物体的判断,从而建立起一个二维的分类器。检测阶段则是使用这个分类器在待测图像上进行多层的扫描,并在每个层上的各个位置进行判断,找到分类器认为含有目标的区域,再加以融合(fuse)。每个阶段都分为3部,具体如下图所示:学习阶段(learning):1、训练样本,分为正负样本,其中正样本指的是含有目标物体的样本,理想情况下只含有一个,负样本则不含。正样本的训练是使用固定大小的含有目标的窗口,而负样本只需在不含目标的图像上随机地滑动出固定大小的窗口即可。2、提取特征,这个过程把这些图像窗口映射到一个抽象的固定大小的特征向量空间中。3、把这个高维的特征向量输送到分类器中,并告诉它这个图像窗口有还是没有目标,从而训练出一个分类器,这里用的是线性的SVM来当二维的分类器的,因为可以直接地将特征向量输入到SVM中,与其他复杂的分类器相比,能得出相同的结果但是却更快。检测阶段(detection):1、计算待测窗口的特征向量2、把这个窗口的特征向量输入到已经训练好的分类器上,做出是否有目标的判断。3、在检测过程中使用到了金字塔多层的检测,所以很可能会有重叠的窗口产生,这一步做的就是融合成一个窗口。4 HOG特征描述4.1 HOG描述子HOG描述子是通过密集且重叠的spatial block上的格点,图像梯度方向特征在固定的分辨率上被提取,然后被收集到一个高维度的向量中去,这样形成的即为HOG描述子。HOG描述器最重要的思想是:在一副图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。具体的实现方法是:首先将图像分成小的连通区域,我们把它叫细胞单元。然后采集细胞单元中各像素点的梯度的或边缘的方向直方图。最后把这些直方图组合起来就可以构成特征描述器。HOG特征向量的运算可以分为5个过程:1、对图像做一个归一化,来减小光照的影响。实际中使用了gamma压缩,就是对每个色彩频道计算平方根或log值,因为图像纹理的强度越大,局部表面的光照影响就越大,所以这种压缩回会减小局部阴影与光照变化带来的影响。可能的话,保留颜色信息的图像,如RGB和LAB会比灰度图效果更好。根据实验,对于人来说,使用平方根会比log的灰度校正效果要好。2、计算一阶的图像梯度,能反映图像的内容,边缘信息,部分纹理信息等。计算梯度时,使用高斯平滑滤除噪声效果会更差,原因是滤除噪声的同时,重要边缘信息也被弱化。简单地使用一个一维的离散微分模板效果更好。3、为局部图像区域提供一个编码,把图像窗口划分成若干小的空域,称为cell,然后将每个单元格中所有象素的一维梯度直方图或者边缘方向累加到其中。最后将这个基本的方向直方图映射到固定的角度上,就形成了最终的特征。细胞单元中的每一个像素点都为某个基于方向的直方图通道(orientation-based histogram channel)投票。投票是采取加权投票(weighted voting)的方式,即每一票都是带权值的,这个权值是根据该像素点的梯度幅度计算出来。可以采用幅值本身或者它的函数,如平方或平方根来表示这个权值,实际测试表明:使用幅值来表示权值能获得最佳的效果,当然,也可以选择幅值的函数来表示,比如幅值的平方根(square root)、幅值的平方(square of the gradient magnitude)、幅值的截断形式(clipped version of the magnitude)等。细胞单元可以是矩形的(rectangular),也可以是星形的(radial)。直方图通道是平均分布在0-180(无向)或0-360(有向)范围内。作者发现,采用无向的梯度和9个直方图通道,能在行人检测试验中取得最佳的效果。颜色差别重要的时候使用邮箱的角度范围是更好的,但对于检测人类来说,无向的经过实验效果更好。4、对比度归一化。归一化能够进一步地对光照、阴影和边缘进行压缩。通常,每个单元格由多个不同的块共享,即重叠块(overlapping of the blocks),但它的归一化是基于不同块的,所以计算结果也不一样。因此,一个单元格的特征会以不同的结果多次出现在最后的向量中。我们将归一化之后的块描述符就称之为HOG描述符。5、将检测窗口中所有重叠的块进行HOG特征的收集,并将它们结合成最终的特征向量供分类器使用。4.2多层扫描对于多层扫描产生的重叠的检测结果,作者提出了non-maximum suppression,此方法基于一下两点假设:此解决方案的基于的两点假设:1、若检测器精确,则检测窗口也是精确的,即使会有一点点的偏离中心或大小稍有偏差。2、一个可靠的检测器,在没有目标的窗口上,不会与相同的频率和可靠度的冲突。思路是,把SVM的score映射为正数,即根据max(score, 0) 来取值,然后是将(x,y,scale)投射到一个三维空间这样便形成了一个金字塔形的结构,即scale越小的越在上面,x,y差不多的聚在一块,就构成了若干个金字塔,然后应用mean shift mode 算法到每个检测结果上,最终的结果是,重叠的检测会聚在一起。理想的融合算法应具有的三个特性:1、最底下的那个detection的score越高,这块区域就越有可能是一个对的positive。2、一个图像块的邻近范围内越多的重叠的detection就表明这个图像块越有可能是true positive。3、邻近的重叠的detetions应该被融合到一块,但是scale或positive positions差太大的不应该被融合。5 HOG各个阶段的具体过程5.1 HOG描述子的构建过程输入:一幅在当前缩放因子下和当前窗口大小下的图像输出:在用户给定位置处的高维的特征向量初始化步骤:1、(可选)对每个颜色频道的gamma修正。2、首先用-1,0,1梯度算子沿x,y轴对原图像做卷积运算,选取最大量级的channel作为来计算像素梯度的方向和幅值。描述子计算过程:a)划分cn*cn个像素的方形图像区域成为cellb)对块中的梯度应用sigma=0.5*cn的高斯窗口c)创建一个c*c*b的方向梯度直方图d)对快中的每个像素,使用三线性插值根据梯度幅值投票到直方图中。最后的步骤:使用L2-Hys规范化每个block,并计算所有block的梯度方向直方图到一个大的描述向量中。5.2 SVM分类器的构建过程输入:含有目标的固定大小(Wn,Hn)的窗口与不含目标的任意图像输出:训练好的判断固定大小窗口图像有无目标的二维分类器第一阶段学习:计算所有含有目标图像的描述向量,并输入到线性的SVM中。产生hard negative examples:对所有的不含目标图像的来进行多层的扫描,来找到分错的例子,即认为含有目标的样本。a)开始的缩放因子Ss是1,结束的是Se = min( Wi/Wn, Hi/Hn),Hi和Wi是不含目标图像的长宽。b)计算步数,每一步的缩放因子(即S(i+1)=S(i)*Sr)c)循环n次,并在每次循环中,用双线性插值放大图片,并以每次滑动Ns个像素来计算特征描述子,给出有没有目标的判断,把所有检测错误的判断输出到一个表里。第二阶段学习:使用positive,negative and hard examples来重新训练SVM。多层扫描的目标定位5.3 HOG检测算法的过程输入:a)待测图像b)训练好的检测Wn和Hn窗口大小的训练器输出:目标检测框初始化:a)使开始的缩放因子为1,结束的缩放因子为Se = min Wi/Wn, Hi/Hnb)根据层数及stride,循环求出每个像素点对应的每个HOG描述向量c)把特征向量输入给SVM分类器,将所有的检测结果(t(wi) c)输出到一个列表中。融合:采用Non-maximum suppression算法融合多个detection,并输出最终结果。6使用HOG方法训练使用HOG方法训练样本来识别一个小瓶子的简单训练及识别过程:6.1 实验环境Ubuntu 11.041、 所需软件包:imlib2,安装这个包时还需要3个依赖包,分别是libjpeg、libpng、freetype2.1.x这三个包的安装都可以用./configure,make,make install来完成,之后安装imlib2,在configure时需要按提示配置不含有x-windows,安装完后就可以使用OLTbinaries里面的脚本了,但是我的libjpeg明明在命令行下可以使用,但是执行脚本时却表明无法读取jpeg类型的图片,原因没找到,没办法只能下载批量格式转换工具了。OLTbinaries在作者提供的网址可以下载到,http:/pascal.inrialpes.fr/soft/olt/如果想实验作者训练的样本可以下载http:/pascal.inrialpes.fr/soft/olt/这里由于训练自己的样本,因此不需要下载这个样本库。Imageclipper,这个工具是用来抓取图片中的某部分区域并自动截图保存到某个位置,有linux和windows的版本,其中windows有现成的binaries,而linux版本则需要自己去编译。6.2 实验过程 获取样本,此实验要检测的目标是一个小瓶子,因此首先要拍摄含有此瓶子的若干图像样本,样本取得越多自然越好,我看到有人说最起码也要几千张,这里由于时间有限,只取了24张含有瓶子的照片,29张不含瓶子。正样本如下图,选取的样本都是在同一光照下,背景有一定的变化。负样本如下图, 对获得的正样本,使用imageclipper裁剪出含有瓶子的固定宽高的图片,如果不是64*128则需要在runall.sh脚本文件里修改,WIDTH=64; export WIDTHHEIGHT=128; export HEIGHT然后进行左右对称,这样共有了24*2=48张正样本,负样本不需要处理。如下图 对与固定大小的正样本使用:ls | cut -d -f 1 pos.lst将对应的名字输入到pos.lst中,对与负样本:ls | cut -d -f 1 neg.lst输入到neg.lst中去。 完成了上面的几部后,在OLTbinaries的文件夹下,就新建一个train的文件夹,里面再新建pos和neg文件夹分别存放待训练的正负样本,然后把两个列表文件也一同放入。如果需要,可以在建立test文件夹,放置类似的文件,不过是用来测试了,之后可以用matlab查看效果的曲线图。 执行OLTbinaries下的runall.sh脚本文件,即可开始训练了经过不长的等待,First iteration completeHard e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年初中地理特岗教师招聘考试模拟题及备考策略
- 重点护理环节管理措施
- 甲状腺素合成课件
- 甲状腺相关课件获取
- 中国的民族教学课件
- 《飞机梦工厂》教学课件
- 江苏苏州2018-2022年中考满分作文65篇
- 用电设备安全知识培训课件
- 统编版小学二年级语文(上)第六单元测试题(含答案)
- 中外教育简史教学课件
- 04某污水处理厂630kW柔性支架光伏发电项目建议书
- 2022中国移动通信集团重庆限公司招聘上岸笔试历年难、易错点考题附带参考答案与详解
- 吊装作业专项安全检查表
- 《华为团队工作法》读书笔记PPT模板思维导图下载
- 北师大版九年级数学上九年级第一二单元综合数学试题
- 二级建造师成绩复核申请
- 全过程工程咨询服务技术方案
- GB/T 25702-2010复摆颚式破碎机颚板磨耗
- GB 29541-2013热泵热水机(器)能效限定值及能效等级
- 住宅项目实测实量操作指引(图文并茂)
- 流体力学-流体力学基本方程课件
评论
0/150
提交评论