gpt4 book ai didi

c++ - 如何提高 dnn_mmod_face_detection 示例的速度

转载 作者:行者123 更新时间:2023-12-02 17:04:28 26 4
gpt4 key购买 nike

我正在创建程序来模糊视频中的人脸,我想使用
http://dlib.net/dnn_mmod_face_detection_ex.cpp.html
作为人脸识别的基础,因为它具有很好的效果并且使用起来非常简单。但问题是 - 处理单个图像大约需要 75 秒,而且相当长。 dlib 库是在未启用 cuda 的情况下编译的。我的 GPU 是 nvidia geforce gtx 560 ti - 它支持 cuda,但不支持 cudnn,只要知道,如果没有这两个库,就不可能用 cude 支持编译 dlib。那么,因为我不能原生使用 GPU 加速,有没有办法提高程序的速度?我对 OpenMP 有一些经验,但我不知道我是否可以在这里使用,因为示例中最长的部分 - 这一行auto dets = net(img);

最佳答案

您的结果是在没有 GPU 支持的情况下使用 Dlib 的 DNN 的典型结果。没有任何有意义的方法可以加速实际代码。它已经是多线程和 SIMD/AVX 优化的。要进一步加快速度,需要付出巨大的努力,可能还需要一些汇编代码工作。

但可能还有其他选择……下面的很多建议取决于您的要求(例如,要捕捉的最小面部尺寸、相机设置等)

根据源视频的分辨率和要捕获的最小人脸尺寸,您可以使用 0 作为第二个参数调用检测:

detector(image,0)

这将表明您不想对输入图像进行任何放大。目前我面前没有文档,但我相信在没有放大的情况下可以检测到的最小面部尺寸是 80px x 80px,这可能适用于您的情况。

与此相同的另一种选择是在处理之前对图像进行下采样。假设您在每个维度中将图像向下采样两个并使用 detector(image,0) 调用调用,您将只能检测到大小为 160 像素 x 160 像素的人脸。但是处理速度应该快4倍。

如果您可以概括人脸永远不会出现的地方,则可以将图像裁剪到相关区域并执行检测。然后只需修改检测框即可反转裁剪。

如果您无法概括,那么您可能会使用更快的不同“预检测器”,例如 OpenCV 的全身和上半身 haarcascades。然后使用这些预检测的输出将图像裁剪成更小的图像,并对这些裁剪执行 DNN 检测。

关于c++ - 如何提高 dnn_mmod_face_detection 示例的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57005291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com