1.实现目标:使用opencv,skimage,Sklearn对包含行人的数据集进行训练,识别图像中行人的位置,并进行可视化。
2.行人检测
2.1HOG+SVM
方向梯度直方图(HOG)特征是一种在计算机视觉和图像处理中来进行物体检测的特征描述符,通过计算和统计图像局部区域的方向梯度直方图来构成特征。
SVM是一种常见的判别方法,再改实验中可以作为区分行人和非行人的分类器。
2.2检测流程
2.2.1准备训练样本集合,包括正样本集和负样本集。并分别放入两个文件夹中,并将所有的图片缩放至同样的大小,这里将所有图片的大小缩放为96*160。
图1 正样本集
图2 负样本集
2.2.2提取正负样本图像的HOG特征,并将特征分别进行存储。本项目采用skimage中提供的HOG算法获取图像特征,生成对应的HOG特征向量,作为SVM模型的输入特征。
2.2.3对正负样本打标签,将正样本标记为1,负样本标记为0。
2.2.4对SVM模型进行训练。
2.2.5对行人检测处理(滑动窗口)。
3.滑动窗口
在一张真实的图像中,行人可能出现在图像的任意位置,且检测图像的尺寸要远远大于训练样本的尺寸。为了保证能够检测到图像中的任意位置中的行人,需要使用滑动窗口的方式来完成行人检测。且为了使检测的精度更高需要对较大的图像进行高斯金字塔(pyramid_gaussian(im, downscale))处理。
滑动窗口字面意思就是可以滑动的窗口,规定一个长*高为(96*160)的矩形(该矩形的大小为样本照片的大小),若你要检测的图片的尺寸大于(96*160),则将矩形在被检测图片上按一定的步长进行平移,直到被检测图片的所有像素点均被矩形框住过为止。
图3 滑动窗口
高斯金字塔是将图片按一定的比例缩小,并存储为一个图片矩阵,在本次实验中,该图片矩阵中的每一个图片均需要进行滑动窗口检测。
图4 高斯金字塔 pyramid_gaussian()
图5 pyramid_gaussian