矽速科技 · 2023年02月10日 · 广东

MAIX-III AXera-Pi 系列文章:上手之丝滑玩转 AI 板卡【二】

基础对事物的发展起决定作用,也影响着事物发展的上限。

回顾往期文章

MAIX-III AXera-Pi 系列文章(1):新一代 3.6T 视觉 AI Linux 板卡面世

MAIX-III AXera-Pi 系列文章(2):丰富多采的 AI 应用

MAIX-III AXera-Pi 系列文章(3):Debian 系统 & 开箱案例

MAIX-III AXera-Pi 系列文章:开箱之硬件初体验

MAIX-III AXera-Pi 系列文章:上手之丝滑玩转 AI 板卡【一】

前言

通过上手系列的【一】章节我们熟悉并验证 M3AXPI 板卡上的串口、网口以及 WIFI 联网等功能。而在本片文章我们将进一步的验证硬件外设并体验最新的 YOLOv8 AI 应用!

1680602124214.jpg

流程导读

这里会插播一些食用 tip!

上手指南的顺序是经过思量考究的,如果是小白无基础的小伙伴们不建议跳着看!这篇文章唯一且清晰的目的:验证 M3AXPI 的功能完好以及让大家能够上手使用(默认懂 Python)如果在途中对操作有疑惑请查看 SIPEED M3AXPI 的官方文档,或自行学习相关知识。

  • 上手流程导读:因篇幅过长,文章分为【一】和【二】双篇章
  1. 准备工作:准备好需要使用的硬件工具、软件、镜像包等以及烧录 Linux 并启动 M3AXPI。
  2. 开启上手之旅:学会如何使用串口进行登陆,认识网口,并使用网口给板卡进行联网。
  3. 验证硬件功能:验证 M3AXPI 板卡上的按键、LDE 灯、麦克风等外设。
  4. 体验 AI 应用:验证屏幕以及摄像头并体验 AI 应用。
前两个流程步骤请参考:MAIX-III AXera-Pi 系列文章:上手之丝滑玩转 AI 板卡【一】
  • 资料来源说明
本文的操作基于官方文档来阐述,笔者做了更详细的补充以及说明。
M3axpi 官方文档:wiki.sipeed.com/m3axpi
M3AXPI 产品购买渠道:https://item.taobao.com/item....

验证硬件功能

我们在 【开箱初体验】中对 M3AXPI 的硬件外设进行过初步的外观判断,但外设功能是否能正常使用,还需我们进一步的来验证。

用按键点个灯

当你不知道干什么的时候,就给你的板卡点个灯吧 ~
我们使用到的按键是 USER GPIO2 21 通过按下弹起的动作来控制 LED0 的亮灭。

1680777114498.jpg

上图是 USER 以及 LED0 相关的原理图,这里只阐述该怎么验证以及怎么点灯,具体相关的定义以及对应的引脚、以及更多的 PythonC 测试 GPIO 的方法请看文档:GPIO

第一步:在终端运行以下的代码,并按下松开按键:USER
第二步:观察 LED0 会随着按键的起伏点亮熄灭

echo 85 > /sys/class/gpio/export
echo 68 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio85/direction
echo out > /sys/class/gpio/gpio68/direction

while true
do
    value=$(cat /sys/class/gpio/gpio85/value)
    if [ $value -eq 1 ]
    then
        echo 1 > /sys/class/gpio/gpio68/value
    else
        echo 0 > /sys/class/gpio/gpio68/value
    fi
    sleep 0.1
done

体验语音识别

当成功点亮一颗 LED 灯后我们下一步验证麦克风的功能,体验 M3AXPI 内置的中英文语音识别模型,拥有属于自己的翻译机 ~

第一步:使用 cd /home/sherpa-ncnn-m3axpi 进入系统放置模型的目录。
第二步:运行以下的代码启动模型,等待终端返回信息。

1680837032036.jpg

#中文语音识别命令行
./sherpa-ncnn-alsa \
./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/tokens.txt \
./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/encoder_jit_trace-pnnx.ncnn.param \
./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/encoder_jit_trace-pnnx.ncnn.bin \
./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/decoder_jit_trace-pnnx.ncnn.param \
./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/decoder_jit_trace-pnnx.ncnn.bin \
./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/joiner_jit_trace-pnnx.ncnn.param \
./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/joiner_jit_trace-pnnx.ncnn.bin  \
"hw:0,0" \
4 \
greedy_search

