从零开始跑通yolov8基线
- 一、环境的搭建
-
- [1.1 下载python3.10](#1.1 下载python3.10)
- [1.2、安装 PyTorch 2.5.1 + CUDA 12.4](#1.2、安装 PyTorch 2.5.1 + CUDA 12.4)
- [1.3 安装 Ultralytics](#1.3 安装 Ultralytics)
- 二、初步了解YOLOv8
-
- [2.1 Ultralytics类似于mmseg 而yolo类似于segformer](#2.1 Ultralytics类似于mmseg 而yolo类似于segformer)
- [2.2 操作以及训练的区别](#2.2 操作以及训练的区别)
- 三、数据集OGSOD2
- 四、开始训练(以RGB为例子)
-
- [4.1 数据集配置文件](#4.1 数据集配置文件)
- 下载预训练权重
- [4.3 先跑一个epoch验证整条链路(数据加载 → 模型 → GPU → 保存)都通。](#4.3 先跑一个epoch验证整条链路(数据加载 → 模型 → GPU → 保存)都通。)
-
- [4.3.1 训练的一些量级单位](#4.3.1 训练的一些量级单位)
- [4.3.2 训练命令](#4.3.2 训练命令)
- 五、输出结果
-
- [5.1 日志](#5.1 日志)
- [5.2 权重](#5.2 权重)
- 六、完整训练
- 补充:
一、环境的搭建
1.1 下载python3.10
bash
cd /mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8
# 创建 conda 环境
conda create -p ./envs/yolov8 python=3.10 -y
激活环境
bash
conda activate /mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8/envs/yolov8
设置短别名
以后直接 act_yolo 就能激活。
bash
echo "alias act_yolo='conda activate /mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8/envs/yolov8'" >> ~/.bashrc
source ~/.bashrc
bash
act_yolo

升级pip
bash
pip install --upgrade pip
1.2、安装 PyTorch 2.5.1 + CUDA 12.4
bash
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 \-f https://mirrors.tuna.tsinghua.edu.cn/pytorch-wheels/cu124/torch_stable.html
检查安装结果
bash
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
bash
pip install ultralytics==8.3.54 "protobuf==4.25.3"
检查
bash
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
bash
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 数据集配置文件
告诉代码数据集位置,结构,标签名
yaml
# OGSOD2 RGB baseline
# 3 classes, val = test (temporary)
path: /mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8/data/OGSOD2/rgb
train: train/images
val: test/images
test: test/images
nc: 3
names:
0: Bridge
1: Harbor
2: Oil-tank
数据集根目录

YOLOv8 图像与标签简化写法


类别




我们之前做的项目有多个配置文件
1、数据集配置文件------------》yolov8里只需要这一个配置文件
2、模型结构------------》在下载预训练权重时附带
3、学习率、优化器、epoch超参数------------》在命令行里显示指定
4、日志、checkpoint等------------》
5、主配置文件,继承上面四个



下载预训练权重
bash
cd /mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8/weight
curl -L -o yolov8n.pt https://github.com/ultralytics/assets/releases/download/v8.3.0/yolov8n.pt
ls -lh yolov8n.pt
bash
cd /mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8
4.3 先跑一个epoch验证整条链路(数据加载 → 模型 → GPU → 保存)都通。
4.3.1 训练的一些量级单位
一个 iteration一次迭代:迭代一次更新一次参数
Batch 批次:一次喂给模型一组Batch (一组样本集合)
Batch Size== 批量:一组样本集合有多少张图片
Epoch== 轮次: 整个训练集完整过一遍


4.3.2 训练命令
bash
cd /mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8
yolo detect train data=configs/ogsod2_rgb.yaml model=weight/yolov8n.pt epochs=1 imgsz=256 batch=64 project=runs/detect name=smoke_test exist_ok=True


五、输出结果
5.1 日志

5.2 权重
这里只保存 best 和 last,可以再续训练
六、完整训练
bash
cd /mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8
mkdir -p logs
ls -lah
bash
cd /mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8
nohup yolo detect train data=configs/ogsod2_rgb.yaml model=weight/yolov8n.pt epochs=100 imgsz=256 batch=64 cache=True workers=8 project=runs/detect name=rgb_baseline exist_ok=True > logs/rgb_baseline.log 2>&1 &



成功会输出类似:
bash
[1] 12345

立即看日志确认启动
bash
tail -n 30 logs/rgb_baseline.log

确认进程在跑
bash
jobs

bash
nvidia-smi

补充:
1、快速打开本项目
bash
cd /mnt/9f931cdb-179d-4c9f-9779-76ecfecd9560/student/wr/YOLOv8
act_yolo