【发布时间】:2020-02-28 23:57:29
【问题描述】:
我正在尝试使用英特尔 NCS2 设备在我的 Raspberry Pi 4 上运行人脸检测器/人脸识别器 Python 脚本。
根据 pyimagesearch.com 上的优秀博客,我在安装了 OpenCV 和 Openvino 的 Pi 4 上运行。
使用此代码运行人脸检测,设置为针对 NCS2(无数)设备:
detector = cv2.dnn.readNetFromCaffe("face_detection_model/deploy.prototxt",
"face_detection_model/res10_300x300_ssd_iter_140000.caffemodel")
detector.setPreferableTarget(cv2.dnn.DNN_TARGET_MYRIAD)
检测器运行与
imageBlob = cv2.dnn.blobFromImage(
cv2.resize(image, (300, 300)), 1.0, (300, 300),
(104.0, 177.0, 123.0), swapRB=False, crop=False)
detector.setInput(imageBlob)
detections = detector.forward()
人脸检测器运行良好且运行流畅。
但是,然后,我在检测器找到的面部上设置了一个图像识别器。
embedder = cv2.dnn.readNetFromTorch("face_embedding_model/openface.nn4.small2.v1.t7"])
embedder.setPreferableTarget(cv2.dnn.DNN_TARGET_MYRIAD)
然后我根据检测框使用人脸图像调用它
face = image[startY:endY, startX:endX]
(fH, fW) = face.shape[:2]
faceBlob = cv2.dnn.blobFromImage(face, 1.0 / 255, (96, 96),
(0, 0, 0), swapRB=True, crop=False)
embedder.setInput(faceBlob)
vec = embedder.forward()
但是,当它到达 vec=embedder.forward() 时,会抛出以下错误
Failed to Initialize Inference Engine backend : Device with “CPU” name is not registered in the InferenceEngine in function ‘initPlugin’
我不知道为什么该函数正确地针对 NCS2 进行检测,但无法为识别器运行。
据我所知,它试图在 CPU 上运行识别器代码,而不是 NCS2。据称英特尔 openvino 库不支持 Raspberry Pi Arm 处理器,因此会引发错误。
我尝试使用 OpenCV 文档中的各种其他 setPreferableTarget 和 SetPreferrableBackend 设置。根据文档,与 myriad 的唯一允许组合是 DNN_TARGET_MYRIAD 的目标和 DNN_BACKEND_INFERENCE_ENGINE 的后端。但没有任何组合有效。
有什么建议吗?
【问题讨论】:
-
如果您首先初始化识别器模型,那么您会在检测器上得到错误吗?您可以尝试将多个检测器分配给无数个吗?
-
有趣的建议。更改代码以首先初始化识别器并不能修复它。我仍然收到相同的错误消息。我可以分配第二个检测器,它似乎可以在无数个检测器上运行。有趣的是,同一图像的检测器参数是不同的。我不确定这里发生了什么。
-
您使用的是哪个 OpenCV 和 OpenVINO 版本?我猜测网络
face_embedding_model/openface.nn4.small2.v1.t7无法在 NCS2 上执行,并在这种情况下尝试回退到 CPU。为了确认我可以建议尝试使用 OpenVINO 的标准应用程序运行网络。更多信息请参考docs.openvinotoolkit.org/latest/…。 -
从 version.txt 中,我有 OpenVINO 版本 release_2019_R3_InferenceEngine_30677,2019 年 9 月 16 日
-
和 OpenCV 版本 4.1.2-openvino。我不太清楚使用“OpenVINO 的标准应用程序”是什么意思据我所知,如果没有 NCS2 设备,我认为我无法在 Raspberry Pi 上运行任何 OpenVINO。
标签: opencv raspberry-pi face-recognition openvino