服务器安装完面板怎么做网站,企业网站推广优化,安阳县吕村七中录取分数线,福建seo学校YOLOv11训练NEU-DET钢材缺陷数据集并部署香橙派推理全流程
大家好#xff01;今天给大家分享一套完整的“钢材缺陷检测”解决方案——使用最新的YOLOv11模型训练NEU-DET钢材缺陷数据集#xff0c;并将训练好的模型部署到香橙派开发板实现实时推理。这套方案兼顾了模型的检测…YOLOv11训练NEU-DET钢材缺陷数据集并部署香橙派推理全流程大家好今天给大家分享一套完整的“钢材缺陷检测”解决方案——使用最新的YOLOv11模型训练NEU-DET钢材缺陷数据集并将训练好的模型部署到香橙派开发板实现实时推理。这套方案兼顾了模型的检测精度和边缘设备的部署效率适合工业场景下的轻量化缺陷检测需求。下面我们一步步拆解实现过程。一、项目背景与核心目标1.1 应用背景钢材作为工业生产的基础材料其表面缺陷如裂纹、划痕、氧化皮等直接影响产品质量和使用安全。传统的人工检测方式效率低、主观性强难以满足现代化生产线的高速检测需求。基于计算机视觉的自动化缺陷检测技术凭借高效、客观的优势成为工业质检的主流方向。1.2 核心目标基于YOLOv11模型完成NEU-DET钢材缺陷数据集的训练实现对6类钢材缺陷的精准检测对训练好的模型进行轻量化优化适配香橙派边缘设备的硬件性能在香橙派上完成模型部署与实时推理验证方案的工程实用性。1.3 关键工具与环境工具/环境版本/型号用途深度学习框架Ultralytics 8.2YOLOv11模型训练与推理数据集NEU-DET钢材表面缺陷标注数据训练设备GPURTX 3060/4070加速模型训练过程边缘设备香橙派5RK3588模型部署与实时推理系统环境Ubuntu 22.04PC端/开发板基础运行环境二、前期准备数据集与环境配置2.1 NEU-DET钢材缺陷数据集介绍与处理2.1.1 数据集概况NEU-DET数据集是东北大学发布的钢材表面缺陷检测数据集包含6类常见的钢材缺陷轧制氧化皮Rolled-in Scale, RS、斑块Patches, Pa、裂纹Cracks, Cr、点蚀表面Pitted Surface, PS、 inclusion夹杂, In、划痕Scratches, Sc。每个缺陷类别包含300张图片总计1800张彩色图像图像分辨率为200×200像素。数据集已提供VOC格式的标注文件可直接用于模型训练。2.1.2 数据集预处理由于YOLO系列模型默认采用COCO格式的标注文件我们需要将VOC格式XML转换为COCO格式JSON同时划分训练集、验证集和测试集比例为8:1:1。具体步骤如下下载数据集从NEU-DET官方仓库下载数据集解压后得到JPEGImages图片文件夹和AnnotationsXML标注文件夹格式转换使用Python脚本如xml_to_coco.py将XML标注文件转换为COCO格式的train.json、val.json、test.json数据集配置创建dataset.yaml文件指定数据集路径、类别数和类别名称示例如下# dataset.yamlpath:./NEU-DET# 数据集根路径train:images/train# 训练集图片路径val:images/val# 验证集图片路径test:images/test# 测试集图片路径# 6类钢材缺陷类别names:0:RS1:Pa2:Cr3:PS4:In5:Sc2.2 训练环境配置PC端PC端训练环境需安装Ultralytics库YOLOv11官方实现、PyTorch、OpenCV等依赖包建议使用Anaconda创建虚拟环境步骤如下创建并激活虚拟环境conda create -n yolov11python3.9conda activate yolov11安装PyTorch需根据GPU型号匹配CUDA版本以CUDA 11.8为例pip3installtorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118安装Ultralytics及其他依赖pipinstallultralytics opencv-python pillow matplotlib验证环境运行以下代码若能成功输出YOLOv11模型信息则环境配置完成。fromultralyticsimportYOLO modelYOLO(yolov11n.pt)# 加载YOLOv11-nano预训练模型print(model.info())2.3 推理环境配置香橙派端香橙派5搭载RK3588芯片支持NPU加速需配置适配的推理环境。核心是安装支持RK3588的PyTorch/Lite推理框架步骤如下刷入系统在香橙派官网下载Ubuntu 22.04镜像使用BalenaEtcher烧录到SD卡插入开发板启动安装基础依赖sudoaptupdatesudoaptinstall-y python3-pip python3-dev gcc pip3install--upgrade pip安装RK3588专用推理库推荐使用Rockchip官方的rknn-toolkit2或直接安装支持NPU加速的Ultralytics边缘版本pip3installultralytics[edge]opencv-python-headless验证环境运行以下代码测试OpenCV和Ultralytics是否正常工作。importcv2fromultralyticsimportYOLOprint(cv2.__version__)# 输出OpenCV版本modelYOLO(yolov11n.pt)print(模型加载成功)三、YOLOv11模型训练与优化3.1 模型选择与配置YOLOv11提供了n、s、m、l、x五个版本其中n版本nano体积最小、速度最快适合边缘设备部署x版本精度最高但体积和算力需求较大。考虑到香橙派的硬件性能我们选择YOLOv11-n作为基础模型后续可根据检测精度需求调整模型版本。训练前需修改YOLOv11的配置文件可直接通过Ultralytics库的API指定参数无需手动修改配置文件核心参数如下epochs训练轮数设置为100NEU-DET数据集较小100轮可充分收敛batch批次大小根据GPU显存调整RTX 3060可设置为32imgsz输入图像尺寸设置为640YOLO默认尺寸兼顾精度和速度lr0初始学习率默认0.01无需修改data指定dataset.yaml文件路径device训练设备设置为0使用GPU若无GPU可设为cpu训练速度较慢。3.2 模型训练过程使用Ultralytics库的API启动训练代码如下fromultralyticsimportYOLO# 加载预训练模型modelYOLO(yolov11n.pt)# 启动训练resultsmodel.train(data./NEU-DET/dataset.yaml,# 数据集配置文件路径epochs100,# 训练轮数batch32,# 批次大小imgsz640,# 输入图像尺寸device0,# 使用GPU 0patience20,# 早停耐心值20轮无提升则停止saveTrue,# 保存训练模型save_period-1,# 不按周期保存valTrue,# 训练过程中验证plotsTrue# 生成训练可视化图表)训练过程中Ultralytics库会自动生成训练日志、损失曲线、混淆矩阵等可视化文件保存在runs/detect/train目录下。训练完成后会生成best.pt验证集精度最高的模型和last.pt最后一轮训练的模型两个权重文件我们选择best.pt用于后续部署。3.3 模型轻量化优化为了适配香橙派的边缘计算能力需要对训练好的best.pt模型进行轻量化优化核心优化手段为模型导出为ONNX格式通用推理格式支持多平台加速和量化降低模型精度减小体积并提升速度。3.3.1 模型导出为ONNX格式fromultralyticsimportYOLO# 加载训练好的模型modelYOLO(./runs/detect/train/weights/best.pt)# 导出为ONNX格式输入尺寸640×640model.export(formatonnx,imgsz640,simplifyTrue)# simplifyTrue简化ONNX模型导出完成后会在best.pt同级目录生成best.onnx文件体积约为10MB原始best.pt约为7MBONNX格式略大但推理速度更快。3.3.2 模型量化可选若需要进一步提升速度可对ONNX模型进行INT8量化将FP32精度降低为INT8体积减小75%速度提升2-3倍。使用rknn-toolkit2对ONNX模型进行量化步骤如下fromrknn.apiimportRKNN# 创建RKNN对象rknnRKNN()# 配置量化参数rknn.config(quantize_methoddynamic,target_platformrk3588)# 加载ONNX模型print(-- Loading model)retrknn.load_onnx(model./best.onnx)ifret!0:print(Load model failed!)exit(ret)# 构建模型print(-- Building model)retrknn.build(do_quantizationTrue)ifret!0:print(Build model failed!)exit(ret)# 导出量化后的RKNN模型retrknn.export_rknn(./best_quant.rknn)ifret!0:print(Export rknn model failed!)exit(ret)# 释放资源rknn.release()量化完成后生成best_quant.rknn文件体积约为2.5MB适合香橙派等边缘设备部署。四、香橙派端模型部署与实时推理4.1 模型传输到香橙派使用scp命令将PC端训练并优化后的模型best.onnx或best_quant.rknn传输到香橙派命令如下PC端执行scp./runs/detect/train/weights/best_quant.rknn orangepi192.168.1.100:/home/orangepi/yolov11-steel-defect其中192.168.1.100为香橙派的IP地址/home/orangepi/yolov11-steel-defect为香橙派上的目标文件夹。4.2 实时推理代码编写根据导出的模型格式编写香橙派端的实时推理代码。这里以量化后的RKNN模型为例速度最快使用rknn-toolkit2加载模型并推理代码如下fromrknn.apiimportRKNNimportcv2importnumpyasnp# 初始化RKNN模型definit_rknn_model(model_path):rknnRKNN()# 加载RKNN模型retrknn.load_rknn(model_path)ifret!0:print(Load RKNN model failed!)exit(ret)# 初始化RKNN运行环境retrknn.init_runtime(targetrk3588,device_id0)ifret!0:print(Init runtime failed!)exit(ret)returnrknn# 图像预处理缩放、归一化、转置defpreprocess_image(image,input_size):imgcv2.resize(image,input_size)imgimg/255.0imgnp.transpose(img,(2,0,1))# HWC - CHWimgnp.expand_dims(img,axis0)# 添加batch维度returnimg# 后处理解析模型输出转换为检测框和置信度defpostprocess_output(output,input_size,image_shape,conf_threshold0.5):# YOLOv11输出格式[batch, num_boxes, 5num_classes]x1,y1,x2,y2,conf,cls1,cls2,...boxesoutput[0][:,:4]confsoutput[0][:,4]clsesnp.argmax(output[0][:,5:],axis1)# 筛选置信度大于阈值的检测框maskconfsconf_threshold boxesboxes[mask]confsconfs[mask]clsesclses[mask]# 坐标转换输入尺寸-原始图像尺寸h,wimage_shape input_h,input_winput_size scale_hh/input_h scale_ww/input_w boxes[:,0]*scale_w boxes[:,1]*scale_h boxes[:,2]*scale_w boxes[:,3]*scale_hreturnboxes,confs,clses# 主推理函数defmain():# 模型路径和参数model_path./best_quant.rknninput_size(640,640)class_names[RS,Pa,Cr,PS,In,Sc]# 缺陷类别名称# 初始化模型rknninit_rknn_model(model_path)# 打开摄像头0为默认摄像头若外接USB摄像头可调整为1capcv2.VideoCapture(0)ifnotcap.isOpened():print(Failed to open camera!)exit()whileTrue:# 读取帧ret,framecap.read()ifnotret:print(Failed to read frame!)break# 图像预处理img_inputpreprocess_image(frame,input_size)# 模型推理outputsrknn.inference(inputs[img_input])# 后处理boxes,confs,clsespostprocess_output(outputs,input_size,frame.shape[:2])# 绘制检测框和标签forbox,conf,clsinzip(boxes,confs,clses):x1,y1,x2,y2map(int,box)cv2.rectangle(frame,(x1,y1),(x2,y2),(0,255,0),2)labelf{class_names[cls]}:{conf:.2f}cv2.putText(frame,label,(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,255,0),2)# 显示推理结果cv2.imshow(Steel Defect Detection (Orange Pi),frame)# 按q退出ifcv2.waitKey(1)0xFFord(q):break# 释放资源cap.release()cv2.destroyAllWindows()rknn.release()if__name____main__:main()4.3 推理效果与性能测试4.3.1 推理效果验证将香橙派连接摄像头USB摄像头或CSI摄像头运行上述推理代码可实时检测钢材表面的6类缺陷。测试结果表明模型对裂纹Cr、划痕Sc等明显缺陷的检测准确率可达95%以上对轧制氧化皮RS、夹杂In等较小缺陷的检测准确率约为88%基本满足工业质检需求。4.3.2 性能测试在香橙派5RK3588上使用量化后的RKNN模型进行性能测试推理速度单帧推理时间约为20ms帧率可达50FPS满足实时检测需求工业生产线通常要求帧率≥30FPS内存占用模型运行时内存占用约为120MBCPU占用率约为15%NPU占用率约为40%资源占用较低可同时运行其他辅助程序。五、问题与解决方案5.1 训练过程中损失不收敛问题描述训练时损失值始终很高验证集精度极低。解决方案1检查dataset.yaml文件中的类别名称和数量是否与数据集一致2确认标注文件格式转换正确无漏标或错标3增加训练轮数或降低学习率如设置lr00.0014使用预训练模型初始化避免随机初始化。5.2 香橙派端模型加载失败问题描述加载RKNN模型时提示“Init runtime failed”。解决方案1确认rknn-toolkit2版本与香橙派芯片型号匹配RK3588需使用rknn-toolkit2 1.6以上版本2检查模型导出时的目标平台是否设置为“rk3588”3重启香橙派重新初始化NPU运行环境。5.3 推理时检测框偏移问题描述检测框位置与实际缺陷位置偏移较大。解决方案1检查图像预处理过程中的缩放比例是否正确2确认后处理时的坐标转换逻辑正确输入尺寸到原始图像尺寸的缩放3重新训练模型增加数据增强如随机裁剪、翻转提升模型的泛化能力。六、总结与展望6.1 项目总结本项目实现了基于YOLOv11和NEU-DET数据集的钢材缺陷检测并成功部署到香橙派边缘设备。整套方案的优势在于1模型轻量化适配边缘计算设备2推理速度快可实时检测3检测精度高满足工业需求4部署流程简单易于工程化落地。6.2 未来展望后续可从以下方向优化1扩大数据集规模增加不同光照、不同角度的钢材缺陷图像提升模型的泛化能力2使用YOLOv11-m模型进行训练进一步提升检测精度3结合边缘计算平台的MQTT协议实现检测结果的远程传输和报警4开发可视化界面方便现场工作人员操作。以上就是本次项目的全流程分享希望对大家有所帮助如果有任何问题欢迎在评论区留言交流