第三步:对着 M3AXPI 板卡(麦克风靠近卡槽区域)说话或播放声音,模型会自动识别出中文并返回打印到终端。

1680769324234.jpg

用耳机听个歌

有麦克风可供音频输入怎么会没有音频输出口呢?
接下来我们来验证另一个外设:3.5mm 耳机接口并尝试播放音频的效果!

第一步:准备一条 3.5mm 接口的 有线耳机扬声器
第二步:把耳机接入接口并运行以下命令行
第三步:耳机会传来熟悉的声音~ 咻(bushi!注意音量)

aplay /home/res/boot.wav
# boot.wav 是已提前内置在系统的音频,也就是大家熟悉的 `咻咻咻` 开机声,可自用更换音频体验。

1680771075542.jpg

体验 AI 应用

实际上到达了这一步我们应该接着验证屏幕以及摄像头,验证外设才算彻底完整,但笔者认为单纯的验证外设是浪费时间的。众所周知 M3AXPI 主打的特点是 AI + 视觉,我们可以在验证外设的同时一起体验 AI 推理应用,从而让大家更好的了解 AI 板卡的功能以及性能。

屏幕与 AI 推理一张图(YOLOv5s)

这里还是以终端来演示举例,以 YOLOv5s 目标检测模型来推理一张猫猫图。

/home/ax-samples/build/install/bin/ax_yolov5s -m /home/models/yolov5s.joint -i /home/images/cat.jpg -r 10
fbon
fbv yolov5s_out.jpg

终端会返回推理结果,板卡屏幕会显示推理的猫猫图。

5acb1d2da019f38282f869277e71087.jpg

摄像头与 AI 实时推理应用(YOLOv8)

在体验过一张图的推理应用后,我们可以通过将摄像头与 AI 模型相结合,体验与摄像头结合的实时且更真实的 AI 应用,能帮助大家更好的去理解 AI 计算机四大基本任务:分类、定位、检测、分割。
而 YOLOv8 则是今年最新的 YOLO 系列物体检测和图像分割模型的版本,我们可以体验到目前最新且更强大的 AI 模型!

以下应用由 Jupyter notebook 来演示如何运行 AI 应用!

第一步:在终端用 ifconfig 获得板卡的 IP 地址。
第二步:输入 jupyter notebook 启动网页,用任意浏览器输入 IP + :8888 打开网页。
第三步:输入密码 root 访问,网页会跳转到 Files 页面,点击右侧 New 新建 Python3 运行环境。
第四步:进入后在编辑框粘贴以下代码并点击运行,即可在板卡屏幕 YOLOv8 的目标检测应用!

更多使用方法请点击 Python API 文档查看
import time
from ax import pipeline

pipeline.load([
    'libsample_vin_ivps_joint_vo_sipy.so',
    '-p', '/home/config/yolov8.json',
    '-c', '2',
])

while pipeline.work():
    time.sleep(0.001)
    tmp = pipeline.result()
    if tmp and tmp['nObjSize']:
        for i in tmp['mObjects']:
            x, y, w, h = i['bbox']['x'], i['bbox']['y'], i['bbox']['w'], i['bbox']['h']
            objname, objprob = i['objname'], i['prob']
            print(objname, objprob, x, y, w, h)
        # if tmp['nObjSize'] > 10: # try exit
        #     pipeline.drop()

https://www.bilibili.com/vide...

摄像头与 AI 实时推理应用(人体关键点)

除了分类、定位、检测和分割任务,AI 模型在应用上的多元化越来越明显,人体姿态关键点检测就是其中之一。

直接在编辑框运行以下代码即可体验人体姿态关键点应用。

import time
from ax import pipeline

pipeline.load([
    'libsample_vin_ivps_joint_vo_sipy.so',
    '-p', '/home/config/ax_pose.json',
    '-c', '2',
])

while pipeline.work():
    time.sleep(0.001)
    tmp = pipeline.result()
    if tmp and tmp['nObjSize']:
        for i in tmp['mObjects']:
            print(i)
        # if tmp['nObjSize'] > 10: # try exit
        #     pipeline.drop()

https://www.bilibili.com/vide...

想了解更多 AI 模型可前往文档查看:Python API

知识拓展区

上文我们分别验证了硬件外设、屏幕以及摄像头,确保我们收到后的板卡无任何硬件问题后,还体验了 AI 与屏幕的图片推理、与摄像头的实时推理应用,撒花 ~ M3AXPI 的上手正文到这里结束了!后续会为大家提供更多的进阶学习以及项目应用落地!

