1828 工业检测方案详解:工业异常检测应用

1828 开发指南最后一章给出工业表面缺陷检测的完整案例。传统做法靠人眼或为每类缺陷单独建模;SDK 自带应用改用 PatchCore + DINOv3-S backbone,仅用良品即可检测异常,并提供浏览器可操作的 Web 界面。本文完整梳理其部署与操作,也如实说明当前不足。

本章完整文档:《工业异常检测》(生态平台 wiki)      前置条件:RK182X 模组已连接(PCIe)------systemctl is-active rknn3.service 返回 active,/dev/pcie-rkep-* 设备节点存在(上篇环境验收清单里的一项)。

(一)它能查什么:只学习良品的异常检测

应用基于 PatchCore 算法 + DINOv3-Small backbone,专为工业表面缺陷检测设计,实际路径在 SDK 的 examples/anomaly-detection/。

典型场景:

和"每类缺陷训一个模型"不同,PatchCore 的用法是反过来的:训练阶段只用良品样本,把良品的特征存进一个 memory bank;检测阶段拿测试样本的特征去和记忆库比对,偏差大的位置就是可疑区域。整个过程输出热力图,缺陷在图上一眼可见。DINOv3-S 负责提特征,它以两个文件的形式随应用附带:dinov3s.rknn(613KB,模型结构)和 dinov3s.weight(42MB,权重),推理跑在 RK182X NPU 上。

整套应用连模型带网页总共 45M,对一块边缘板卡来说相当轻。

(二)应用架构:浏览器到 NPU 三层

wiki 给的整体框图:

复制代码
用户浏览器
↓ HTTP :5000
┌────────────────────┐
│Flask Web│
│app.py│
└────────┬───────────┘
↓
┌────────────────────┐
│PatchCore 引擎│
│patchcore_train.py│← 训练(CPU 构建 memory bank)
│patchcore_test.py │← 推理
└────────┬───────────┘
↓
┌────────────────────┐
│RKNN3 Lite│← 已装 rknn3-toolkit-lite 1.0.0
│DINOv3-S backbone│
└────────────────────┘

三层分工很清楚:Flask 负责网页交互(app.py,26KB),PatchCore 的训练和测试脚本是业务逻辑(patchcore_train.py/patchcore_test.py),底层特征提取通过 RKNN3 Lite 调 NPU。操作的人在浏览器里点按钮,算力在板子上。

(三)部署四步

1. 推送文件到板端

PC 端执行:

复制代码
adb push examples/anomaly-detection /userdata/

2. 准备数据集

