本帖最后由 shakencity 于 2018-8-20 10:11 编辑
本章为您介绍如何使用角蜂鸟在Python快速调用内置部署的卷积神经网络。
以下将使用MNIST手写数字识别CNN网络作为基础实现第一个非常简易的Demo: Hello 2018 。 跟随教程我们将识别4张分别写着2018的图片,仅仅只用数行代码! 路径和文件 在运行示例程序前,需要从 SungemSDK-GraphModels 下载需要的文件,并拷贝至本项目对应的文件夹下。 SungemSDK-GraphModels/graphs -> examples/graphsSungemSDK-GraphModels/misc -> examples/misc- graphs: 储存内置CNN模型文件,修改/移动文件会导致部分API失效。
- misc: 储存图像、标签数据或其他杂物。
Hello 2018 在python目录下执行以下命令来启动 Hello 2018 范例。 ~/SungemSDK-Python/examples/apps/Hello2018$ python3 Hello2018.py 如果一切正常,将会得到以下结果: | ======= Horned Sungem ======= |
| Device found [0] |
| Model loaded to Python |
| Model allocated to device |
| ========================= |
Hello
[2]
[0]
[1]
[8] 4张MNIST数字图片成功识别。 代码解析 加载OpenCV、Numpy以及角蜂鸟HSAPI import cv2, sys, numpy as np
sys.path.append('../../../')
import hsapi as hs 初始化角蜂鸟、设定内置加载模型、识别对象图片的根目录 net = hs.HS('mnist')
imgRoot = '../../misc/2018_mnist/%d.jpg' 分别调取4张图片[1.jpg - 4.jpg]。使用OpenCV的imread获取每张图像位图矩阵并通过**.run(img)载入角蜂鸟中。角蜂鸟返回识别结果并打印。 print('Hello')
for n in [1,2,3,4]:
imgname = imgRoot % n
img = cv2.imread(imgname)
result = net.run(img)
print(result[1]) 如何只取角蜂鸟图像 调取以下函数即可。可参考范例GetImage.py。 注意:输出图像与OpenCV获取摄像头视频流一样为BGR图像。 image = net.getImage()疑难解答 Q&AQ: Python显示: No devices found
A: 找不到设备,请稍等数秒再试。如仍未找到请尝试重新连接角蜂鸟两端USB接口,确保正确连接。
Q: Python显示: Error: Failed to load graph, please check file path
A: 模型路径错误,可能改变了路径或模型文件名称。如改变模型文件路径,可尝试在初始化时将新模型文件夹输入至第二个参数。如:net = hs.HS('mnist',graphFolder='../MyNewPath/graph')
Q: Python显示: Error: Failed to allocate graph to device, please try to re-plug the device 或是 Exception: hsStatus.ERROR
A: 设备未重置或模型加载错误,一般是更换内部载入的模型导致,请尝试重新连接USB。如仍有问题可能是模型文件不完整或安装出现问题。
Q: Python显示:OpenCV Error: Assertion failed (VScn::contains(scn) && VDcn::contains(dcn) && VDepth::contains(depth)) in CvtHelper... line 253
A: 找不到图像路径。可print(image)来确定图像是否存在。
Q: 输出图像偶尔卡住反复出现两三帧如何解决?
A: 请拔出USB并重新连接,在未来版本将解决此问题。
Q: 如何更换模型或同一时间跑多个模型?
A: 目前更换模型需要重新连接USB,所以仍无法同时运行多个模型,但未来计划将会更新支持多个模型之间切换以及更便利高效的Pipeline模式。另外当前支持连接多个角蜂鸟进行集联,即可并行执行不同的任务。
Q: VMware虚拟机检测不到设备
A: 将虚拟机USB兼容性设置为`USB 3.0`。
|