2026/6/1 10:10:08
网站建设
项目流程
wordpress设置密码,镇江企业网站排名优化,临沂网站建设哪家最好,网站改版多久恢复1. 环境准备与工具安装
第一次接触YOLOv8训练时#xff0c;最让人头疼的就是环境配置。我刚开始用Anaconda创建虚拟环境时#xff0c;经常遇到CUDA版本不兼容的问题。后来发现用Python 3.9搭配PyTorch 1.8.1这个组合最稳定#xff0c;具体安装步骤如下#xff1a;
conda …1. 环境准备与工具安装第一次接触YOLOv8训练时最让人头疼的就是环境配置。我刚开始用Anaconda创建虚拟环境时经常遇到CUDA版本不兼容的问题。后来发现用Python 3.9搭配PyTorch 1.8.1这个组合最稳定具体安装步骤如下conda create -n yolov8 python3.9 conda activate yolov8 pip install torch1.8.1cu111 torchvision0.9.1cu111 -f https://download.pytorch.org/whl/torch_stable.html pip install ultralytics这里有个小技巧安装PyTorch时一定要去官网复制对应CUDA版本的命令。我实验室的RTX 3090显卡必须用CUDA 11.1版本而笔记本的RTX 3060则要用CUDA 11.3。安装完成后建议运行以下命令验证环境import torch print(torch.__version__, torch.cuda.is_available())如果显示True说明GPU可用。遇到过最坑的情况是PyTorch装成了CPU版本训练时GPU利用率始终为0%排查了半天才发现问题。2. 数据集处理实战技巧DIOR数据集有23,463张800×800的遥感图像包含飞机、港口等20类目标。原始数据是VOC格式的XML文件需要转换成YOLO格式的txt文件。我写了个自动化脚本处理这个转换import xml.etree.ElementTree as ET import os def convert(size, box): dw 1./size[0] dh 1./size[1] x (box[0] box[1])/2.0 y (box[2] box[3])/2.0 w box[1] - box[0] h box[3] - box[2] x x*dw w w*dw y y*dh h h*dh return (x,y,w,h) def convert_annotation(xml_path, txt_path, classes): in_file open(xml_path) out_file open(txt_path, w) tree ET.parse(in_file) root tree.getroot() size root.find(size) w int(size.find(width).text) h int(size.find(height).text) for obj in root.iter(object): cls obj.find(name).text if cls not in classes: continue cls_id classes.index(cls) xmlbox obj.find(bndbox) b (float(xmlbox.find(xmin).text), float(xmlbox.find(xmax).text), float(xmlbox.find(ymin).text), float(xmlbox.find(ymax).text)) bb convert((w,h), b) out_file.write(str(cls_id) .join([str(a) for a in bb]) \n)处理完数据后目录结构应该如下DIOR/ ├── images/ │ ├── train/ │ └── val/ └── labels/ ├── train/ └── val/3. 配置文件深度解析创建dior.yaml时最容易出错的是路径设置。建议使用绝对路径我的配置文件模板如下path: /home/user/DIOR # 数据集根目录 train: images/train # 训练集相对路径 val: images/val # 验证集相对路径 names: 0: airplane 1: airport 2: baseballfield ... # 其他18个类别遥感图像有个特殊问题——小目标密集。我在配置中增加了以下参数提升小目标检测# 在model.yaml中添加 anchors: - [5,6, 8,14, 15,11] # P3/8 - [10,13, 16,30, 33,23] # P4/16 - [30,61, 62,45, 59,119] # P5/324. 模型训练与调优启动训练的命令看似简单但参数设置直接影响结果。这是我调参多次后的推荐配置yolo taskdetect modetrain \ modelyolov8n.yaml \ datadior.yaml \ epochs100 \ batch16 \ imgsz800 \ device0 \ cacheTrue \ optimizerAdamW \ lr00.001 \ weight_decay0.0005关键参数说明imgsz800保持原始分辨率压缩会损失小目标信息cacheTrue启用RAM缓存提速3倍但需要32GB内存AdamW优化器比默认SGD更适合遥感数据训练过程中要关注两个关键指标mAP50IoU阈值为0.5时的平均精度mAP50-95不同IoU阈值下的综合表现如果出现过拟合可以添加--dropout0.2 \ --label_smoothing0.15. 遥感图像专项优化针对DIOR数据集的特点我总结了几个有效策略多尺度训练在配置中添加scale: [0.5, 1.5] # 随机缩放图像** mosaic增强改进**# 自定义mosaic时增加小目标复制 def custom_mosaic(): # 原有mosaic逻辑... if target_is_small: # 对小目标进行复制粘贴 paste_small_objects(4) # 每个小目标复制4次注意力机制修改model.yamlbackbone: # [...] - [-1, 1, CBAM, []] # 添加CBAM注意力模块在实际项目中这些技巧使船舶检测的AP从0.62提升到了0.71。特别是对港口区域密集小船的检测效果改善明显。6. 模型部署与测试训练完成后用以下命令导出模型yolo export modelruns/detect/train/weights/best.pt formatonnx imgsz800测试时发现两个实用技巧对大尺寸遥感图先用滑动窗口切割再检测后处理时用**非极大值抑制(NMS)**的改进版本from ultralytics.utils.ops import non_max_suppression results non_max_suppression( preds, conf_thres0.25, iou_thres0.45, agnosticFalse, multi_labelTrue, max_det1000 )最后提醒遥感图像检测不同于常规图像建议在验证集上测试时重点关注小目标和密集区域的检测效果。可以针对性地增加这些场景的测试样本比例。