下面我们会更新一些 M3AXPI 板卡操作的补充章节。

如何传输文件

如果在使用途中出现板端互传文件的需求,可根据以下几种方式进行传输:

读卡器物理传输

物理传输:由于 Linux 系统采用 ext4 分区在 Windows / Mac 默认系统下无法进行查看,用户需额外安装增强工具才能读取到具体的分区。而 Linux 系统可直接看到卡里的分区和内容,也可以选择把读卡器接到安卓设备通过 OTG 转接头实现文件拷贝。

资料参考:
1.如何在 Windows 下访问 ext4 格式的硬盘?
2.[macOS] 在 macOS 上挂载 Linux 的 ext/ext3/ext4 文件系统

板端传输文件

  1. 使用 SSH 远程管理工具进行文件传输:(默认已使用 SSH 登录到板卡上了)

在 Windows 上有众多远程管理 Linux 服务器的工具都提供了文件传输的功能,这里推荐免费绿色的 ElectermMobaxterm 工具。
Electerm 来举例,SSH 登录后直接点击 Sftp 接入文件页面即可进行传输操作。

1680772653040.jpg

资料参考:

  1. 如何使用 MobaXterm
  2. 利用 MobaXterm 实现 Linux 和 Windows 之间传输文件
  3. 用 MobaXterm 在 Linux 和 Windows 之间上传/下载文件
  1. 使用 scp 命令复制文件

和 cp 复制文件等命令一样,它就是 ssh + cp = scp 这个意思。

资料参考: Linux 操作系统 scp 命令使用方法
  1. 使用有线串口互传文件:

使用前根据串口 serial 登录连上板卡,安装 apt-get install lrzsz 工具后可参考以下文章。

有线串口 serial 登录

使用命令行工具 minicom -D /dev/ttyUSB0 -b 115200 可以查看以下文章。

Ubuntu 中使用 minicom 玩转文件的上传与下载

如何更新设备树、内核、应用等

  • 安装或更新软件

因为板卡是 Linux 系统我们可以通过 apt 更新软件。
比如安装 gcc gdb ffmpeg 等常用 Linux 软件,只需要使用下述命令即可,其他软件安装也同理。

sudo apt update
sudo apt install gcc gdb ffmpeg
  • 更新内核与驱动

在 SD 卡的第一分区会挂载到系统根目录下的 /boot 系统启动相关的文件,替换它后重启(reboot)即可完成更新。

  • boot.bin 芯片 spl 初始化程序
  • uboot.bin uboot 启动引导程序
  • kernel.img linux 内核
  • dtb.img linux 设备树

例如:以下操作完 reboot 即可生效

  • 更新设备树可以用 cp /boot/dtb.img.lcd20221025 /boot/dtb.img
  • 更新内核驱动可以用 cp /boot/kernel.img.rtl8723bs /boot/kernel.img

实现 EMMC 量产相关方案

目前已经支持 M3AXPI EMMC 量产的相关方案实现。

参考资料:https://www.cnblogs.com/juwan...

还想了解更多内容?

内容链接
AXera-Pi 产品介绍https://mp.weixin.qq.com/s/JIvVprWlQPvE7bTxozAG_Q
AXera-Pi 产品资料wiki.sipeed.com/m3axpi
海外购买渠道https://fr.aliexpress.com/item/1005005016931077.html
国内购买渠道https://item.taobao.com/item.htm?id=682169792430
AI 开发工具链https://pulsar-docs.readthedocs.io/
AI 示例仓库https://github.com/AXERA-TECH/ax-samples
Python APIhttps://github.com/junhuanchen/ax-pipeline-api
系统 BSP SDKhttps://github.com/sipeed/axpi_bsp_sdk
基础 C++ SDKhttps://github.com/sipeed/libmaix
进阶 C++ SDKhttps://github.com/AXERA-TECH/ax-pipeline
AXERA 技术交流群专供 AI ISP 技术交流:139953715
荔枝 MaixPy3 AI 交流群产品开箱小白答疑:756313869
AI 训练平台http://maixhub.com
在线文档http://wiki.sipeed.com
交流社区http://bbs.sipeed.com
开源组织http://github.com/sipeed
官方推特https://twitter.com/SipeedIO
商业邮箱support@sipeed.com
推荐阅读
关注数
7442
内容数
92
人工智能边缘计算软硬件解决方案,提供高性能、低成本、低功耗、易使用的硬件选型方案.
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息