具有面部检测和形状预测功能的Dlib网络摄像头捕获速度很慢

贡迪尔

我正在使用C ++开发一个程序,该程序应该从网络摄像头流中检测面部,而不是使用面部地标裁剪并交换它们。

我使用OpenCV和Viola-Jones面部检测对面部检测进行编程。工作正常。然后,我搜索了如何从ROI进行细分。我尝试了很少的皮肤检测实现,但没有一个成功。

比我发现dlib脸部地标。我决定尝试一下。刚开始我就遇到了问题,因为我必须将转换cv::Matcv_image,将Rect转换为矩形等。因此,我尝试使用dlib做到这一点。我只是使用流,cv::VideoCapture而不是想要显示使用dlib捕获的内容image_window但是这里有一个问题,它速度缓慢。Down是使用的代码。带注释的行是使用OpenCV执行相同操作的行。OpenCV比没有注释的代码要快,流畅,连续得多,就像5 FPS。那太糟了。我无法想象应用人脸检测和人脸标志时会有多慢。

难道我做错了什么?我怎样才能使其更快?还是应该使用OpenCV进行视频捕获和显示?

cv::VideoCapture cap;
image_window output_frame;

if (!cap.open(0))
{
    cout << "ERROR: Opening video device 0 FAILED." << endl;
    return -1;
}

cv::Mat cap_frame;
//HWND hwnd;
do
{
    cap >> cap_frame;

    if (!cap_frame.empty())
    {
        cv_image<bgr_pixel> dlib_frame(cap_frame);
        output_frame.set_image(dlib_frame);
        //cv::imshow("output",dlib::toMat(dlib_frame));
    }

    //if (27 == char(cv::waitKey(10)))
    //{
    //  return 0;
    //}

    //hwnd = FindWindowA(NULL, "output");
} while(!output_frame.is_closed())//while (hwnd != NULL);

编辑:切换到“释放”模式后,显示经过捕捉的帧会变好。但是我继续尝试使用dlib进行人脸检测形状预测就像这里的示例http://dlib.net/face_landmark_detection_ex.cpp.html一样太懒了。所以我关闭了形状预测。仍然“懒惰。

因此,我认为人脸检测会降低速度。因此,我尝试使用OpenCV进行人脸检测,因为它明显优于dlib检测器我需要将检测到的cv :: Rect转换为dlib :: rectangle。我用这个

std::vector<dlib::rectangle> dlib_rois;
long l, t, r, b;

for (int i = cv_rois.size() - 1; i >= 0; i--)
{
    l = cv_rois[i].x;
    t = cv_rois[i].y;
    r = cv_rois[i].x + cv_rois[i].width;
    b = cv_rois[i].y + cv_rois[i].height;
    dlib_rois.push_back(dlib::rectangle(l, t, r, b));
}

但是,OpenCV人脸检测dlib形状预测的这种结合变得残酷迟钝处理单帧大约需要4s。

我不知道为什么。OpenCV人脸检测绝对不错,dlib形状预测似乎并不难处理。有人可以帮我吗?

艾泽奎尔·阿德里安(Ezequiel Adrian)

您可以采取多种措施使Dlib运行更快,然后再假设它运行缓慢。您只需要阅读更多文档并尝试。

  • Dlib能够在很小的区域(80x80像素)中检测面部。您可能正在以大约1280x720的分辨率发送原始WebCam帧,这不是必需的。根据经验,我建议将帧减少到原始分辨率的四分之一左右。是的,Dlib可以使用320x180。结果,您将获得4倍的速度。

  • 如评论中所述,通过在构建Dlib的同时打开编译优化,可以大大提高速度。

  • Dlib处理灰度图像的速度更快。您不需要网络摄像头框架上的颜色。您可以使用OpenCV将以前减小尺寸的框架转换为灰度。

  • Dlib花时间寻找人脸,但是在人脸上找到地标的速度非常快。仅当您的网络摄像头提供高帧率(24-30fps)时,您才能跳过某些帧,因为脸部通常不会移动太多。

有了这些优化,我相信您的检测速度至少会提高12倍。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章