拓冰建站拓冰建站
首页 / 资讯中心 / 正文

YOLOv10工业缺陷检测实战:5步把实时检测流程部署到产线

YOLOv10工业缺陷检测实战5步把实时检测流程部署到产线【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10一段传送带视频进来缺陷的位置和数量出来——这就是我接下来要搭的流水线。全程用 YOLOv10 完成工业缺陷检测与目标计数先拿自己的缺陷数据训练模型再按区域数出缺陷个数最后打包进容器直接部署上产线。 为什么 YOLOv10 适合产线质检YOLOv10 免 NMS 后处理、端到端出结果单帧延迟小且抖动小产线节拍更稳。推理链路短传统检测器先吐出一堆候选框再用 NMS对重复检测框去重筛掉冗余。这一步在 CPU 上执行、耗时不固定帧间延迟会抖。YOLOv10 在训练阶段就把选哪个框学进了网络导出的 ONNX / TensorRT 引擎也是端到端结构整条链路少一个后处理环节。⚡延迟低官方 COCO 数据640 输入、导出格式YOLOv10-N 单张 1.84ms、YOLOv10-S 2.49ms、YOLOv10-M 4.74ms。纯 CPU 工控机喂 25fps 的产线相机n/s 规格绑绑有余。部署路径全PyTorch 权重、ONNX、TensorRT engine、Docker 镜像都有对应流程边缘设备如 Jetson也有现成 Dockerfile 可参考。规格参数量AP (COCO)单张延迟YOLOv10-N2.3M38.5%1.84msYOLOv10-S7.2M46.3%2.49msYOLOv10-M15.4M51.1%4.74ms⚙️ 从克隆到第一次跑出结果环境好不好跑通一张测试图就知道了——框能落对位置就只剩换数据这一件事。拉仓库git clone https://gitcode.com/GitHub_Trending/yo/yolov10然后cd yolov10。装依赖建议 conda 隔离环境conda create -n yolov10 python3.9 -y激活后执行pip install -r requirements.txt再pip install -e .后者会注册yolo命令行入口。加载权重YOLOv10 提供 n/s/m/b/l/x 六档n 最轻。官方预训练权重在 Hugging Face 上标识为jameslahm/yolov10n这类框架会自动下载。跑一张图验证yolo predict modeljameslahm/yolov10n sourceultralytics/assets/zidane.jpg。仓库自带的这张测试图就是验证推理是否正常的标的 把你的缺陷数据接进来数据集 yaml 就是一份目录告诉框架数据在哪、类别叫什么其余按默认约定摆放。目录结构沿用默认布局images/与labels/各放train、val子目录标注文件是每张图一个同名的.txt框的归一化坐标。yaml 里只写四样东西——path数据根目录、train/val两个集合、names类别名列表。格式直接照 ultralytics/cfg/datasets/coco.yaml 抄把 80 个 COCO 类别换成你的划痕、凹坑、缺料即可。训练命令就一行yolo detect train datadefect.yaml modelyolov10n.pt epochs100 batch16 imgsz640参数逐个说epochs训练集完整过多少轮。缺陷样本通常几千张量级100 轮足够看出收敛趋势。batch每卡一次喂多少张。显存紧张就调小速度不受影响只影响单次更新的样本量。imgsz输入分辨率。缺陷偏小时提到 1280 能换召回代价是帧率下降。model填.pt是拿预训练权重微调收敛快想从零训练则换成ultralytics/cfg/models/v10/下的结构配置yolov10n.yaml 至 yolov10x.yaml按产线算力和精度需求选档。 怎么数出几个缺陷区域计数靠的是跟踪 ID 判断进出不是把每帧的框简单相加。检测回答哪里有产线报表要的是有几个。难点在去重同一处缺陷连续几十帧都在画面里直接累加框数会翻几十倍。所以需要给每个缺陷分配持久 ID也就是跟踪。仓库自带 ObjectCounter实现见 ultralytics/solutions/object_counter.py传入若干多边形顶点圈定区域它用 shapely 判断每个框的中心是否落入区域按 track ID 记进出事件并累计。import cv2 from ultralytics import YOLOv10 from ultralytics.solutions import ObjectCounter model YOLOv10(yolov10n.pt) # 加载训练好的权重 counter ObjectCounter() counter.set_args(classes_namesmodel.names, reg_pts[(20, 400), (1260, 400), (1260, 20), (20, 20)]) # 计数区域四个顶点 cap cv2.VideoCapture(defect.mp4) while cap.isOpened(): ok, frame cap.read() if not ok: break tracks model.track(frame, persistTrue, showFalse) # 获取跟踪ID frame counter.start_counting(frame, tracks) # 按区域计数 cv2.imshow(counting, frame) if cv2.waitKey(1) 0xFF ord(q): break cap.release()reg_pts给 2 个点是直线计数数过线次数3 个及以上是区域计数数进出区域次数。交互式画区域的完整示例在examples/YOLOv8-Region-Counter/readme.md鼠标拖拽就能调区域。 上产线导出与容器化部署部署先锁两件事模型形态锁定ONNX/TensorRT运行环境锁定容器。先导出。ONNX 是跨平台的模型格式导出一次后任何硬件都能挂对应的推理后端yolo export modelyolov10n.pt formatonnx simplify。有 NVIDIA GPU 的工位直接构建 TensorRT 引擎NVIDIA 的推理加速运行时yolo export modelyolov10n.pt formatengine halfTrue simplifyFP16 下比 ONNX 再快一截。容器化docker/目录下按硬件拆了 Dockerfilecpu、jetson、conda 等选对文件即可。纯 CPU 质检主机用 Dockerfile-cpudocker build -f docker/Dockerfile-cpu -t yolov10-defect . docker run -it --rm -v $(pwd):/app yolov10-defect选型思路一句话有 GPU 上 TensorRT engine边缘板卡Jetson 类用对应 Jetson 镜像并开 FP16/INT8纯 CPU 服务器则 ONNX n/s 规格起步吞吐富余时再换更大规格换精度。️ 常见问题与求助渠道卡住了先查 FAQ再提 issue多数模型 bug其实是环境和数据的问题。视频读帧失败cv2.VideoCapture返回空八成是编码问题。产线相机常出 H.265 或 RTSP 流OpenCV 默认解码器未必吃先把第一帧存成 PNG 验证能否打开再决定换 ffmpeg 后端还是转封装。权重下载慢预训练权重来自 Hugging Face内网机器建议提前镜像到公司 OSS 或 NASmodel指向本地文件路径即可后面所有流程都不受影响。小缺陷检不出官方建议调低置信度阈值同时把imgsz调大或换 m/l 规格注意阈值放太松会引入误报要和计数逻辑一起看效果。高频问题汇编在 docs/en/help/FAQ.md仍解决不了时走项目 issue 渠道附上最小可复现示例一张图 一条命令 报错全文定位会快很多。数据标注扎实、环境干净这条流水线从演示走到产线中间不该有太多意外。【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门