SVM进行人脸检测

一、实现流程概述

  • Part 1 Hog Representation
    通过feature.hog函数生成face_feature和hog_image,图片如下:
    在这里插入图片描述

  • Part 2 Sliding Window
    使用特定大小的窗口进行滑窗,完成Sliding_window函数,主要思路是先将原有图片进行填充,然后建立二重循环,计算每一个点的hog_score,完成response_map的建立,通过resize函数将response_map缩放到image大小,完成准备工作,开始测试,图片如下:
    在这里插入图片描述
    在这里插入图片描述
    然而,我们发现,缩放比例后,再次调用Sliding_window函数,目标检测效果达不到我们的预期,偏差较大:
    在这里插入图片描述
    在这里插入图片描述
    于是我们提出了以下解决方案(图像金字塔):

  • Part 3 Image Pyramids
    不停地缩小图片比例,并检测图片是否满足要求,同时将满足要求的图片放入一个list中,如果图片过小,就跳出循环,生成一个“倒金字塔”,共七张图片。
    在这里插入图片描述

之后,完成Pyramid_score函数,通过对图片金字塔里的每一张图片使用滑窗函数遍历,找到打分最高的识别图片和缩放比例,图片如下:
在这里插入图片描述
在这里插入图片描述

  • Part 4 Deformable Parts Detection
    生成五官的特征图,在此不再赘述。

  • Part 5 Human Parts Location
    完成compute_displacement函数,求出偏移量mu和标准差std。其中,标准差的求解办法正如数学数学标准差求解所述。
    此后,完成shift_heatmap函数,用heatmap矩阵中的每一个位置上的元素除以矩阵元素总和,以此保证每一个位置的元素都不大于1。再用interpolation.shift函数处理heatmap,偏移量参数采用mu,获得新的四张heatmap,如下图所示。
    在这里插入图片描述

  • Part 6 Gaussian Filter
    完成gaussian_heatmap函数,叠加五张heatmap,完成。图片如下
    在这里插入图片描述
    在这里插入图片描述

二、运行过程中遇到的问题和解决方案

  1. 滑窗函数问题:做的时候并没有真正理解pad_image究竟是填充后的整张图片还是仅仅是填充边框。此外,把窗口左上角点的分数当成了整个小窗口的份数,导致response_map的绘制出现问题,缩放后,大块的区域都是一种颜色。通过不断的试验和研究文档,对于第一个问题我采用imshow函数,展示了pad_image,搞清楚了pad_image到底代表什么图片。对于第二个问题,我在不断地尝试后,终于把问题解决掉了。

  2. 特征金字塔问题:在一开始,由于没有仔细看要求,误把第一张不符合要求的照片也放入images中,在后续运行中出现问题。于是我查看了文档注释并且修改了函数逻辑,实现了此处功能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值