gpt4 book ai didi

opencv - 无法在Raspberry Pi的NCS2上处理openvino dnn识别器

转载 作者:行者123 更新时间:2023-12-02 16:27:36 25 4
gpt4 key购买 nike

我正在尝试使用Intel 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上运行识别器代码。据说Intel openvino库不支持Raspberry Pi Arm处理器,因此会引发错误。

我尝试使用OpenCV文档中的其他各种setPreferableTarget和SetPreferrableBackend设置。根据文档,唯一允许使用的组合数不胜数是DNN_TARGET_MYRIAD的目标和DNN_BACKEND_INFERENCE_ENGINE的后端。但是,没有任何组合有效。

有什么建议么?

最佳答案

Artemy的评论使我开始考虑版本,因此我查看了一个我认为与版本无关的警告。事实证明,这是sklearn中的版本冲突,以某种方式阻止了NCS2上识别器的运行。安装旧的0.20.2版本的scikit-learn可以修复此问题。

这真的让我感到困惑,因为我不希望MYRIAD调用依赖于python库。也许我不小心在某个地方更改了另一个设置。

有趣的是,对于我的视频应用程序而言,识别器的第一次通过大约需要30秒,但之后每张脸只需要大约50毫秒。

关于opencv - 无法在Raspberry Pi的NCS2上处理openvino dnn识别器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60460765/

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