从零开始跑通yolov8基线
- 一、环境的搭建
- 1.1 下载python3.10
- 1.2、安装 PyTorch 2.5.1 + CUDA 12.4
- 1.3 安装 Ultralytics
- 二、初步了解YOLOv8
- 2.1 Ultralytics类似于mmseg 而yolo类似于segformer
- 2.2 操作以及训练的区别
- 三、数据集OGSOD2
- 四、开始训练(以RGB为例子)
- 4.1 数据集配置文件
- 下载预训练权重
- 4.3 先跑一个epoch验证整条链路(数据加载 → 模型 → GPU → 保存)都通。
- 4.3.1 训练的一些量级单位
- 4.3.2 训练命令
- 五、输出结果
- 5.1 日志
- 5.2 权重
- 六、完整训练
- 补充:
- 1、快速打开本项目
一、环境的搭建
1.1 下载python3.10
cd/mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8# 创建 conda 环境conda create-p./envs/yolov8python=3.10-y激活环境
conda activate /mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8/envs/yolov8设置短别名
以后直接 act_yolo 就能激活。
echo"alias act_yolo='conda activate /mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8/envs/yolov8'">>~/.bashrcsource~/.bashrcact_yolo升级pip
pipinstall--upgradepip1.2、安装 PyTorch 2.5.1 + CUDA 12.4
pipinstalltorch==2.5.1torchvision==0.20.1torchaudio==2.5.1\-f https://mirrors.tuna.tsinghua.edu.cn/pytorch-wheels/cu124/torch_stable.html检查安装结果
python-c" import torch print('PyTorch:', torch.__version__) print('CUDA available:', torch.cuda.is_available()) print('CUDA version:', torch.version.cuda) print('GPU:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'None') print('cuDNN:', torch.backends.cudnn.is_available()) "1.3 安装 Ultralytics
pipinstallultralytics==8.3.54"protobuf==4.25.3"检查
python-c" import torch from ultralytics import YOLO print('PyTorch:', torch.__version__) print('CUDA available:', torch.cuda.is_available()) print('CUDA version:', torch.version.cuda) print('GPU:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'None') print('cuDNN:', torch.backends.cudnn.is_available()) print('Ultralytics imported OK') "二、初步了解YOLOv8
2.1 Ultralytics类似于mmseg 而yolo类似于segformer
类比
区别
2.2 操作以及训练的区别
Ultralytics源码位置
一般的普通训练
创新改进算法
三、数据集OGSOD2
OGSOD2/ ├── rgb/ ← 光学(可见光)模态 │ ├── train/ │ │ ├── images/18773张 .png │ │ └── labels/18773个 .txt(YOLO 格式) │ └── test/ │ ├── images/4676张 .png │ └── labels/4676个 .txt │ ├── sar/ ← SAR(合成孔径雷达)模态 │ ├── images/{train,test}/ 同上,18773 +4676│ ├── labels/{train,test}/ 同上 │ └── annotations/3个 COCO 格式 json │ ├── *.py 前人写的工具脚本 │ ├── check.py COCO json 校验 │ ├── yolo-json.py YOLO → COCO 转换 │ ├── sort.py 批量重命名 │ ├── draw.py, label_vis.py 标注可视化 │ ├── predict_vis.py 推理可视化 │ ├── findblank.py 找空标注 │ └── rename.py 重命名四、开始训练(以RGB为例子)
4.1 数据集配置文件
告诉代码数据集位置,结构,标签名
# OGSOD2 RGB baseline# 3 classes, val = test (temporary)path:/mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8/data/OGSOD2/rgbtrain:train/imagesval:test/imagestest:test/imagesnc:3names:0:Bridge1:Harbor2:Oil-tank数据集根目录
YOLOv8 图像与标签简化写法
类别
我们之前做的项目有多个配置文件
1、数据集配置文件————》yolov8里只需要这一个配置文件
2、模型结构————》在下载预训练权重时附带
3、学习率、优化器、epoch超参数————》在命令行里显示指定
4、日志、checkpoint等————》
5、主配置文件,继承上面四个
下载预训练权重
cd/mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8/weightcurl-L-oyolov8n.pt https://github.com/ultralytics/assets/releases/download/v8.3.0/yolov8n.ptls-lhyolov8n.ptcd/mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv84.3 先跑一个epoch验证整条链路(数据加载 → 模型 → GPU → 保存)都通。
4.3.1 训练的一些量级单位
一个 iteration一次迭代:迭代一次更新一次参数
Batch批次:一次喂给模型一组Batch (一组样本集合)
Batch Size== 批量:一组样本集合有多少张图片
Epoch== 轮次: 整个训练集完整过一遍
4.3.2 训练命令
cd/mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8 yolo detect traindata=configs/ogsod2_rgb.yamlmodel=weight/yolov8n.ptepochs=1imgsz=256batch=64project=runs/detectname=smoke_testexist_ok=True五、输出结果
5.1 日志
5.2 权重
这里只保存 best 和 last,可以再续训练
六、完整训练
cd/mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8mkdir-plogsls-lahcd/mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8nohupyolo detect traindata=configs/ogsod2_rgb.yamlmodel=weight/yolov8n.ptepochs=100imgsz=256batch=64cache=Trueworkers=8project=runs/detectname=rgb_baselineexist_ok=True>logs/rgb_baseline.log2>&1&成功会输出类似:
[1]12345立即看日志确认启动
tail-n30logs/rgb_baseline.log确认进程在跑
jobsnvidia-smi补充:
1、快速打开本项目
cd/mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8 act_yolo