边缘端商品识别系统构建实战:基于YOLO系列的货架缺货检测方案从训练到部署完整记录
边缘端商品识别系统构建实战基于YOLO系列的货架缺货检测方案从训练到部署完整记录一、项目背景与需求定义零售门店的货架缺货检测是库存管理中的核心痛点。传统方案依赖人工巡检平均每店每日耗费2.5小时巡检工时漏检率高达18%。将视觉检测能力部署至边缘设备可在摄像头端实时判定缺货状态并上报云端将巡检响应周期从小时级缩短至秒级。本项目目标参数如下指标目标值缺货检测准确率≥95%mAP0.5单帧推理延迟≤120msARM Cortex-A72平台模型参数量≤8MBINT8量化后连续运行功耗≤5W日均上报频率每15分钟一次状态快照硬件选型为瑞芯微RK35684×A722.0GHz NPU 0.8TOPS配合2MP宽动态摄像头模组。NPU支持INT8卷积加速但后处理算子需在CPU侧完成这是后续部署调优的关键约束点。二、数据采集与模型训练数据集构建流程实际采集覆盖6家门店、42个货架位共标注12,800帧图像。缺货样本占比约22%在架56%遮挡22%。数据增强策略模拟了货架灯光闪烁亮度±30%、顾客遮挡随机矩形掩码以及排列不齐水平平移±5%等真实场景干扰。训练配置选用YOLOv8s11.2M参数输入分辨率640×640batch32学习率cosine衰减从0.01至0.001共300 epoch。验证集mAP0.5达到0.963测试集0.951满足部署指标。# 训练启动脚本关键配置 import ultralytics model ultralytics.YOLO(yolov8s.pt) result model.train( datashelf_empty.yaml, # 数据集描述文件 epochs300, imgsz640, batch32, lr00.01, lrf0.001, augmentTrue, device0, # GPU训练 workers8, projectshelf_detect, nameyolov8s_v1, ) if result is None: raise RuntimeError(训练过程异常终止请检查数据集路径与GPU状态)三、模型量化与边缘部署ONNX模型经onnxruntime验证无误后通过RKNN-Toolkit2完成INT8量化。量化校准数据取验证集的200帧覆盖不同光照条件。量化后模型体积从28.3MB压缩至7.8MBmAP0.5从0.951降至0.931下降2.1%仍在可接受范围内。板端单帧推理耗时98ms满足≤120ms指标。// RKNN模型加载与推理核心代码 #include rknn_api.h int run_shelf_detect(const char *model_path, const uint8_t *frame_buf, int width, int height, rknn_output *outputs) { rknn_context ctx 0; int ret rknn_init(ctx, model_path, NULL, 0, NULL); if (ret ! RKNN_SUCC) { fprintf(stderr, rknn_init 失败, 错误码: %d\n, ret); return -1; } rknn_input input { .index 0, .buf frame_buf, .size width * height * 3, .pass_through 0, .type RKNN_TENSOR_UINT8, .fmt RKNN_TENSOR_NHWC, }; ret rknn_inputs_set(ctx, 1, input); if (ret ! RKNN_SUCC) { fprintf(stderr, rknn_inputs_set 失败, 错误码: %d\n, ret); rknn_destroy(ctx); return -2; } ret rknn_run(ctx, NULL); if (ret ! RKNN_SUCC) { fprintf(stderr, rknn_run 失败, 错误码: %d\n, ret); rknn_destroy(ctx); return -3; } ret rknn_outputs_get(ctx, 3, outputs, NULL); if (ret ! RKNN_SUCC) { fprintf(stderr, rknn_outputs_get 失败\n); rknn_destroy(ctx); return -4; } rknn_destroy(ctx); return 0; }四、后处理优化与系统集成NPU输出的原始检测结果需经NMS非极大值抑制过滤后方可用。原始NMS在A72单核耗时约15ms通过以下优化降至4ms预设置信度阈值0.45直接剔除低分候选框减少排序量采用单类NMS货架缺货为单类检测场景避免多类并行计算将IoU计算改为整数近似牺牲0.5%精度换取2倍加速// 单类NMS快速实现整数IoU近似 static int fast_nms(box_t *boxes, int num, float iou_thresh, box_t *out, int max_out) { if (num 0 || boxes NULL || out NULL) { fprintf(stderr, fast_nms 输入参数异常\n); return 0; } // 按置信度降序排序部分排序取前max_out个即可 int effective (num max_out) ? num : max_out; for (int i 0; i effective; i) { int best i; for (int j i 1; j num; j) { if (boxes[j].score boxes[best].score) best j; } box_t tmp boxes[i]; boxes[i] boxes[best]; boxes[best] tmp; } int keep 0; uint8_t suppressed[256] {0}; // 标记被抑制的候选框 for (int i 0; i effective; i) { if (suppressed[i]) continue; out[keep] boxes[i]; for (int j i 1; j effective; j) { // 整数IoU近似: (交集面积 * 256) / (并集面积) int inter box_intersection_q8(boxes[i], boxes[j]); int union_ box_area_q8(boxes[i]) box_area_q8(boxes[j]) - inter; if (union_ 0) continue; int iou_q8 (inter 8) / union_; int thresh_q8 (int)(iou_thresh * 256); if (iou_q8 thresh_q8) suppressed[j] 1; } } return keep; }系统整体集成采用进程间MQ通信架构推理进程每15分钟提取一帧执行检测后将缺货层数写入共享内存上报进程读取后通过MQTT发布至云端。设备端平均功耗4.2WCPU降频至1.5GHz时满足≤5W约束。五、总结本方案从数据标注、模型训练、INT8量化到板端部署完整覆盖了边缘端货架缺货检测系统的构建流程。关键数据汇总环节核心指标实测值训练mAP0.50.951量化精度损失2.1%模型体积INT8后7.8MB板端推理单帧延迟98msNMS后处理耗时4ms系统功耗日均4.2W量化精度损失控制在2%以内推理延迟优于120ms目标说明YOLOv8s RK3568 NPU的组合在零售货架场景具备工程可行性。后续改进方向包括引入时序帧融合以降低遮挡误判率以及尝试YOLOv8n进一步压缩模型体积以适配更低算力平台。

