Dlib正面检测小脸

时间:2016-09-09 19:57:40

标签: computer-vision face-detection dlib

我正在使用Dlib的正面检测器来检测图像中的面部;但是,它无法检测小于80 x 80像素的面。

face_detection_ex.cpp 中的Dlib示例使用pyramid_up()对输入图像进行上采样以增加面部大小。但是,它会使算法慢得多,因为它必须搜索更大的图像。

我想知道是否有人知道这个问题的解决方案。

1 个答案:

答案 0 :(得分:5)

Dlib的人脸检测器经过训练可以处理80x80个人脸。如果要检测较小的面部,可以采用两种方法:

  1. 增加分辨率以使面部更大。你可以使用pyramid_up或任何其他方式lice cv :: resize。并且你可以增加2倍的结果,但可能是1.5倍就足够了 - 它就在你身上
  2. 训练可以在小脸上工作的新面部检测器 - dlib有训练过程的样本
  3. 接下来你的问题是人脸检测器的表现。是的,这取决于分辨率,如果你想在13 MP图像上检测20x20面部 - 它会很慢。为了使其快速运行,您可以选择以下选项:

    1. 减少检测器应处理的像素数量 - 使用正确的比例和感兴趣的区域
    2. 使用灰度图像
    3. reduce the amount of scale changes at scanning process
    4. 使用FAQ中的建议。我只能补充一点,MinGW / GCC代码比MSVC快20%左右,而Android / ARM代码没有使用SIMD指令
    5. 用于视频:apply motion detection并仅检测更改的区域(手动裁剪并在裁剪区域中检测),并在不同的线程中运行帧以消耗所有CPU核心