今天为大家带来的是来自创作者X同学的作品:助盲环境感知装置. 这个装置主要利用Grove Vision AI V2-Camera module识别环境中的物体,并利用XIAO ESP32S3和树莓派进行语音输出,结合了物体检测和文本转语音技术,以向视障人士提供环境信息。
硬件
Seeed Studio XIAO ESP32S3 Sense
Rasberry Pi 1 Model B+
树莓派外壳
Grove -Vision Al Module V2
OV5647-69.1 FOV Camera module for Raspberry Pi 3B+4B
应用软件
SenseCraft AI
Arduino IDE
我使用 SenseCraft AI 来训练物体检测模型。SenseCraft AI 是进行模型训练和模型部署的领先开发平台。
要启动一个项目,您需要在 SenseCraft AI 输入您的账户(或创建一个免费账户)。然后就可以使用平台上提供的模型或者创建自己的模型了,这十分便捷。
在 SenseCraft AI 中,您可以上传现有的数据,也可以使用连接设备记录新数据。在我的项目中,我准备了一个数据集,其中包括一些常见物品,如椅子、桌子和路上的行人。数据集中包含的物品越多,模型就越有效。数据集的大小也很重要。我们能拍摄到的特定物体的图像越多,准确度就越高。
我在最初的项目中上传了 3 个物体的 312 张图片。以后我会上传更多对象的更多图像,调高模型的准确度。
将物品鉴别模型上传到Grove Vision AI
打开SenseCraft平台:Home - SenseCraft AI 打开SenseCraft主页,找到模型训练选项,点击进入
在模型训练界面首先选择分类识别类型,然后在”2”处选择设备Grove -Vision Al Module V2 点击连接,接着按照具体需求是否添加类别,并为分类命名
接着在第二步处选择设备Grove -Vision Al Module V2,点击开始训练,高级设置按需设置,否则默认即可,训练完毕后即可选择设备Grove -Vision Al Module V2进行模型部署。等待部署完成,我们在页面右侧即可观察到,通过摄像头对准物品,效果预览内的物体置信度也会实时改变。此步实现及说明模型部署成功。
#include <Seeed_Arduino_SSCMA.h>
SSCMA AI;
void setup()
{
AI.begin();
Serial.begin(600);
}
void loop()
{
if (!AI.invoke())
{
Serial.println("invoke success");
Serial.printf("perf: prepocess=%d, inference=%d, postprocess=%d\n",
AI.perf().prepocess, AI.perf().inference,
AI.perf().postprocess);
for (int i = 0; i < AI.boxes().size(); i++)
{
Serial.printf(
"box %d: x=%d, y=%d, w=%d, h=%d, score=%d, target=%d\n", i,
AI.boxes()[i].x, AI.boxes()[i].y, AI.boxes()[i].w,
AI.boxes()[i].h, AI.boxes()[i].score, AI.boxes()[i].target);
}
for (int i = 0; i < AI.classes().size(); i++)
{
Serial.printf("class %d: target=%d, score=%d\n", i,
AI.classes()[i].target, AI.classes()[i].score);
delay(2000);
}
for (int i = 0; i < AI.points().size(); i++)0
{
Serial.printf("point %d: x=%d, y=%d, z=%d, score=%d, target=%d\n",
i, AI.points()[i].x, AI.points()[i].y,
AI.points()[i].z, AI.points()[i].score,
AI.points()[i].target);
}
}
}
输出结果:
当我将摄像头对准人时,串口输出target1代表识别到人
当我将摄像头对准桌子时,串口输出target2代表识别到桌子
当我将摄像头对准椅子时,串口输出target0代表识别到椅子
XIAO ESP32S3 Sense搭配Grove -Vision Al Module V2 可检测周围环境中的物体,并返回物体的名称和位置。Raspberry Pi 用于通过 UART 接收物体名称和位置,并将文本转换为语音。在这里使用的是 Raspberry Pi 4 B,性能令人满意。在 Raspberry Pi 上安装操作系统后,我配置了音频控制系统,并将音量设置为 100%。
sudo raspi-config
然后,我在 Pi 上安装了免费的软件包 Festival。Festival 由英国语音技术研究中心编写,为构建语音合成系统提供了一个框架。它通过多种应用程序接口提供完整的文本到语音功能:从 shell 层、通过命令解释器、作为 C++ 库、从 Java 和 Emacs 编辑器界面。
使用以下命令安装 festival:
sudo apt-get install -y libasound2-plugins festival
安装festival后,连接了一个有线耳机,并使用以下音频进行了测试
echo "Hello World!" | festival --tts
然后,在 Raspberry Pi 上安装了 python 串行模块。
通过一根 USB-C 电缆将 XIAO ESP32S3 Sense 与 Raspberry Pi 连接起来。
为树莓派编写代码
在编写代码之前,我们需要知道 XIAO Sense 板的串口号。
连接好 XIAO Sense 板并将其插入 Raspberry Pi 后,我们可以在终端运行以下命令。
dmesg | grep tty
结果是:
现在我们知道串行端口号了。是时候编写代码了。我为 Raspberry Pi 编写了以下代码,将接收到的文本转换为语音
#!/usr/bin/env python
# 这行指定脚本使用的解释器(Python)
import time
import serial
import os
# 设置串口连接的参数,用于与设备进行通信
ser = serial.Serial(
port='/dev/ttyACM1', # 指定设备连接的端口。
baudrate = 115200, # 设置串口通信的波特率
parity=serial.PARITY_NONE, # 不使用奇偶校验位
stopbits=serial.STOPBITS_ONE, # 使用一个停止位
bytesize=serial.EIGHTBITS, # 每个字节有8位数据位
timeout=1 # 设置读取串口时的超时时间为1秒
)
# 进入一个无限循环,不断读取串口数据
while True:
receive_msg=ser.readline() # 从串口读取一行数据
print(receive_msg) # 打印接收到的数据
# 如果接收到的数据中包含“basin”的字样,则执行以下操作:
if b'basin' in receive_msg.lower():
os.system('echo "basin in front" | festival --tts')# 使用festival语音合成引擎朗读提示信息。
# 如果接收到的数据中包含“1”的字样,则执行以下操作:
if b'1' in receive_msg.lower():
os.system('echo "people in front" | festival --tts')
# 如果接收到的数据中包含“0”的字样,则执行以下操作:
if b'0' in receive_msg.lower():
os.system('echo "chair in front" | festival --tts')
# 如果接收到的数据中包含“2”的字样,则执行以下操作:
if b'2' in receive_msg.lower():
os.system('echo " table in front" | festival --tts')
//以此类推
测试结果:
bashrc 配置
修改 .bashrc 文件。
sudo nano /home/pi/.bashrc
echo Running at boot
sudo python /home/pi/sample.py
上面的 echo 命令用于显示 .bashrc 文件中的脚本已经开始运行。
Bash RC 配置程序会在树莓派启动时自动运行。.bashrc 文件中的命令在运行时会打开一个新的终端窗口。
但是当我在配置好以上内容时,出现如下报错:
解决办法:
对我来说,我必须添加创建文件 /etc/asound.conf
并在此文件中并添加此内容:
pcm.!default {
type asym
playback.pcm {
type plug
slave.pcm "hw:2,0"
}
}
这样在树莓派连接电源开机时,此程序就会自动运行啦!
基于Seeed树莓派基础外壳,通过打孔将XIAO ESP32S3与Grove V2安装在壳子外部。
最终呈现:
演示视频:
粉丝福利
柴火创客的母公司 Seeed Studio 给大家带来了Grove系列开发板每款产品的最低价,人民币113即可获取Grove Vision AI V2可扫码查看更多惊喜
创客项目秀|基于树莓派“亚当斯一家”机械手宠物
创客项目秀|基于XIAO 的图像分类处理项目
创客项目秀|基于 Raspberry Pi 5 的蜂窝物联网
创客项目秀|基于Raspberry Pi Zero的魔法报纸
创客项目秀|基于LVGL驱动的OLED屏的FFT声音实时可视化
创客项目秀|基于XIAO ESP32C3 的智能家居四路控制器
创客项目秀|基于Grove Vision AI2模块的边缘计算机视觉项目
创客项目秀|基于XIAOESP32S3 Sense的在线语音助手
创客项目秀|基于Seeed XIAO ESP32S3 sense的HA自动化鱼缸
创客项目秀|基于XIAO ESP32 sense的宠物猫检测项目
新一代信息技术赋能|人才升级|产业创新
Seeed Studio物联网设备试用中心落地柴火!
Chaihuo x.factory|深圳,河北