copilot-api 使用笔记
2026/6/26 5:33:53
配网绝缘导线烧伤检测图像数据集,总共1500多张图像,标注为voc (xml)格式,也可以转yolo (txt)格式
1
1
1
| 信息项 | 详细内容 |
|---|---|
| 数据集名称 | 配网绝缘导线烧伤检测数据集 |
| 任务类型 | 2D目标检测 |
| 图像总量 | 1500余张 |
| 标注格式 | 原生VOC(XML)格式,可转换为YOLO(TXT)格式 |
| 目标类别 | 绝缘导线烧伤缺陷(单类别) |
| 适用场景 | 配网线路巡检、导线缺陷识别、电力设备故障检测算法训练 |
voc2yolo.pyimportosimportxml.etree.ElementTreeasET# 路径配置xml_dir="labels_xml"img_dir="images"save_label_dir="labels"classes=["burn"]# 类别名os.makedirs(save_label_dir,exist_ok=True)defconvert(size,box):dw=1.0/size[0]dh=1.0/size[1]x=(box[0]+box[1])/2.0y=(box[2]+box[3])/2.0w=box[1]-box[0]h=box[3]-box[2]x=x*dw w=w*dw y=y*dh h=h*dhreturn(x,y,w,h)forxml_fileinos.listdir(xml_dir):ifnotxml_file.endswith(".xml"):continuetree=ET.parse(os.path.join(xml_dir,xml_file))root=tree.getroot()size=root.find("size")w=int(size.find("width").text)h=int(size.find("height").text)label_txt=os.path.join(save_label_dir,xml_file.replace(".xml",".txt"))withopen(label_txt,"w")asf:forobjinroot.iter("object"):cls=obj.find("name").textifclsnotinclasses:continuecls_id=classes.index(cls)bndbox=obj.find("bndbox")box=[float(bndbox.find("xmin").text),float(bndbox.find("xmax").text),float(bndbox.find("ymin").text),float(bndbox.find("ymax").text)]bb=convert((w,h),box)f.write(f"{cls_id}{' '.join(map(str,bb))}\n")wire_burn/ ├── train/ │ ├── images │ └── labels ├── val/ │ ├── images │ └── labels ├── test/ │ ├── images │ └── labels └── data.yamlpath:./wire_burntrain:train/imagesval:val/imagestest:test/imagesnc:1names:0:burntrain_wire_burn.pyfromultralyticsimportYOLOif__name__=="__main__":model=YOLO("yolov26s.pt")model.train(data="./wire_burn/data.yaml",epochs=100,imgsz=640,batch=8,device=0,workers=0,lr0=0.01,patience=15,mosaic=1.0,project="runs/train",name="yolov26_wire_burn",exist_ok=True)fromultralyticsimportYOLO model=YOLO("runs/train/yolov26_wire_burn/weights/best.pt")# 精度评估metrics=model.val(data="./wire_burn/data.yaml")# 图像推理model("test.jpg",save=True)batch,无GPU设置device="cpu";epochs提升拟合效果。