闪存空间与设备性能:为何清理存储能提升响应速度?
2026/5/13 6:20:07
1
1
1
1
1
1
1
1
1
| 信息类别 | 具体内容 |
|---|---|
| 数据集名称 | 滑坡实例分割数据集(Instance Segmentation Dataset) |
| 总图像数量 | 6709 张 |
| 标注格式 | 实例分割(Instance Segmentation),支持 YOLO 或 Mask R-CNN 等模型 |
| 标注方式 | 多边形(Polygon)标注,用于精确勾勒滑坡区域边界 |
| 图像分辨率 | 统一预处理为640×640(原始尺寸可能不同,已拉伸至该大小) |
| 数据集划分 | 已自动划分,未设置测试集 |
| - 训练集(Train Set) | 5917 张(占比 88%) |
| - 验证集(Valid Set) | 792 张(占比 12%) |
| - 测试集(Test Set) | 0 张(尚未划分) |
| 预处理操作 | ✅ Auto-Orient(自动定向) ✅ Resize: Stretch to 640×640(拉伸至固定尺寸) |
| 适用任务 | 地质灾害检测、滑坡识别、遥感影像分析、智能预警系统 |
| 典型场景 | 山区道路、山坡、采石场、水库周边等易发滑坡区域 |
.txt+ mask)landslide_dataset/ ├── images/ │ ├── train/# 5917 张 .jpg│ └── val/# 792 张 .jpg├── labels/ │ ├── train/# 对应 .txt 文件(含 mask 或 bbox)│ └── val/ └── dataset.yamldataset.yaml(适用于 YOLOv8)train:./images/trainval:./images/valtest:./images/test# 可留空或后续补充nc:1names:['landslide']✅ 若为实例分割任务,需使用
YOLOv8-seg模型:
model=YOLO('yolov8s-seg.pt')
YOLOv8 实例分割(Instance Segmentation)训练代码,适用于您提到的滑坡、。
数据集格式:必须为YOLO 分割格式(每张图对应一个.txt标签文件,含归一化多边形坐标)
目录结构:
your_dataset/ ├── images/ │ ├── train/ │ └── val/ ├── labels/ │ ├── train/ # .txt 文件,格式:class_id x1 y1 x2 y2 ... xn yn │ └── val/ └── dataset.yaml安装依赖:
pipinstallultralytics opencv-pythondataset.yaml配置(以滑坡为例)# dataset.yamltrain:./images/trainval:./images/val# test: ./images/test # 可选nc:1# 类别数names:['landslide']# 类别名称(与标签中的 class_id=0 对应)⚠️ 注意:YOLO 分割标签中,第一列为类别 ID,后续为归一化的多边形顶点坐标(x, y),成对出现,数量可变。
示例labels/train/xxx.txt内容:
0 0.452 0.612 0.467 0.631 0.489 0.625 0.475 0.602 ...train_seg.py)# train_seg.pyfromultralyticsimportYOLOdefmain():# 加载 YOLOv8 分割预训练模型model=YOLO('yolov8s-seg.pt')# 可选: yolov8n-seg, yolov8m-seg, yolov8l-seg# 开始训练results=model.train(data='dataset.yaml',# 数据配置文件epochs=100,# 训练轮数imgsz=640,# 输入图像尺寸(可设为 1280 提升精度)batch=16,# 批次大小(根据 GPU 显存调整)name='landslide_seg_v8s',# 实验名称optimizer='AdamW',lr0=0.001,weight_decay=0.0005,hsv_h=0.015,# 色调增强hsv_s=0.7,hsv_v=0.4,degrees=10.0,# 旋转translate=0.1,scale=0.5,fliplr=0.5,# 左右翻转mosaic=0.8,# Mosaic 增强(对小目标有效)mixup=0.2,copy_paste=0.3,# Copy-Paste 增强(强烈推荐用于分割!)close_mosaic=10,# 最后10轮关闭 Mosaicdevice=0,# GPU 编号,'cpu' 表示使用 CPUworkers=4,save=True,save_period=10,exist_ok=False,verbose=True)if__name__=='__main__':main()detect_seg.py)# detect_seg.pyfromultralyticsimportYOLOimportcv2# 加载训练好的最佳分割模型model=YOLO('runs/segment/landslide_seg_v8s/weights/best.pt')defdetect_image(image_path,conf_thres=0.3):results=model(image_path,conf=conf_thres)# 绘制带掩码的检测结果annotated=results[0].plot()# 自动叠加 mask + bbox + labelcv2.imshow("Segmentation Result",annotated)cv2.waitKey(0)cv2.destroyAllWindows()# 或保存# cv2.imwrite("output_seg.jpg", annotated)# 示例detect_image("test_landslide.jpg")evaluate_seg.py)# evaluate_seg.pyfromultralyticsimportYOLO model=YOLO('runs/segment/landslide_seg_v8s/weights/best.pt')metrics=model.val(data='dataset.yaml',split='val')print(f"mAP@0.5 (Box):{metrics.box.map50:.4f}")print(f"mAP@0.5 (Mask):{metrics.seg.map50:.4f}")# 关键指标!print(f"mAP@0.5:0.95 (Mask):{metrics.seg.map:.4f}")print(f"Precision (Mask):{metrics.seg.mp:.4f}")print(f"Recall (Mask):{metrics.seg.mr:.4f}")✅重点关注
metrics.seg.map50:这是实例分割任务的核心评价指标。
| 技巧 | 说明 |
|---|---|
启用copy_paste | 将目标从一张图“粘贴”到另一张,极大提升稀疏目标(如滑坡)的泛化能力 |
| 使用高分辨率 | imgsz=1280可更好保留滑坡边界细节 |
| 避免拉伸变形 | 若原始图像比例差异大,建议使用letterbox(YOLO 默认),而非 stretch |
| 检查标签格式 | 确保.txt中坐标是归一化(0~1)且偶数个数值 |
训练完成后,结果保存在:
runs/segment/landslide_seg_v8s/ ├── weights/best.pt # 最佳模型(按 mAP50-mask 选择) ├── results.csv # 训练指标日志 ├── results.png # 损失 & mAP 曲线图 └── val_batch0_labels.jpg # 验证集预测 vs 真实对比图(含掩码)