- 作者:
- 分类:知识&开发->AI->edge_AI
- 阅读:25397
- 点赞:465
- 版权:CC BY-SA 4.0
- 创建:2021-11-05
- 更新:2021-11-06
原文链接(持续更新):https://neucrack.com/p/384
V831的效果:

K210的效果:

两个模型都有个缺点就是 1 容易识别成4, k210的模型识别远距离也不太行, v831的效果好些,总体比较粗糙了,但是也许你能用
k210的教程不在这里说了可以看这里: https://neucrack.com/p/325 ,
K210的模型这里自取: 链接: https://pan.baidu.com/s/1mhpn1sUlG9KGfaZ9xq3pIg 提取码: cimy ,
k210的模型文件使用:板子确保先烧录了固件,然后把所有文件放到SD 卡根目录,包括代码和模型都在里面了,上电就可以看到效果了
下面是 V831 的上手教程(注意不是k210的! k210的到这里就结束辣!!!!):
首先需要一个开发板
淘宝购买: https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-24053782153.4.21f952b1lCLyEk&id=635874427363
买全功能套餐, 有摄像头和屏幕
另外你需要一个 type-c 线(套餐应该有,问客服)
烧录镜像
按照文档烧录: https://wiki.sipeed.com/hardware/zh/maixII/M2/flash.html
文档内容主要是下载镜像: https://dl.sipeed.com/shareURL/MaixII/MaixII-Dock/SDK/release , 系统密码是123,用户名是root, 然后按照文档用读卡器+PhoenixCard 烧录就好了
启动系统
使用 type-c 线连接板子的 USB-UART 接口, 注意不是
USB-OTG接口, 如上面封面图所示, 屏幕右下角的接口然后使用串口终端, 比如 putty , 选择串口连接, 输入串口号,串口号可以在资源管理器看到

- 修改 wifi SSID 和密码以连接wifi
手动修改
vim /etc/wpa_supplicant.conf
然后最简单的方法,直接重启生效
reboot
或者执行一键配置脚本:
maixpy3_config.py
然后可以看到板子的 ip 地址,比如192.168.0.37
ifconfig
下载模型文件
到maixhub下载模型(需要注册登录)
或者百度云:
链接: https://pan.baidu.com/s/1mhpn1sUlG9KGfaZ9xq3pIg 提取码: cimy
会得到两个文件, 一个number_awnn.param和一个number_awnn.bin
下载源代码
使用如下源代码(复制后需要删掉后面的版权信息才能运行), 保存为文件run.py
注意, 复制代码要保证空格不要丢失,不然会无法运行, python 依靠缩进而不是大括号分段
from maix import nnfrom PIL import Image, ImageDraw, ImageFontfrom maix import display, cameraimport timefrom maix.nn import decoderdef draw_rectangle_with_title(draw, box, disp_str, bg_color=(255, 0, 0, 255), font_color=(255, 255, 255, 255)):# draw = ImageDraw.Draw(img)font = ImageFont.load_default()font_w, font_h = font.getsize(disp_str)draw.rectangle((box[0], box[1], box[0] + box[2], box[1] + box[3]), fill=None, outline=bg_color, width=2)draw.rectangle((box[0], box[1] - font_h, box[0] + font_w, box[1]), fill=bg_color)draw.text((box[0], box[1] - font_h), disp_str, fill=font_color, font=font)camera.config(size=(224, 224))labels = ["1", "2", "3", "4", "5", "6", "7", "8"]anchors = [2.44, 2.25, 5.03, 4.91, 3.5 , 3.53, 4.16, 3.94, 2.97, 2.84]model = {"param": "/root/number_awnn.param","bin": "/root/number_awnn.bin"}options = {"model_type": "awnn","inputs": {"input0": (224, 224, 3)},"outputs": {"output0": (7, 7, (1+4+len(labels))*5)},"mean": [127.5, 127.5, 127.5],"norm": [0.0078125, 0.0078125, 0.0078125],}print("-- load model:", model)m = nn.load(model, opt=options)print("-- load ok")w = options["inputs"]["input0"][1]h = options["inputs"]["input0"][0]yolo2_decoder = decoder.Yolo2(len(labels), anchors, net_in_size=(w, h), net_out_size=(7, 7))while 1:t = time.time()img = camera.capture()if not img:time.sleep(0.01)continueprint("-- capture: ", time.time() - t )t = time.time()out = m.forward(img, quantize=True, layout="hwc")print("-- forward: ", time.time() - t )t = time.time()boxes, probs = yolo2_decoder.run(out, nms=0.3, threshold=0.5, img_size=(240, 240))print("-- decode: ", time.time() - t )t = time.time()for i, box in enumerate(boxes):class_id = probs[i][0]prob = probs[i][1][class_id]disp_str = "{}:{:.2f}%".format(labels[class_id], prob*100)draw_rectangle_with_title(display.get_draw(), box, disp_str)print("-- draw: ", time.time() - t )t = time.time()display.show()print("-- show: ", time.time() - t )
上传文件到开发板内的文件系统
系统密码是123,用户名是root (密码默认可能没有)
linux 直接使用 scp命令拷贝;windows需要使用winscp传输文件, 不会使用请自行搜索
将上面的三个文件传输到/root/目录下

执行识别程序
cd /rootpython run.py
就可以看到屏幕显示图像, 摄像头对准卡片就可以识别到卡片了
开机自启
vim /etc/init.d/S02app
在start)部分添加
case "$1" instart)echo "Starting app..."(cd /root && python run.py > /dev/null 2>&1 &);;
自定义程序
修改/root/run.py即可
如果需要使用串口输出信息,参考这里: https://wiki.sipeed.com/soft/maixpy3/zh/usage/hardware/UART.html
这个串口示例的硬件接口是板子上的G6和G7

