基础对事物的发展起决定作用,也影响着事物发展的上限。
回顾往期文章
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 应用!
流程导读
这里会插播一些食用 tip!
上手指南的顺序是经过思量考究的,如果是小白无基础的小伙伴们不建议跳着看!这篇文章唯一且清晰的目的:验证 M3AXPI 的功能完好以及让大家能够上手使用(默认懂 Python)如果在途中对操作有疑惑请查看 SIPEED M3AXPI 的官方文档,或自行学习相关知识。
- 上手流程导读:因篇幅过长,文章分为【一】和【二】双篇章
- 准备工作:准备好需要使用的硬件工具、软件、镜像包等以及烧录 Linux 并启动 M3AXPI。
- 开启上手之旅:学会如何使用串口进行登陆,认识网口,并使用网口给板卡进行联网。
- 验证硬件功能:验证 M3AXPI 板卡上的按键、LDE 灯、麦克风等外设。
- 体验 AI 应用:验证屏幕以及摄像头并体验 AI 应用。
前两个流程步骤请参考:MAIX-III AXera-Pi 系列文章:上手之丝滑玩转 AI 板卡【一】
- 资料来源说明
本文的操作基于官方文档来阐述,笔者做了更详细的补充以及说明。
M3axpi 官方文档:wiki.sipeed.com/m3axpi
M3AXPI 产品购买渠道:https://item.taobao.com/item....
验证硬件功能
我们在 【开箱初体验】中对 M3AXPI
的硬件外设进行过初步的外观判断,但外设功能是否能正常使用,还需我们进一步的来验证。
用按键点个灯
当你不知道干什么的时候,就给你的板卡点个灯吧 ~
我们使用到的按键是 USER GPIO2 21 通过按下弹起的动作来控制 LED0 的亮灭。
上图是 USER 以及 LED0 相关的原理图,这里只阐述该怎么验证以及怎么点灯,具体相关的定义以及对应的引脚、以及更多的Python
或C
测试 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
进入系统放置模型的目录。
第二步:运行以下的代码启动模型,等待终端返回信息。
#中文语音识别命令行
./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 板卡(麦克风靠近卡槽区域)说话或播放声音,模型会自动识别出中文并返回打印到终端。
用耳机听个歌
有麦克风可供音频输入怎么会没有音频输出口呢?
接下来我们来验证另一个外设:3.5mm 耳机接口并尝试播放音频的效果!
第一步:准备一条 3.5mm 接口的 有线耳机
或 扬声器
第二步:把耳机接入接口并运行以下命令行
第三步:耳机会传来熟悉的声音~ 咻(bushi!注意音量)
aplay /home/res/boot.wav
# boot.wav 是已提前内置在系统的音频,也就是大家熟悉的 `咻咻咻` 开机声,可自用更换音频体验。
体验 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
终端会返回推理结果,板卡屏幕会显示推理的猫猫图。
摄像头与 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 文件系统
板端传输文件
- 使用 SSH 远程管理工具进行文件传输:(默认已使用 SSH 登录到板卡上了)
在 Windows 上有众多远程管理 Linux 服务器的工具都提供了文件传输的功能,这里推荐免费绿色的 Electerm
和 Mobaxterm
工具。
以 Electerm
来举例,SSH 登录后直接点击 Sftp
接入文件页面即可进行传输操作。
资料参考:
- 使用 scp 命令复制文件:
和 cp 复制文件等命令一样,它就是 ssh + cp = scp
这个意思。
资料参考: Linux 操作系统 scp 命令使用方法
- 使用有线串口互传文件:
使用前根据串口 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 API | https://github.com/junhuanchen/ax-pipeline-api |
系统 BSP SDK | https://github.com/sipeed/axpi_bsp_sdk |
基础 C++ SDK | https://github.com/sipeed/libmaix |
进阶 C++ SDK | https://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 |