视频教程地址:bilibili
- 安装
VSCode
,Visual Studio Code - Code Editing. Redefined - 安装
VSCode
插件,Remote-SSH
、Chinese (Simplified)
- 领取
50元算力券(24小时4090显卡)
,无需认证!博主粉丝福利,限量领取
https://cloud.lanyun.net/#/registerPage?promoterCode=5f738eaf90 - 租显卡设备
- 上传数据集
数据集链接:https://pan.baidu.com/s/14Gw_jymmUxQAWv3JNvgwqw
提取码:df66
或 : https://download.csdn.net/download/weixin_43694096/88369997 - 解压数据集到指定位置:
unzip -d /root/VOC2007/ /root/lanyun-fs/VOC2007.zip
- 下载代码:
source /etc/network_turbo
# 开启代理
git clone https://github.com/ultralytics/ultralytics --branch v8.3.12
- 初始化
conda init
- 新建
conda
环境:conda create --name yolov8 python=3.10 -y
- 激活
conda
环境:conda activate yolov8
- 安装环境:
unset http_proxy && unset https_proxy
# 关闭代理
pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
- 下载权重
wget https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n.pt
- 推理模型:
from ultralytics import YOLO
if __name__ == '__main__':
# 加载模型
model = YOLO(r'yolov8n.pt') # YOLOv8n模型
model.predict(
source=r'ultralytics/assets/bus.jpg',
save=True, # 保存预测结果
project='runs/predict', # 项目名称(可选)
name='exp', # 实验名称,结果保存在'project/name'目录下(可选)
)
- 编写数据集
yaml
文件 - 训练模型:
from ultralytics import YOLO
if __name__ == '__main__':
# 加载模型
model = YOLO('yolov11.yaml', task="detect") # 不使用预训练权重训练 | detect, segment, classify, pose, obb
# model = YOLO(r'yolov11.yaml').load("yolov11n.pt") # 使用预训练权重训练
# 训练参数 ----------------------------------------------------------------------------------------------
model.train(
data='coco128.yaml',
epochs=100, # (int) 训练的周期数
patience=50, # (int) 等待无明显改善以进行早期停止的周期数
batch=32, # (int) 每批次的图像数量(-1 为自动批处理)
imgsz=640, # (int) 输入图像的大小,整数或w,h
save=True, # (bool) 保存训练检查点和预测结果
save_period=-1, # (int) 每x周期保存检查点(如果小于1则禁用)
cache=True, # (bool) True/ram、磁盘或False。使用缓存加载数据
device='', # (int | str | list, optional) 运行的设备,例如 cuda device=0 或 device=0,1,2,3 或 device=cpu
workers=8, # (int) 数据加载的工作线程数(每个DDP进程)
project='runs/train', # (str, optional) 项目名称
name='exp', # (str, optional) 实验名称,结果保存在'project/name'目录下
pretrained=True, # (bool | str) 是否使用预训练模型(bool),或从中加载权重的模型(str)
optimizer='SGD', # (str) 要使用的优化器,选择=[SGD,Adam,Adamax,AdamW,NAdam,RAdam,RMSProp,auto]
verbose=True, # (bool) 是否打印详细输出
seed=0, # (int) 用于可重复性的随机种子
close_mosaic=0, # (int) 在最后几个周期禁用马赛克增强
resume=False, # (bool) 从上一个检查点恢复训练
amp=False, # (bool) 自动混合精度(AMP)训练,选择=[True, False],True运行AMP检查
)
- 评估模型:
from ultralytics import YOLO
if __name__ == '__main__':
# 加载模型
model = YOLO(r'yolov8n.pt')
# 验证模型
metrics=model.val(
data=r'coco128.yaml',
split='val', # (str) 用于验证的数据集拆分,例如'val'、'test'或'train'
batch=1, # (int) 每批的图像数量(-1 为自动批处理)
imgsz=640, # 输入图像的大小,可以是整数或w,h
device=0, # 运行的设备,例如 cuda device=0 或 device=0,1,2,3 或 device=cpu
workers=8, # 数据加载的工作线程数(每个DDP进程)
iou=0.6, # 非极大值抑制 (NMS) 的交并比 (IoU) 阈值
project='runs/val', # 项目名称(可选)
name='exp', # 实验名称,结果保存在'project/name'目录下(可选)
)
print(f"mAP50-95: {metrics.box.map}") # map50-95
print(f"mAP50: {metrics.box.map50}") # map50
print(f"mAP75: {metrics.box.map75}") # map75
speed_metrics = metrics.speed
total_time = sum(speed_metrics.values())
fps = 1000 / total_time
print(f"FPS: {fps}") # FPS