当前位置: 首页 > 知识库问答 >
问题:

未能在树莓派上处理NCS2上的openvino dnn识别器

张嘉熙
2023-03-14

我试图在我的覆盆子Pi 4与英特尔NCS2设备上运行人脸检测器/人脸识别器Python脚本。
我正在运行的Pi 4与OpenCV和Openvino安装每个优秀的博客在pyimagesearch.com.

人脸检测使用此代码运行,设置为针对NCS2(myriad)设备:

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_expression_引擎的后端。但没有一种组合是有效的。

有什么建议吗?

共有1个答案

曹涵润
2023-03-14

Artemy的评论让我想到了版本,所以我研究了一个版本警告,我认为这与版本无关。原来是sklearn中的版本冲突以某种方式阻碍了NCS2上识别器的运行。安装旧的0.20。2版本的scikit学习修复了它。

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

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

 类似资料:
  • 9.6 在树莓派上破解无线网络 大部分的命令可以正常的运行在BackTrack5或Kali上。在Kali上可以实现的无线渗透测试,在树莓派上也可以运行。在第1章中介绍了在树莓派上安装Kali Linux操作系统,下面将介绍在树莓派上实现无线攻击。 (1)在树莓派上使用ifconfig命令查看无线网卡是否被识别。执行命令如下所示: [email protected]:~# ifconfig eth0

  • 我试图让一个树莓派流到一个crtmpserver,并从那里到一个网页与JWplayer。 我可以用这个成功地将视频发送到crtmpserver: raspivid-t 0-w 960-h 540-fps 25-b 500000-vf-o-|ffmpeg-i--acodec aac-ac 2-严格实验-ab160k-vcodec libx264-预设慢速配置文件:v基线级别30-maxrate 10

  • Raspbian All-in-One 终端中登陆树莓派 停止正在运行的 Home Assistant 服务:sudo systemctl stop home-assistant.service 切换至 homeassistant 用户:sudo su -s /bin/bash homeassistant 切换至虚拟环境:source /srv/homeassistant/homeassistan

  • Linux 是使用最广泛的开源操作系统,而树莓派是新兴的开放硬件平台。两者相互结合,能激起很多有趣的火花。这一部分中,我将介绍树莓派的基本使用方法。

  • 所以,在Raspberry Pi上,我正在使用一个带有web界面的摄像头应用程序,我想通过添加Neopix来添加LED照明。我已经成功地做到了这一点,现在可以在运行两个python脚本时打开和关闭它。 解释和问题: 我在中有一个可执行的python脚本。 我在中有一个外壳脚本,它是可执行的,必须在中运行python脚本。外壳脚本属于'www.-data' 当我手动运行python文件时,它执行脚本

  • 更新时间:2019-06-05 16:42:07 目标 当前案例可以让你实现基于树莓派摄像头拍摄照片的上传与人脸特征识别,并把结果通过钉钉机器人推送。 说明 树莓派+摄像头是最简单实现图像识别的设备组合。我们使用阿里云设备连接的python SDK进行开发,检测到有人时把拍摄的照片上传到OSS,同时通过服务开发工作台监听设备上报图片事件,获取人脸图片并调用阿里云市场人脸识别API进行识别,最后将结