无人机电力巡检电力系统智能巡检输电线路关键部件(绝缘子)及其常见隐患(异物、鸟巢、破裂)的图像 YOLO数据集 YOLO模型如何训练输电线异物检测数据集

📅 发布时间:2026/7/11 12:23:08 👁️ 浏览次数:
无人机电力巡检电力系统智能巡检输电线路关键部件(绝缘子)及其常见隐患(异物、鸟巢、破裂)的图像 YOLO数据集 YOLO模型如何训练输电线异物检测数据集
智慧电力- 88% 输电线路异物识别YOLO数据集111⚡ 输电线路异物及缺陷检测数据集本数据集专为电力系统智能巡检设计包含丰富的输电线路关键部件绝缘子及其常见隐患异物、鸟巢、破裂的图像。数据集规模大、标注精准适用于训练高精度的目标检测模型如 YOLO 系列。 数据集概览属性详细描述数据集名称输电线路异物及缺陷识别数据集图像总数16,993张检测类别数5类标注格式YOLO 格式 (.txt)数据划分训练集 : 验证集 : 测试集 8 : 1 : 1数据集规模大型适用任务目标检测 (Object Detection)参考 mAP88%(基于 YOLO 基线模型)️ 类别定义数据集中包含 5 个类别涵盖了输电线路的核心部件与典型缺陷类别 ID标签名称 (Label)中文名称特征描述0burst破裂绝缘子或其他部件出现的裂纹、断裂或破损情况。1defect缺陷泛指各类材质老化、闪络痕迹或其他功能性缺陷。2foreign_obj异物挂在导线或塔架上的风筝、塑料袋、金属丝等干扰物。3insulator绝缘子输电线路中的核心绝缘部件作为背景参照及定位基准。4nest鸟巢鸟类在铁塔横担等位置搭建的鸟巢易引发短路。 数据划分统计子集名称图像数量占比用途训练集14,00082.4%用于模型训练学习各类目标的特征。验证集1,99911.7%用于训练过程中调整超参数防止过拟合。测试集9945.9%用于评估模型最终的泛化性能和精度。️ 数据集配置文件 (data.yaml)在使用 YOLO 进行训练时你需要一个data.yaml文件来定义路径和类别。以下是该数据集对应的配置文件模板# data.yaml# 训练集、验证集、测试集路径train:./datasets/train/imagesval:./datasets/val/imagestest:./datasets/test/images# 类别数量nc:5# 类别名称列表names:0:burst1:defect2:foreign_obj3:insulator4:nest 数据集划分代码 (Python)如果你手头有原始的images和labels文件夹可以使用以下代码将数据集按 8:1:1 的比例随机划分为训练集、验证集和测试集。importosimportrandomimportshutilfrompathlibimportPathdefsplit_dataset(image_dir,label_dir,output_dir,train_ratio0.8,val_ratio0.1,test_ratio0.1,seed42): 划分数据集为 train/val/test # 设置随机种子以保证可复现性random.seed(seed)# 获取所有图像文件image_files[fforfinos.listdir(image_dir)iff.lower().endswith((.png,.jpg,.jpeg,.bmp,.tiff))]image_files.sort()# 排序以保持一致性# 计算划分数量totallen(image_files)train_countint(total*train_ratio)val_countint(total*val_ratio)test_counttotal-train_count-val_countprint(f总样本数:{total})print(f训练集:{train_count}, 验证集:{val_count}, 测试集:{test_count})# 打乱文件列表random.shuffle(image_files)# 划分数据train_imagesimage_files[:train_count]val_imagesimage_files[train_count:train_countval_count]test_imagesimage_files[train_countval_count:]# 创建输出目录结构output_pathPath(output_dir)(output_path/train/images).mkdir(parentsTrue,exist_okTrue)(output_path/train/labels).mkdir(parentsTrue,exist_okTrue)(output_path/val/images).mkdir(parentsTrue,exist_okTrue)(output_path/val/labels).mkdir(parentsTrue,exist_okTrue)(output_path/test/images).mkdir(parentsTrue,exist_okTrue)(output_path/test/labels).mkdir(parentsTrue,exist_okTrue)defcopy_files(image_list,split_name):forimg_fileinimage_list:img_srcPath(image_dir)/img_file lbl_fileimg_file.rsplit(.,1)[0].txtlbl_srcPath(label_dir)/lbl_file# 复制图片shutil.copy(img_src,output_path/split_name/images/img_file)# 复制标签 (如果存在)iflbl_src.exists():shutil.copy(lbl_src,output_path/split_name/labels/lbl_file)# 执行复制copy_files(train_images,train)copy_files(val_images,val)copy_files(test_images,test)print(数据集划分完成)# --- 使用示例 ---# 请修改以下路径为你实际的路径image_directorypath/to/your/all/imageslabel_directorypath/to/your/all/labelsoutput_base_directorypath/to/output/datasetsplit_dataset(image_directory,label_directory,output_base_directory)