从 MVTec 官网下载 AD 数据集(https://www.mvtec.com/company/research/datasets/mvtec-ad),解压到板端 /userdata/datasets/,目录结构:

复制代码
/userdata/datasets/
├── bottle/
│   ├── test/
│   │   ├── good/         ← 良品测试
│   │   └── defect/       ← 缺陷测试(每类一个子目录)
│   ├── train/good/       ← 训练只用良品
│   └── ground_truth/     ← 缺陷标注
├── cable/
│   ├── test/
│   └── train/
└── ...

注意 train/good/ 这个结构------再次对应了"训练只用良品"的思路。

3. 安装依赖

复制代码
cd /userdata/RK1820_RK1828_AI_SDK/examples/anomaly-detection
./install.sh
复制代码

install.sh 会安装三样东西:python3-pip、python3-flask、patchcore-0.1.0-py3-none-any.whl。装完 Flask 是 3.1.3 版本(Debian 12 apt 源里的 python3-flask)。

4. 启动应用

三种方式任选其一:

复制代码
/userdata/anomaly-detection/run.sh start

或者点击桌面"工业检测"图标(install.sh 已自动创建),或者浏览器直接访问 http://<板子IP>:5000。

(四)装完之后还差什么:如实交代

按上面的步骤走完,应用还不能直接跑起来。wiki 把两个坑写得明明白白,这里原文照搬:

坑一:ML 依赖没有装全。patchcore 的依赖清单里要求 torch、torchvision、faiss-cpu、timm、scikit-image、scikit-learn、numpy、scipy 等一大串机器学习库,但板端 pip list 里相关的只有两个:

复制代码
python3 -m pip list | grep -E "(click|scipy|tqdm)"

输出:

复制代码
click 8.4.2          tqdm 4.70.0

install.sh 只装 Flask + patchcore wheel,不装 scipy / numpy / torch / timm 这些 ML 库------它们在边缘设备上安装困难且资源消耗大。所以 run.sh start 会报 ModuleNotFoundError,需要手动补装依赖后才能完整运行。

坑二:启动脚本路径对不上。run.sh 里的路径指向 /userdata/anomaly-detection,但实际路径是 /userdata/RK1820_RK1828_AI_SDK/examples/anomaly-detection。用 cat run.sh | head -15 可以直接看到这个差异,处理办法是改脚本路径,或者建一个软链。

这两个坑 wiki 都在 FAQ 里给了对应处理,不是能绕过去的暗坑------只是拿到手的第一件事不是点开网页,而是先补环境。

(五)操作流程:标注 → 测试

标注(训练)

Web 界面三步:选择数据集 → 点"标注"按钮,系统用 DINOv3 backbone 提取良品特征 → 标注完成后计算异常阈值。

测试

"数据集测试"页面选择已标注的数据集,点"开始测试",结果以热力图显示------绿色 = 正常,红色 = 异常。点图片右上角的眼睛图标可以看热力图。

测试页面的按钮功能:

(六)常见的坑

(七)收尾

到这里,开发指南系列五篇走完了:OpenClaw 把板子变成 AI Agent 主机,SKILL 给它装上九般武艺,模型调用和模型转换打通了底层,最后这个工业异常检测应用演示了一条完整的行业落地路径------从数据集、到 NPU 推理、到浏览器里的操作界面。

它也顺带说明了一个现实:边缘侧跑 AI 应用,算力只是其中一环,依赖、路径、数据集这些工程细节同样决定能不能落地。下一篇开始进入生态平台专篇,看 ShiMetaPi 在 SDK 之外还准备了什么。

相关推荐
LittroInno1 天前
边缘AI模组选型:把视频带宽、压缩和推理吞吐分别算清
人工智能·音视频·边缘计算·视频编码·模组选型·视频带宽·tofu6
视***间1 天前
视程空间Edge工业边缘盒:给工业机器人装一颗耐造的“本地大脑“
前端·edge·机器人·边缘计算·智慧工业·工业视觉·视程空间
鲁邦通物联网2 天前
工业现场多设备数据采集:边缘计算网关部署中的通信预算与故障域设计
边缘计算·工业网关·物联网网关·边缘计算盒子·工业级边缘计算网关·plc数采·厂内数采
Vex2une2 天前
Windows Copilot+ PC本地AI开发:2026年NPU编程与模型部署实战指南
边缘计算·模型量化·npu·本地ai·onnx runtime·copilot+ pc·directml
ShiMetaPi2 天前
182X 模型转换详解:从 PC 模型到板端 NPU 运行全流程
ai·边缘计算·rk3588·rk1820·rk1828
悟天特斯3 天前
边缘计算的“实时决策“:从数据回传到边端即时推理的决策升级
数据库·人工智能·边缘计算
鲁邦通物联网4 天前
PLC数据接入MES的边缘计算网关架构设计:别让MES直接理解控制变量
大数据·边缘计算·数据采集·工业数据采集·边缘计算网关·5g数采·plc数采
Godspeed Zhao4 天前
具身智能系统概论——边缘计算和云端协调
人工智能·边缘计算·1024程序员节
桐盛科技4 天前
基于边缘计算网关的 Modbus 与 DL/T 645 协议数据清洗与断网续传实现
边缘计算·1024程序员节