visual pollution 数据集信息总结表
| 项目 | 内容 |
|---|---|
| 数据集名称 | visual pollution Dataset |
| 任务类型 | 目标检测 (Object Detection) |
| 图片总数 | 约3570 张 |
| 类别数量 | 3 类 |
| 具体类别 | 1. Concrete barriers(混凝土护栏) 2. potholes(坑洼) 3. sand on road(路面沙土) |
| 模型 | YOLOv8、YOLOv8s、YOLOv5 |
| 数据格式 | 图像 + 标注文件(目标检测标准格式) |
1
1
1
1
以下是针对Visual Pollution Dataset(视觉污染检测数据集)的完整 YOLO 训练方案,包含3 类目标:
Concrete barriers(混凝土护栏)potholes(坑洼)sand on road(路面沙土)
支持YOLOv5 / YOLOv8 / YOLOv8s,提供可直接运行的训练代码。
✅ 一、数据集配置文件data.yaml
# data.yamlpath:./datasetstrain:images/trainval:images/valnc:3names:['concrete_barriers','potholes','sand_on_road']📌 注意:
- 类别名使用下划线命名(避免空格),与标注文件中的类别 ID 对应
- 标注格式为标准 YOLO 格式(每行:
class_id x_center y_center width height,归一化)
✅ 二、目录结构要求
VisualPollutionDetection/ ├── datasets/ │ ├── images/ │ │ ├── train/ # ~2856 张(80%) │ │ └── val/ # ~714 张(20%) │ └── labels/ │ ├── train/ │ └── val/ ├── data.yaml ├── train_yolov8.py # YOLOv8 训练脚本 └── requirements.txt✅ 三、YOLOv8 训练代码(推荐)
# train_yolov8.pyfromultralyticsimportYOLOimportargparsedefmain(model_name='yolov8s.pt',epochs=100,imgsz=640,batch=16,name='visual_pollution_yolo8'):model=YOLO(model_name)results=model.train(data='data.yaml',epochs=epochs,imgsz=imgsz,batch=batch,name=name,cache=False,device=0,workers=8,patience=20,save=True,exist_ok=False,# 增强策略(适合道路场景)hsv_h=0.015,hsv_s=0.7,hsv_v=0.4,degrees=5.0,translate=0.1,scale=0.3,mosaic=0.8,flipud=0.0,fliplr=0.5)print(f"✅ 训练完成!最佳模型保存在: runs/detect/{name}/weights/best.pt")if__name__=='__main__':parser=argparse.ArgumentParser()parser.add_argument('--model',type=str,default='yolov8s.pt')parser.add_argument('--epochs',type=int,default=100)parser.add_argument('--imgsz',type=int,default=640)parser.add_argument('--batch',type=int,default=16)parser.add_argument('--name',type=str,default='visual_pollution_exp')args=parser.parse_args()main(**vars(args))✅ 四、YOLOv5 训练代码(兼容旧项目)
需先克隆 YOLOv5 仓库:
git clone https://github.com/ultralytics/yolov5
# train_yolov5.pyimportosimportargparsedefmain(weights='yolov5s.pt',epochs=100,imgsz=640,batch=16,name='visual_pollution_yolov5'):cmd=f""" python yolov5/train.py \ --img{imgsz}\ --batch{batch}\ --epochs{epochs}\ --data data.yaml \ --weights{weights}\ --name{name}\ --cache ram \ --workers 8 """os.system(cmd)if__name__=='__main__':parser=argparse.ArgumentParser()parser.add_argument('--weights',type=str,default='yolov5s.pt')parser.add_argument('--epochs',type=int,default=100)parser.add_argument('--imgsz',type=int,default=640)parser.add_argument('--batch',type=int,default=16)parser.add_argument('--name',type=str,default='visual_pollution_yolov5')args=parser.parse_args()main(**vars(args))✅ 五、依赖安装
# requirements.txt (YOLOv8) ultralytics>=8.3.0 opencv-python numpy torch>=2.0.0若使用 YOLOv5,需额外安装:
pipinstall-r yolov5/requirements.txt✅ 六、启动训练
YOLOv8(推荐)
python train_yolov8.py --model yolov8s.pt --epochs100--batch16--name vp_yolo8sYOLOv5
python train_yolov5.py --weights yolov5s.pt --epochs100--batch16--name vp_yolov5s✅ 七、推理示例(YOLOv8)
fromultralyticsimportYOLO model=YOLO('runs/detect/vp_yolo8s/weights/best.pt')results=model('road_image.jpg')# 可视化results[0].show()# 获取检测结果forboxinresults[0].boxes:cls_id=int(box.cls.item())label=model.names[cls_id]conf=float(box.conf.item())print(f"检测到:{label}, 置信度:{conf:.2f}")✅ 八、应用场景
- 城市道路视觉污染自动巡检
- 智慧环卫系统(识别路面异常物)
- 交通养护决策支持
- 无人机/车载实时监测