- 14
- 0
- 约3.74千字
- 约 10页
- 2021-12-07 发布于北京
- 举报
图像工程实验报告
——使用滑动窗的人脸检测
(Face detection with a sliding
window)
王
学号:2013201745
2014 年1 月
图像工程作业: 使用滑动窗的人脸检测
一. 问题描述
本次实验需要使用滑动窗口来进行人脸检测。滑动窗口能够 地对图片块进行分
类,以确定是否属于被检测目标。本次实验内容如下:
1) 载入正样本训练集(人脸),并将其转化为HoG 特征
2) 载入负样本训练集(没有人脸的任意场景),也将其转化为HoG 特征
3) 使用SVM,对 器进行训练,训练集 正训练集和负训练集
4) 使用训练 器,在不同的尺度上,对测试集进行
二.实验及结果分析
1. 提取正样本集的HoG 特征
这一步很简单,但是需要注意的是,使用vl_hog 提取图片特征,该函数第一个
参数必须是单精度的,否则会报错。代码如下:
IM = im (imagePath);
IM = vl_hog(im2single(IM), hog_cell_size);
IM = reshape(IM,1,(template_size / hog_cell_size)*( template_size / hog_cell_size)*31);
features_pos(i,:) = IM;
2. 载入负样本集的HoG 特征
这需要注意的地方是,由于每个正样本的大小都是 36x36 (根据第一步设置的
滑动窗口的大小),所以提取负样本HoG 特征的时候,只需要提取36x36分辨率大
小的图片块。提取的图片块位置任意,但是大小必须保证是36x36。代码如下:
IM = im (imagePath);
x = randi(1,size(IM,1)-35);
y = randi(1,size(IM,2)-35);
IM = IM(x:x+35,y:y+35);
IM = vl_hog(IM, hog_cell_size);
IM = reshape(IM,1,size(IM,1)*size(IM,2)*size(IM,3));
features_neg(j,:) = IM;
3. 利用正负训练集,训练 器
由于有正样本和负样本,将正样本标记为1,负样本标记为-1,利用SVM让分
类器进行学习。代码如下:
LAMBDA = 0.0001;
X = [features_pos; features_neg];
Y1 = double(ones(1, size(features_pos, 1)));
Y2 = (-1) * double(ones(1, size(features_neg, 1)));
[w b] = vl_svmtrain(X, [Y1, Y2], LAMBDA);
4. 使用训练的 器,对测试集进行
这步中,需要对测试集中的每一张图片,在不同的尺度上进 试。本次实验
中,先对测试图片进行放大,变为原分辨率的两倍,然后再对图片进行缩小,直到
分辨率小于滑动窗口的大小(36x36)为止。对于每一张图片,不同尺度下都做如
下处理:
1) 生成一个滑动窗口,然后该滑动窗在当前尺度的图片上滑动,每滑动一次,
都会生成一个confidence 值(由confidence w =xtest +b 得到)
2) 比较 confidence 值与 threshold 值大小,大于阈值,则 下该 box,
confindence值,以及图片的id
3) 每张图片的不同尺度都执行过第二 ,调用non_max_supr_bbox 处理记
原创力文档

文档评论(0)