三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

智慧电力设备-电力巡线安全帽数据集,共约3437张张,标注格式为xml,本人用ylov5跑过,训练完检测效果可商用,电力安全帽检测数据集

智慧电力设备-电力巡线安全帽数据集,共约3437张张,标注格式为xml,本人用ylov5跑过,训练完检测效果可商用,电力安全帽检测数据集

智慧电力设备-电力巡线安全帽数据集,共约3437张张,标注格式为xml,本人用ylov5跑过,训练完检测效果可商用,
1
1

电力巡线安全帽检测项目(3437张|XML标注|完整流程代码)

一、数据集信息表格

项目详细内容
数据集名称电力巡线安全帽检测数据集
数据总量3437张
应用场景电力巡检、工地安全、智能监控
标注格式XML (VOC格式)
任务类型目标检测
检测类别佩戴安全帽、未佩戴安全帽
适配框架YOLOv8 / YOLOv5

二、环境准备

conda create-nhatpython=3.9conda activate hat pipinstalltorch==1.9.0torchvision==0.10.0 pipinstallultralytics opencv-python pillow

三、数据集准备(标准YOLO目录)

datasets/ ├── Annotations/ # XML标注文件 ├── JPEGImages/ # 原始图片 ├── images/ │ ├── train/ │ └── val/ └── labels/ ├── train/ └── val/

四、XML → YOLO TXT 格式转换代码

importosimportxml.etree.ElementTreeasETimportcv2# 类别必须与训练一致classes=["hat","person"]# 安全帽、未戴安全帽defxml2yolo(xml_path,img_w,img_h):tree=ET.parse(xml_path)root=tree.getroot()label=[]forobjinroot.iter("object"):cls=obj.find("name").textifclsnotinclasses:continuecls_id=classes.index(cls)xmlbox=obj.find("bndbox")x1=float(xmlbox.find("xmin").text)y1=float(xmlbox.find("ymin").text)x2=float(xmlbox.find("xmax").text)y2=float(xmlbox.find("ymax").text)cx=(x1+x2)/2.0/img_w cy=(y1+y2)/2.0/img_h w=(x2-x1)/img_w h=(y2-y1)/img_h label.append(f"{cls_id}{cx:.6f}{cy:.6f}{w:.6f}{h:.6f}")returnlabelif__name__=="__main__":xml_dir="./datasets/Annotations"img_dir="./datasets/JPEGImages"save_dir="./datasets/labels/train"os.makedirs(save_dir,exist_ok=True)forxmlinos.listdir(xml_dir):ifxml.endswith(".xml"):img=cv2.imread(os.path.join(img_dir,xml[:-4]+".jpg"))h,w=img.shape[:2]label=xml2yolo(os.path.join(xml_dir,xml),w,h)withopen(os.path.join(save_dir,xml[:-4]+".txt"),"w")asf:f.write("\n".join(label))print("✅ XML转YOLO完成!")

五、数据集配置文件hat.yaml

train:./datasets/images/trainval:./datasets/images/valnc:2names:0:hat1:person

六、模型训练代码train.py

fromultralyticsimportYOLO model=YOLO("yolov8s.pt")model.train(data="hat.yaml",epochs=100,batch=16,imgsz=640,patience=10,device=0,project="hat_result",name="hat_detect")

七、推理测试代码detect.py

fromultralyticsimportYOLOimportcv2 model=YOLO("hat_result/hat_detect/weights/best.pt")img=cv2.imread("test.jpg")results=model(img)cv2.imwrite("result.jpg",results[0].plot())print("✅ 检测完成!")

八、模型评估代码val.py

fromultralyticsimportYOLO model=YOLO("hat_result/hat_detect/weights/best.pt")metrics=model.val(data="hat.yaml",imgsz=640)print(f"mAP@0.5:{metrics.box.map50:.4f}")print(f"精确率:{metrics.box.precision.mean():.4f}")print(f"召回率:{metrics.box.recall.mean():.4f}")

← 返回列表