Dlib正面检测小脸

mha*_*hat 4 computer-vision face-detection dlib

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

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

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

Evg*_*niy 5

Dlib的人脸检测器经过培训,可以处理80x80的面部.如果要检测较小的面,您有两种方法:

  1. 增加分辨率以使面部更大.你可以使用pyramid_up或任何其他方式lice cv :: resize.你可以增加2倍的结果,但可能是1.5倍就足够了 - 它就在你身上
  2. 训练可以在小脸上工作的新面部探测器 - dlib有训练过程的样本

接下来你的问题是面部检测器的性能.是的,这取决于分辨率,如果你想在13 MP图像上检测20x20面部 - 它会很慢.为了使其快速工作,您有以下选择:

  1. 减少检测器应处理的像素数量 - 使用正确的比例和感兴趣的区域
  2. 使用灰度图像
  3. 减少扫描过程中的比例变化量
  4. 使用FAQ中的建议.我只能补充一点,MinGW/GCC代码比MSVC快20%左右,而Android/ARM代码没有使用SIMD指令
  5. 对于视频:应用运动检测并仅检测更改的区域(手动裁剪并在裁剪区域中检测),并在单独的线程中运行帧以使用所有CPU核心