资料介绍
描述
介绍
为什么选择 MaaXBoard Mini?
MaaXBoard Mini是基于 NXP 的i.MX 8M Mini 处理器的Avnet 开发板,该处理器具有四个 Cortex-A53 内核平台,每个内核的时钟频率为 1.8GHz。它具有一个 Pi hat 接口,以及四个 USB 端口、BLE 4.0、WIFI、一个 MIPI 摄像头接口和一个 MIPI 显示接口。
今年 2 月,我在几个机器学习模型上对 MaaXBoard Mini 和 8 台类似的单板计算机进行了基准测试。它在 Mobilenet SSD V.1 和 V.2 上的速度优于 Raspberry Pi 4 和 NVIDIA Jetson Nano (TF),并且在功耗方面优于除 Movidius NCS 和 MaaXBoard 之外的所有主板。
我认为它是用于机器学习的完美小型单板计算机,我想将它与Edge Impulse配对,Edge Impulse是在边缘训练机器学习的理想软件平台。
为什么要进行安全帽检测?
安全帽检测是用于建筑工地安全的有用的计算机视觉应用程序。是否有人在没有适当安全装备的情况下走进建筑工地?使用机器学习模型提醒您的施工主管注意不安全的情况。
设置
您需要执行几个设置步骤才能让 Edge Impulse CLI 在您的 MaaXBoard 或 MaaXBoard Mini 上运行。
设置您的 MaaXBoard
您需要做的第一件事是阅读我的Headless Setup 指南,使用 Debian 操作系统设置 MaaXBoard Mini,创建一个非 root 用户,然后通过 SSH 连接。
在 Edge Impulse 上创建一个新项目
如果您还没有帐户,下一步是在Edge Impulse上创建一个帐户。
转到 Edge Impulse 中的Object Detection 项目,然后选择“clone this project”。
在 MaaXBoard Mini 上安装 Edge Impulse Linux SDK
什么是 Edge Impulse Linux CLI 或 SDK?
Edge Impulse Linux CLI 或 SDK(文档交替使用这两个术语)是下载和运行为 linux 打包的 .eim 文件所必需的。它还允许从 Web 界面连接到电路板并收集传感器数据。有四种不同的语言 SDK。在这种情况下,我们将使用node.js SDK 。
为 Node.js 安装 Edge Impulse CLI 和 Linux SDK
启动您的 MaaXBoard Mini 并以您在Headless Setup期间创建的非 root 用户身份登录。
在您的 MaaXBoard 上安装node.js :
set -e
sudo apt install curl
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt install -y nodejs
node -v
上面的命令应该为您提供路径上的节点版本。在这种情况下,它应该是14.x
。
您将需要许多依赖项,包括libvips8 ,这是安装图像处理库sharp的要求。安装 libvips8 需要 20 多分钟,所以喝杯茶什么的:
sudo apt install -y gcc g++ make build-essential pkg-config glib2.0-dev libexpat1-dev sox v4l-utils libjpeg62-turbo-dev
wget https://github.com/libvips/libvips/releases/download/v8.10.5/vips-8.10.5.tar.gz
tar xf vips-8.10.5.tar.gz
cd vips-8.10.5
./configure
make -j
sudo make install
sudo ldconfig
您现在可以删除压缩的安装文件夹node-v12.13.0-linux-arm64.tar.xz和vips-8.10.5.tar.gz 。
最后,安装 edge-impulse CLI 和 Linux SDK:
sudo npm install edge-impulse-cli -g --unsafe-perm=true
sudo npm install edge-impulse-linux -g --unsafe-perm=true
如果您看到消息+ edge-impulse-linux@[VERSION]和+ edge-impulse-cli@[VERSION] ,成功!Edge Impulse CLI 现在已安装在您的 MaaXBoard 上。
收集数据
在 Edge Impulse 中收集数据的主要方式有 3 种
- 使用 Edge Impulse Linux SDK 连接开发板并通过 Web 界面收集数据
- 收集板上的数据,并通过 GUI 上传器上传
- 收集板上的数据,或使用现有数据集,然后使用主机 PC 上 Edge Impulse CLI 中的 Edge Impulse Uploader 上传数据。
删除示例项目中的现有数据
您之前在 Edge Impulse 中复制的项目已经有一些与之关联的数据。在开始收集数据之前,您需要将其从项目中删除。转到数据采集选项卡并选择复选标记以选择多个项目。全选并选择“删除所选内容”。在“测试数据”选项卡上执行相同的操作。
将您的网络摄像头连接到 MaaXBoard Mini
我正在使用 USB 网络摄像头 - HD Pro Webcam C920 。拍摄只有 320x320 像素的图像有点矫枉过正,但我喜欢这个,因为它有一个支架,所以我可以将它连接到三脚架上。
将您的 USB 网络摄像头连接到 MaaXBoard Mini 上的 USB 端口之一。接下来,确保您拥有网络摄像头权限。编辑/etc/rc.local文件,以在每次板子启动时授予您自己的摄像头权限:
sudo nano /etc/rc.local
exit 0
在rc.local中的" " 之前包含这一行:
sudo chmod -R a+rwx /dev/video1
在 MaaXBoard 上,video0 是 MIPI-CSI 摄像头,video1+ 是 USB 摄像头。编辑rc.local后,运行:
sync
sudo reboot
重新登录后,您现在应该在运行时看到您拥有摄像头权限ls -l /dev/video*
。
使用 Edge Impulse Linux SDKTY 收集新数据
在您的 MaaXBoard Mini 上运行 Edge Impulse Linux SDK:
edge-impulse-linux
出现提示时,登录您的 Edge Impulse 帐户并命名您的设备(我将我的设备命名为“mini”)。当您转到 Edge Impulse 上的项目页面时,您现在会看到 MaaXBoard Mini 已连接:
如果您想连接到不同的项目,您始终可以通过键入以下内容来清除您的凭据:
edge-impulse-linux --clean
您还可以通过键入ctrl-c退出 CLI 。
连接您的电路板后,可以直接使用 Edge Impulse 的 Web 界面从您的 MaaXBoard Mini 收集数据。在Data Acquisition页面上,选择您的设备,输入标签(对于对象检测,这只是文件名,不会创建标签),选择您的传感器(选择相机)并开始采样!
您将看到相机源的预览。
使用 GUI 上传器上传数据
使用 Edge Impulse 采样数据非常有用,但它一次只能采集一张图像。由于我需要在一段时间内收集大量数据,因此最简单的方法是编写一个脚本来收集 MaaXBoard 上的数据,将其压缩,然后将其发送到我的 PC 进行上传。
在这种情况下,我将使用ffmeg库连续拍摄图像:
sudo apt install ffmpeg
创建一个名为 hardhats 的文件夹并将cd放入其中。运行如下脚本开始收集 322 像素图像(Edge Impulse 中对象检测项目中图像的最大尺寸)。
我的地下室碰巧有一个实际的建筑工地,所以我在粉刷地下室时让 ffmeg 运行,中途脱下安全帽。
mkdir hardhats
cd hardhats
nohup ffmpeg -s 320x320 -i /dev/video1 -r 2 hardhats-%04d.jpg
压缩名为hardhats的文件夹:
sudo apt install zip
zip -r hardhats.zip hardhats
在我的主机 PC 上,我将压缩文件夹复制到:
scp ebv@192.168.1.14:hardhats.zip .
然后,我只需使用 Edge Impulse 界面的 Data Acquisition 选项卡上的上传按钮解压缩并上传整个文件夹:
使用 Edge Impulse CLI 上传数据
您还可以使用edge-uploader cli从主机轻松上传数据。这有一个额外的好处,就是能够上传已经注释的数据,只要注释的格式正确。
首先,安装 Python3 和Node.js v14 或更高版本。然后安装 CLI。在这里,我将它安装在我的 Mac 上(Linux、Windows 和 Mac 的完整说明在这里):
npm install -g edge-impulse-cli --force
要将数据上传到 Edge Impulse,请运行edge-impulse-uploader
您的数据目录,例如:
edge-impulse-uploader /Users/monica/Documents/EdgeImpulseTalk/restsubset2898/output/.*jpg
这将引导您配置 CLI 以上传到所需的项目。它会让您知道文件是否成功上传。
如果要使用不同的项目重新配置 CLI,请运行:
edge-impulse-uploader --clean
注释数据
Edge Impulse 让您可以直接在 Web 界面中注释数据。单击数据点旁边的三个点,然后选择编辑标签。您还可以通过选择“标记队列”选项卡一次编辑所有未标记的图像。
在图像上拖动鼠标以标记它。输入标签名称,然后单击设置标签。最后,选择保存标签。
使用现有标签上传数据
如果您选择使用预先注释的数据集或在另一个工具中注释您的数据(要了解有关注释数据的更多信息,请参阅我的项目“机器学习注释数据”),您可以通过将注释保存在单个文件中来上传注释您的主机 PC 称为bounding_boxes.labels 。您可以在Edge Impulse 的文档中的“边界框”标题下查看有关 Edge Impulse 使用的特定 JSON 注释格式的更多信息。
我编写了一个 python脚本来将流行的注释格式Pascal VOC转换为 Edge Impulse JSON 格式。如果您的标签是另一种格式,您可以使用 Roboflow 的有用工具将它们转换为 Pascal VOC,然后使用我的脚本将它们转换为 Edge Impulse 格式。
要上传您的注释,请将bounding_boxes.labels与您的图像放在同一文件夹中并运行边缘脉冲上传器。
设置和训练您的模型
生成特征
现在您的图像已被标记,是时候设置训练了。为此,请转到Impulse design
选项卡。在第一个子选项卡上,Create Impulse
目标检测模型没有太多工作要做,因为这里的参数受到限制。
选择Image
选项卡,然后单击Generate features 。单击“生成特征”按钮。
理想情况下,不同的特征应该聚集在不同的组中。如果您看到它们都聚集在一起,请检查彼此靠近的不同特征,看看您的数据是否存在问题。
您可以将鼠标悬停在每个数据点上并单击以查看与其相关的图像。通过这样做,我能够看到中间的图像往往有非常小的注释,所以我提高了注释的最小尺寸,再次上传我的数据,这样可以获得更好的数据。
训练模型
是时候训练你的模型了。如果您熟悉 Keras,可以使用 Keras 模式来选择模型设置。从 GUI 中,您可以轻松选择不同的模型、训练周期数、学习率和分数阈值。最后,选择开始训练来训练您的模型。
测试和部署您的模型
测试你的模型
训练模型后,您将看到 Precision 分数和估计的设备性能。
Edge Impulse 让您可以在板上测试您的项目。只要您的电路板已连接,您就可以使用MaaXBoard Mini的实时分类进行测试。只需像在数据采集期间一样选择您的设备,然后选择Start Sampling 。
默认情况下,此处拍摄的图像会添加到测试集中。您可以通过选择“摘要”旁边的三个点并选择移动到训练集来将项目移动到训练集。将其移至训练集后,它还将显示在Labeling queue下的Data Acquisition
选项卡下,您可以在其中添加标签。
然后,您可以使用这些测试图像测试您的模型。要专门为测试集上传数据,您必须在上传中指定。上传您的测试数据并指定--category testing
.
edge-impulse-uploader --category testing C:\Users\044560\Documents\EdgeImpulseTalk\testset\output\*.jpg
你的训练集应该是你图像的 80%,而你的测试集应该是 20%。如果您的测试集中有太多或太少的图像,您会在Data Acquisition
选项卡上看到一个警告按钮。您可以通过单击它并选择Perform train / test split来修复您的拆分。
您将能够在Model Testing
侧边栏下看到所有测试数据。要在您的测试数据上测试您的模型,只需选择Classify all 。图像分类后,您可以通过单击图像旁边的三个栏并选择“显示分类”来获得更好的视图。
在这里,您可以准确地查看模型分类错误的内容,并使用此信息来改进您的模型。例如,我的模型在这张图片中只正确分类了最大的头盔,所以我可以推断当主体太远时它的表现很差:
版本控制
如果您的模型获得了不错的准确性,最好保存它的一个版本。我喜欢在版本描述中注明准确性和我使用的数据集子集,以及训练周期数和学习率:
要恢复您的项目,请单击它并选择恢复。在弹出窗口中,为您的项目命名并选择Restore version 。Edge Impulse 会将您的版本恢复为一个全新的项目,其中包含完整的原始数据集。
从 CLI 运行您的项目
要实际运行您的模型,首先您必须在“部署”选项卡下构建它。选择Linux板,然后选择build :
再次运行edge-impulse-linux并连接到您的项目(如果您仍未连接)。下载模型文件并使用edge-impulse-linux-runner运行它:
edge-impulse-linux
edge-impulse-linux-runner --download modelfile.eim
edge-impulse-linux-runner
您可以通过转到终端输出 EG 中列出的 IP 地址来查看您的模型所看到的内容
每当您的模型检测到不安全的情况时发送短信
在twilio上创建一个帐户并在“购买号码”页面上购买“发件人”电话号码以允许发送 SMS。设置一个免费帐户可为您提供 15 美元的信用额度,因此您不必花任何钱。
我从 Edge Impulse 分叉了一个简单的 web 应用程序,它运行您的模型并在每次检测到没有安全帽的人时通过 Twilio 发送文本警报。
在您的 MaaXBoard Mini 上安装 git 并克隆存储库:
sudo apt install git
git clone https://github.com/zebular13/example-linux-with-twilio.git
将 your.eim 文件移动到 repo 文件夹中:
mv modelfile.eim example-linux-with-twilio.git/modelfile.eim
输入 repo 并安装依赖项:
cd example-linux-with-twilio.git
npm install
通过以下方式启动应用程序:
npm run build
node build/webserver-twilio.js modelfile.eim
您将在终端中看到警报,在您的网络浏览器中http://localhost:4911 ,您还将开始在手机上收到警报!
- 使用Edge Impulse关键字识别控制笔记本电脑
- 智能安全帽开源构建
- 使用Edge Impulse和Nvidia Jetson的面罩检测器
- 使用XIAO BLE Sense&Edge Impulse的宠物活动追踪器
- 使用Edge Impulse在pico上进行手势识别
- 通过Edge Impulse开始使用TinyML
- 使用Python进行伺服PWM控制的MaaxBoard设置
- 使用Edge Impulse的Covid患者健康评估设备
- 使用Edge Impulse识别大象活动
- 在MaaXBoard RT上运行几乎任何TensorFlow模型
- MAT400安全帽标签
- 带UWB定位标签的安全帽VDU1506数据手册 0次下载
- 基于YOLOv3的施工安全帽图像检测算法 7次下载
- 3G视频安全帽设计方案 3次下载
- 基于AD7705的安全帽质量检测 53次下载
- 在ELF 1 开发板上实现读取摄像头视频进行目标检测 530次阅读
- YOLOv8自定义数据集训练实现安全帽检测 864次阅读
- 基于XIAO的图像分类处理项目 1118次阅读
- 基于STM32单片机的私家车安全检测系统设计 796次阅读
- 基于Arduino的机器学习开发 1.7w次阅读
- 安全电子认证如何降低即时检测的风险 494次阅读
- 高压验电器的使用 接地线挂拆方法(口诀) 991次阅读
- 如何在Ubuntu 22.04上安装Microsoft Edge浏览器 1.1w次阅读
- 使用MATLAB进行异常检测(下) 1989次阅读
- 使用MATLAB进行异常检测(上) 3321次阅读
- 在Windows 10上阻止Microsoft Edge Chromium自动安装的方法 4954次阅读
- dfrobot多彩跳帽简介 2866次阅读
- 在贴片加工厂中有哪些安全防护需要了解 1306次阅读
- 福禄克为益海嘉里提供减少在生产过程中消耗大量的电能的措施 1959次阅读
- Mini LED和Micro LED是怎样的显示技术?与当前主流的OLED显示有何区别? 2.4w次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多