RK3588 边缘计算应用:文冠果成熟度检测
60 多年过去了,尽管辉光管已经停产,有很多工程师仍然对它情有独钟。我用 8 块液晶显示屏制作了一个拟辉光管时钟,感受复古元素的美感,表达对过去经典的敬意。
文冠果是一种生长于北方的木本油料树种,其所产的高级木本食用油非常适合长期储存。目前传统检测文冠果的技术相对落后,并且存在人工检测效率低的问题。香橙派5 Plus主控芯片为RK3588,它是瑞芯微电子推出的一款高性能芯片,该芯片集成了强大的CPU和NPU,提供高达6TOPS的算力,使其在复杂的视觉处理任务中表现卓越,特别适合机器视觉边缘计算应用。为了深入挖掘RK3588的视觉检测潜力,我们将其应用于农业领域文冠果的成熟度检测。这个任务涉及图像识别中以文冠果为目标的成熟度检测,通过图像分析来判断文冠果的成熟状态,从而为果农提供有价值的信息。
设计方案
首先我们构建了一个文冠果成熟度检测系统,利用 RK3588 的计算能力实现自动化识别,检测效果如图 1 所示。系统首先使用摄像头捕捉文冠果的图像,然后通过预训练的深度学习模型对图像进行分析。模型能够识别不同成熟度的果实,并根据成熟度等级提供相应的反馈。当系统识别到果实达到最佳采摘时期时,会发送通知给果农,提示果实可以采摘。
这个任务要求系统能够从摄像头图像中识别文冠果并准确判断其成熟度。由于一张图像中可能包含多个不同成熟阶段的文冠果,且每个文冠果的大小、形状和颜色都不相同,因此这一任务融合了图像分类与位置定位。要求在文冠果成熟度检测中不仅能够识别图中的文冠果,还需要给出每个文冠果的具体位置和成熟度,这比单一的分类任务要复杂得多。Yolo 算法是一种创新的目标检测方法,其核心特点:一次性检测、统一的框架以及实时处理能力。因此我们选用了较新的 Yolov8 算法。
硬件清单
本文用到的部分硬件清单见附表。
制作过程
本系统利用高清摄像头对文冠果拍摄进行样本采集,通过 USB 接口传输至香橙派 5 Plus 边缘计算平台。在香橙派 5 Plus 上,将采集的文冠果图片数据导入部署的 Yolov8 模型上,经模型快速训练推理后,在显示屏上呈现推理结果。系统流程如图 2 所示。大家可以扫描目录页电子资源二维码获取程序文件。
第一步:进行文冠果的样本采集,实地拍摄样本大于 1000 张。建议使用与实际拍摄时一致的手机、拍摄环境和拍摄角度,通过对照片进行初步筛选,获取不同时期的果实照片,如图 3 所示。
第 二 步: 对 采 集 的 文冠 果 数 据 进 行 标 注, 安 装Labelimg进行数据集标注。
(1)通过输入 pip 命令,安装 Labelimg 标注软件。
(2)配置 predefined_classes.txt,以便于提高标注的速度。
(3)通过在终端输入Labelimg 启 动 软 件, 单 击“Open Dir”打开照片所在的文件夹,单击“ChangeSave Dir”将保存路径设置为照片的原始路径,并在 View 菜单中,修改为自动保存模式(Auto Save Mode)。
(4) 我 们 将 文 冠 果 照 片 为 3 类,Immature标签为未成熟,Ripe 标签为成熟,可采摘标签为Bursts。按 W 键启用标注功能,用鼠标画出矩形方框,对果实进行标注,松开鼠标后,并在弹出的菜单中选择我们预先设定好的 3 类标签。重复以上步骤,将所有图片标注完成就组成了文冠果的数据集,标注文冠果数据如图 4 所示。
第三步:配置 Yolov8 环境训练模型。
(1)安装 pytorch、ultralytics 等。
(2)分割数据集,运行脚本 Split_Dataset.py,按照 8:2 的比例将文冠果数据集拆分为训练集和验证集,其中训练集用于训练 Yolov8 网络的网络参数权值,验证集用于验证训练的参数权重是否满足文冠果成熟度的量化要求。
(3) 编 写 配 置 文 件 train-config.yaml, 及训 练 脚 本 Yolo-train.py。 然 后 通 过 运 行 python Yolo-train.py 命 令 进 行 训 练, 等 待 训 练 结 束,Yolov8 模型训练结束,如图 5 所示,展示了 3 种文冠果标签的训练结果。
第四步:转化为 RKNN 模型部署至 RK3588。
(1)将 best.pt 文件导出为 ONNX 的通用模型文件,图 6 所示为 ONNX 模型转化完毕。
(2) 在 Ubuntu 20.04 系 统 中 安 装 RKNNToolkit2 进行模型转换的环境准备工作,再准备所要用到的文件。
(3)使用 convert.py 对 ONNX 模型进行转换,转化为 RKNN 模型以方便部署。
(4)在香橙派板端利用 rknn-toolkit2-lite 的Python API 板端推理模型,通过运行 Yolov8.py进行模型推理。模型推理部分结果如图 7 所示。
实验训练
在数据集的准备过程中,我们需要将文件的图片随机分配到 train(训练集)和 val(验证集)两个文件夹中,用于模型的训练和验证。首先设置数据集划分的比例,训练集占 80%,验证集占 20%。然后遍历数据集文件夹下的所有图像和对应的标注文件,并根据设定的比例随机分配到训练集和验证集。最后将图像和标注文件移动到目标文件夹中,确保每个图像和其对应的标注文件一起被分配。具体实现如程序 1 所示。
在模型部署过程中,我们经常需要将模型从一种格式转换为另一种格式,以适应不同的硬件平台。例如,将 ONNX 格式的模型转换为 RKNN 格式,以便RK3399Pro、RK1808 等在瑞芯微 NPU 上运行。程序 2 描述了如何将 ONNX 模型转换为 RKNN 模型,并通过提供的数据集来改进模型的量化精度。
在目标检测的实际应用中,我们需要加载训练好的模型,对图像进行推理和检测。Yolov8.py 演示了如何加载 Yolov8 模型,并对指定的图像进行推理,提供了从模型加载、图像预处理、推理、结果后处理到结果展示的完整流程,帮助我们在不同的平台上快速部署和验证模型的性能,简化后主要的程序如程序 3 所示。
结语
深度学习一定需要很高的专业水平、很复杂的技术吗? RK3588 的高性能边缘计算、广泛应用、易部署的优势,降低了嵌入式 AI 应用落地的难度。在实际应用中,这样的系统可以帮助农业生产者更准确地进行收获决策,优化收获时间和提高整体产量。如果你有一个好玩的基于目标检测的创意,进行采样、标记、训练之后,Yolov8 算法会提供现成训练环境,完善的训练工具,就能为你的兴趣和梦想插上一双翅膀。本项目由沈阳师范大学创新创业训练计划项目资助,申请编号:202407035。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.