相关新闻

HarmonyOS开发实战:小分享-Navigation 导航容器——替代 router 实现现代路由

HarmonyOS开发实战:小分享-Navigation 导航容器——替代 router 实现现代路由

前言 Navigation 组件 是 HarmonyOS 推荐的现代化路由方案,对比 ohos.router 提供了更丰富的导航能力,包括转场动画、路由栈管理、页面参数传递等。小分享 App 当前使用 router 路由,本篇讲解如何用 Navigation 重构。详细 API 可参考 Harmo…

2026/10/22 0:39:31 阅读更多 →
高速DAC电气特性深度解析:从数据手册到硬件设计实战

高速DAC电气特性深度解析:从数据手册到硬件设计实战

1. 从数据手册到设计实战:深度拆解DAC38RFxx系列高速DAC的电气特性在射频和无线通信系统的设计前线摸爬滚打十几年,我经手过的高速数模转换器(DAC)不计其数。每次打开一份新的DAC数据手册,尤其是像TI的DAC38RFxx这种旗…

2026/10/22 6:34:21 阅读更多 →
计算机毕业设计之智能家教平台

计算机毕业设计之智能家教平台

随着网络科技的不断发展以及人们经济水平的逐步提高,网络技术如今已成为人们生活中不可缺少的一部分,而信息管理系统是通过计算机技术,针对用户需求开发与设计,该技术尤其在各行业领域发挥了巨大的作用,相比于以前的传…

2026/10/21 16:23:58 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/22 10:18:38 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/22 11:01:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/22 9:44:47 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/22 10:42:00 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/22 10:40:08 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/22 10:56:37 阅读更多 →

日新闻

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/22 1:47:45 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/21 21:32:28 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/22 5:12:39 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:50:56 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:51:55 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/22 19:06:46 阅读更多 →