YOLO实例分割工业圆形仪表指针读数识别数据集电力电表电流电压表深度学习视觉实战仓库10472期标签#YOLO分割 #仪表读数识别 #指针式表盘 #电力巡检 #工业视觉 #实例分割数据集 #OpenCV读数算法 #变电站智能抄表 #计算机视觉数据集 #深度学习训练素材国内变电站、化工厂区、热力管网、光伏电站存量指针式圆形仪表超1400万块传统人工现场抄表模式存在多重生产瓶颈单巡检人员单日仅可完成180块仪表读数记录厂区跨区域往返占用60%工时逆光、玻璃反光、表盘污渍、小尺寸指针场景人工误读率高达26.8%读数偏差直接引发设备运维误判、能耗统计失真高危高压区域人工巡检存在触电、爆炸安全隐患无法实现7×24小时不间断监测。传统机器视觉方案多依赖传统霍夫变换复杂工业背景下指针分割失效严重开源公开仪表数据集总量不足千张且大多仅适配单一规格表盘缺少通用表盘指针双实例分割标注素材开发者从零标注耗时超15天。本仓库提供标准化YOLO实例分割仪表数据集配套完整训练推理代码、指针角度换算读数算法适配电力电表、电压表、电流表、压力表全品类圆形指针仪表可直接用于工业视觉项目训练、毕设开发、变电站智能巡检摄像头落地。二、项目仓库简介项目总览本仓库为面向工业指针式圆形仪表的YOLO实例分割专用数据集工程包含完整标注素材、数据集划分脚本、YOLO分割训练代码、OpenCV指针轮廓提取与读数换算工具链数据集聚焦表盘、指针两大实例分割类别支持自由扩展压力表、流量计、温度表多品类表盘标注适配无人机巡检、厂区定点摄像头、移动手持终端多类图像输入场景。核心量化数据集指标数据集总图像数量2600张实拍工业圆形仪表图像全部采用LabelMe多边形实例标注无无效空白样本样本划分比例训练集2080张、验证集520张严格8:2随机打乱分流固定随机种子42保证实验可复现标注目标总量单图平均1.6个表盘、单表盘1根指针全数据集合计标注表盘4160个、指针4023根图像场景覆盖包含强光反光、逆光阴影、污渍遮挡、多表并排、远距离小表盘5大类工业复杂工况标注格式标准YOLO分割txt文件每行存储类别ID归一化多边形轮廓坐标兼容YOLOv8/YOLOv11-seg全系列分割模型扩展能力数据集预留自定义类别通道可新增刻度、数字字符、表壳、故障标识等分割目标增量扩充无格式兼容问题训练基准效果基于该数据集训练YOLOv8s-seg验证集mask mAP0.5可达0.913指针轮廓分割IoU均值0.876。数据集识别目标定义Class 0圆形仪表表盘完整表盘区域实例分割用于ROI裁剪、透视矫正Class 1仪表指针指针杆指针尖端完整轮廓分割用于角度计算、数值换算三、完整技术链路架构3.1 数据处理层LabelMe多边形标注→JSON转YOLO分割txt脚本数据集自动8:2分流工具自动配对图片与标注工业图像增强工具随机亮度、对比度、高斯模糊、镜面反光模拟、旋转畸变数据增强数据集校验脚本过滤无标注图片、破损标注、坐标越界异常文件。3.2 深度学习模型层主干模型YOLOv8-seg / YOLOv11-seg轻量化实例分割网络适配GPU/嵌入式Jetson部署训练优化Mosaic、CopyPaste工业场景专用增强AdamW优化器早停防过拟合推理输出mask掩码目标包围框类别置信度输出指针完整像素轮廓。3.3 后处理读数算法层表盘掩码提取→霍夫圆拟合→透视变换矫正倾斜表盘指针掩码轮廓提取→最小距离拟合表盘圆心指针向量角度换算→量程映射输出实际电压/电流/压力数值结果可视化原图叠加分割掩码、角度标注、读数文本。四、仓库完整功能模块4.1 标准化实例分割数据集2600张工业实拍圆形仪表JPG图像配套同目录YOLO分割txt多边形标注文件data.yaml训练配置文件一键适配Ultralytics训练接口场景分层文件夹强光、逆光、多表、遮挡、标准工况五类样本分区。4.2 数据预处理工具集LabelMe JSON批量转YOLO分割标注脚本数据集自动划分train/val脚本批量图像增强脚本扩充样本多样性标注校验脚本自动清洗损坏标注数据。4.3 YOLO分割训练与推理代码单卡GPU训练脚本支持自定义轮次、批次、输入尺寸批量图像推理接口输出mask掩码与结构化分割坐标摄像头实时视频流分割推理demo。4.4 指针读数后处理算法工具链表盘倾斜透视矫正函数指针轮廓圆心拟合、角度计算工具通用仪表量程映射读数转换函数结果可视化保存工具输出带分割掩码与读数标注成品图。五、核心可运行代码附工业仪表场景注释5.1 YOLO分割数据集自动划分脚本 split_seg_data.py 场景注释仪表实例分割数据集分流工具适配表盘指针双类别YOLO分割标注 自动匹配图片与txt标注8:2划分训练验证集固定随机种子保证实验复现过滤无标注无效样本 importrandomimportshutilfrompathlibimportPath# 全局配置RAW_ROOTPath(./meter_raw_dataset)OUTPUT_ROOTPath(./meter_yolo_seg)TRAIN_RATIO0.8RANDOM_SEED42IMG_SUFFIX(.jpg,.png)defsplit_meter_dataset():random.seed(RANDOM_SEED)raw_img_dirRAW_ROOT/imagesraw_label_dirRAW_ROOT/labels# 筛选存在对应标注的图片all_img_paths[]forimg_fileinraw_img_dir.iterdir():ifimg_file.suffix.lower()inIMG_SUFFIX:label_fileraw_label_dir/f{img_file.stem}.txtiflabel_file.exists():all_img_paths.append(img_file)random.shuffle(all_img_paths)total_numlen(all_img_paths)train_countint(total_num*TRAIN_RATIO)train_imgsall_img_paths[:train_count]val_imgsall_img_paths[train_count:]# 创建标准YOLO分割目录结构formodein[train,val]:(OUTPUT_ROOT/mode/images).mkdir(parentsTrue,exist_okTrue)(OUTPUT_ROOT/mode/labels).mkdir(parentsTrue,exist_okTrue)defcopy_sample(img_list,mode):forimginimg_list:label_srcraw_label_dir/f{img.stem}.txtshutil.copy(img,OUTPUT_ROOT/mode/images/img.name)shutil.copy(label_src,OUTPUT_ROOT/mode/labels/f{img.stem}.txt)copy_sample(train_imgs,train)copy_sample(val_imgs,val)# 生成仪表分割数据集yaml配置yaml_text nc: 2 names: 0: meter_dial 1: meter_pointer train: ./train/images val: ./val/images imgsz: 960 withopen(OUTPUT_ROOT/meter_seg.yaml,w,encodingutf-8)asf:f.write(yaml_text)print(f数据集划分完成总样本{total_num}训练集{len(train_imgs)}验证集{len(val_imgs)})if__name____main__:split_meter_dataset()5.2 YOLO分割推理指针角度读数计算 meter_infer.py 场景注释工业圆形仪表一体化推理脚本先YOLO分割表盘与指针掩码再OpenCV计算指针角度转换读数 适配电力电压表、电流表通用0-360度圆形表盘包含反光、倾斜矫正逻辑 importcv2importmathimportnumpyasnpfromultralyticsimportYOLOclassMeterReader:def__init__(self,seg_weight./weights/meter_seg_best.pt):self.modelYOLO(seg_weight)# 通用圆形仪表参数可按实际量程修改self.min_angle30# 零刻度对应角度self.max_angle330# 满刻度对应角度self.full_range100# 仪表总量程如0-100V、0-100Adefget_mask_pixel(self,mask_tensor,img_shape):分割mask转二值像素图提取指针/表盘轮廓mask_npmask_tensor.cpu().numpy().astype(np.uint8)mask_resizedcv2.resize(mask_np,(img_shape[1],img_shape[0]))_,mask_bincv2.threshold(mask_resized,127,255,cv2.THRESH_BINARY)returnmask_bindefcalc_pointer_angle(self,pointer_mask,dial_center):基于指针掩码计算指针相对表盘圆心角度0~360°contours,_cv2.findContours(pointer_mask,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)max_contmax(contours,keycv2.contourArea)# 取指针最远尖端点max_dist0tip_pointdial_centerforpointinmax_cont.reshape(-1,2):distmath.hypot(point[0]-dial_center[0],point[1]-dial_center[1])ifdistmax_dist:max_distdist tip_pointpoint# 向量角度换算dxtip_point[0]-dial_center[0]dytip_point[1]-dial_center[1]radmath.atan2(dy,dx)angle_deg(math.degrees(rad)90)%360returnangle_deg,tip_pointdefangle_to_value(self,angle):指针角度映射为仪表实际读数ifself.min_angleself.max_angle:ifangleself.min_angleorangleself.max_angle:return0.0else:ifangleself.max_angleandangleself.min_angle:return0.0ratio(angle-self.min_angle)/(self.max_angle-self.min_angle)real_valueratio*self.full_rangereturnround(real_value,2)definfer_image(self,img_path):imgcv2.imread(img_path)h,wimg.shape[:2]resultsself.model(img,conf0.3)forresinresults:ifres.masksisNone:returnimg,未检测到仪表dial_maskself.get_mask_pixel(res.masks.data[0],(h,w))pointer_maskself.get_mask_pixel(res.masks.data[1],(h,w))# 拟合表盘圆心circlescv2.HoughCircles(dial_mask,cv2.HOUGH_GRADIENT,1,20,param150,param220)ifcirclesisNone:returnimg,表盘圆心识别失败cx,cy,rnp.uint16(np.around(circles[0][0]))dial_center(cx,cy)angle,tipself.calc_pointer_angle(pointer_mask,dial_center)meter_valself.angle_to_value(angle)# 绘图可视化cv2.circle(img,dial_center,r,(0,255,0),2)cv2.line(img,dial_center,tip,(0,0,255),2)cv2.putText(img,fReading:{meter_val},(30,40),cv2.FONT_HERSHEY_SIMPLEX,1,(255,0,0),2)returnimg,f仪表读数{meter_val}if__name____main__:readerMeterReader()res_img,valreader.infer_image(./test_meter.jpg)print(val)cv2.imwrite(./result_meter.jpg,res_img)5.3 LabelMe JSON转YOLO分割标注 json2yolo_seg.py 场景注释工业仪表LabelMe多边形标注批量转换脚本输出YOLO实例分割标准txt文件 自动归一化多边形轮廓坐标匹配表盘、指针两类ID适配本数据集标注规范 importjsonimportosfrompathlibimportPath CLASS_DICT{meter_dial:0,meter_pointer:1}deflabelme2yolo_seg(json_dir,img_dir,out_label_dir):Path(out_label_dir).mkdir(exist_okTrue)json_fileslist(Path(json_dir).glob(*.json))forjfinjson_files:withopen(jf,r,encodingutf-8)asf:datajson.load(f)img_namedata[imagePath]img_pathPath(img_dir)/img_name hdata[imageHeight]wdata[imageWidth]label_lines[]forshapeindata[shapes]:cls_nameshape[label]ifcls_namenotinCLASS_DICT:continuecls_idCLASS_DICT[cls_name]pointsshape[points]norm_coords[]forx,yinpoints:nxx/w nyy/h norm_coords.append(f{nx:.6f}{ny:.6f})linef{cls_id}{ .join(norm_coords)}\nlabel_lines.append(line)# 写入分割txt标注txt_namejf.stem.txtwithopen(Path(out_label_dir)/txt_name,w,encodingutf-8)asf:f.writelines(label_lines)print(LabelMe标注转换完成)if__name____main__:labelme2yolo_seg(json_dir./meter_raw/json,img_dir./meter_raw/images,out_label_dir./meter_raw/labels)六、项目完整交付资源清单2600张工业圆形指针仪表完整实拍图像覆盖电力电表、电压表、电流表多场景配套YOLO实例分割多边形txt标注文件表盘/指针双类别完整标注数据集自动划分脚本、LabelMe JSON转分割标注转换工具YOLOv8/YOLOv11-seg训练配置yaml、一键训练启动代码完整推理工具链图像批量检测、摄像头实时识别、指针角度读数换算算法工业图像数据增强脚本用于样本增量扩充数据集使用文档、模型训练调优指南、嵌入式部署适配说明。七、付费定制拓展服务数据集增量扩充新增压力表、温度表、双指针仪表标注样本模型专项调优低反光、远距离小表盘分割精度提升训练完整Web巡检系统开发摄像头实时识别、读数数据存储、报表导出嵌入式部署适配Jetson Nano/Orin轻量化TensorRT加速多模态拓展融合大模型实现仪表故障识别、异常读数告警数据集格式转换COCO、VOC、LabelMe多格式互转工具开发。八、落地应用场景变电站、配电室电力电表、电压表、电流表AI自动抄表化工、热力厂区圆形压力表、温度表机器视觉监测无人机厂区大范围仪表巡检图像自动读数识别工业智能摄像头7×24小时不间断仪表数值采集计算机视觉、深度学习实例分割课程实训、本科/硕士毕业设计数据集工业机器视觉公司仪表识别项目快速开发素材。#YOLO实例分割数据集 #工业仪表读数识别 #电力智能巡检 #指针式表盘视觉算法 #OpenCV指针角度计算 #变电站自动抄表 #深度学习训练素材 #机器视觉工业检测 #圆形电表分割识别 #计算机视觉实战仓库