运行特征图例程错误解决
这个神经网络处理器第二个例程就非常的曲折了,由于工具有限,解决方案也是十分有限。因为这个是特别以前的例程了,在现在的IDE 上不能很好实现,后用到终端Putty实现了一下例程,现在就简介一下历时两天的心酸路。
例程2:运行特征图
据群主介绍,这些运行特征图的例程都太古老了,不能在咱们新版IDE实现,有以下错误。 在原有例程的基础上,做以改动,可以运行,说明摄像头可以正确采集图像,可以再次说明是例程和模型版本问题。 例程如下
# Untitled - By: 86177 - 周四 2月 6 2020
import sensor,image,lcd
import KPU as kpu
lcd.init()
sensor.reset()#初始化单目摄像头
sensor.set_pixformat(sensor.RGB565)#设置摄像头输出格式 RGB565
sensor.set_framesize(sensor.QVGA)#设置帧大小 QVGA
sensor.run(1)#开启芯片捕获对象
task=kpu.load(0x300000)#从flash中加载模型,模型在flash中偏移大小
img=image.Image()#创建图像对象
info=kpu.netinfo(task)#获取模型的网络结构对象
layer=info[3]#当前层子在网络中的层数
w=layer.wo()#输出宽度
h=layer.ho()#输出高度
num=int(320*240/w/h)
list=[None]*num
x_step=int(320/w)
y_step=int(240/h)
img_lcd=image.Image()
while True:
img=sensor.snapshot()#控制摄像头捕捉图像
#网络前向运算,输出目标层的特征图
#对象,从sensor采集到的图像,层数
fmap=kpu.forward(task,img,3)
for i in range(0,num):#取特征图的指定通道数据到image对象
list[i]=kpu.fmap(fmap,i)
for i in range(0,num):
list[i].stretch(64,255)
for i in range(0,num):
a=img_lcd.draw_image(list[i],((i%x_step)*w,(int(i/x_step))*h))
lcd.display(img_lcd)#在液晶屏上显示一张 image
kpu.fmap_free(fmap)#释放特征图对象
群主大人接着又让我试了,还是版本问题。 显示的一直连接不上,应该又是模型错误了。 在将固件再次更新到0.5后,才又成功连接。发现的确是模型太老了,不匹配。如下。
于是还是在群主大人开始建议的Putty终端实践这个例程,明明之前成功用过一次Putty,可是这次错误百出,还是开始学的不认真呀,没有底子。 错误一:打开Putty后回车没反应,也敲不上去字,更不要说什么交互界面了。那就要勾选以下选项了,好运。 如果敲不上字,回车没反应,就必须勾选以下选项了。 错误二:不能运行 粘贴进去例程,回车或者ctrl d都不能运行。 这是因为搞错了顺序,一定要记住,要先用ctrl d,reset开机呀 现在好了,终于可以可以开机了。 在Putty里的复制粘贴不太常规哦,复制过来的代码要用鼠标右键粘贴,选择、复制这些操作也都是通过鼠标来完成的。在 Window-〉Selection 这里可以设置复制和粘贴的方式。 默认的 鼠标按键的功能的选项是 : 选中,直接用鼠标左键拖拉选中,或者是用鼠标中键单击选中区域的开头,用滚动条拖拉到期望选中区域的末尾,再用鼠标中键单击。 复制,单击鼠标左键。 粘贴,右击鼠标右键。 现在,粘贴进特征图的代码,运行正确。 注:其实这个还可以把模型文件放到sd卡上面试试,工具有限,先留着。
