【⚡️强烈推荐⚡️】只会官方代码直接训练?YOLOv8官方代码这几个点一定要注意!


在这里插入图片描述


专栏导航点击此处跳转


🚀 YOLOv8

🔨 官方仓库下载


目前YOLOv8代码并没有固定大版本,仍在一直高频率更新,按照以下命令可安装最新版本

git clone https://github.com/ultralytics/ultralytics.git

GitHub下载过慢则使用Gitee下载

git clone https://gitee.com/monkeycc/ultralytics.git

说明:YOLOv8项目实则只需保留ultralytics一个文件夹即可。

💥 旧版本下载

以YOLOv8-8.0.224版本举例:

ultralytics/8.0.224

在这里插入图片描述
说明这里使用旧版本的主要原因是为了后续的剪枝项目,YOLOv8较新版本无法兼容。

📣 版本查看

ultralytics/__init__.py

# Ultralytics YOLO 🚀, AGPL-3.0 license

__version__ = '8.0.227'

from ultralytics.models import RTDETR, SAM, YOLO
from ultralytics.models.fastsam import FastSAM
from ultralytics.models.nas import NAS
from ultralytics.utils import SETTINGS as settings
from ultralytics.utils.checks import check_yolo as checks
from ultralytics.utils.downloads import download

__all__ = '__version__', 'YOLO', 'NAS', 'SAM', 'FastSAM', 'RTDETR', 'checks', 'download', 'settings'

⚡️ 超参数设置

1. img-size

推荐使用默认的 640 ∗ 640 640*640 640640,无需做修改。如果数据集中有大量的小目标,可以适当增加数值,比如800、1024、1280等,有利于训练结果。但也会增加训练时间和显存需求模型推理img-size值需与训练img-size值一致

2. batch-size

批量大小Batchsize训练过程中需要调整的超参数之一。合适的批量大小可以充分利用GPU资源。建议使用硬件允许的最大值,需避免Batchsize值过小产生糟糕的统计结果。

PS:做实验的话不建议将Batchsize拉满,原因如下:

  • 做对比实验需要保持Batchsize一致,但不同模型在Batchsize相同情况下往往存在所需显存不同,举个例子,YOLOv5训练时我将batchsize设置为128,这时显存刚好拉满,但是换成YOLOv7训练,如果你的batchsize设置为128,那显存必爆无疑。众所周知,YOLOv7训练所需要的显存要高得多
  • 如果你对网络进行修改,增加了很多模块,这常常会使得计算量FLOPs增加,那么就需要更多的显存来进行训练。

总结:实验需要保持Batchsize一致,不过这个值需要各位根据具体情况确定。

3. epochs

迭代次数是训练过程中需要调整的超参数之一。迭代次数要足够多以达到模型收敛。

默认300个,出现过拟合则减小该值,反之亦然。

PS:如果时从头开始训练,则可以在训练模型基线时将该值调大,然后观察训练loss大致在多少轮数收敛,那么再结合自身情况综合考虑确定轮数。

4. 🔥🔥🔥 cache

YOLOv8的训练参数里面有一个cache,默认不开启,开启后默认是ram,就是把解码后的图片保存在内存中。也可以是disk,就会把解码后的图片保存在硬盘上,可以加快训练

5. 🔥🔥 seeds

随机种子(seeds)设置用于控制随机性,从而使训练过程更加可重复和可控。模型训练过程通常包含随机性,例如数据增强、权重初始化和优化器等。这些随机因素会影响模型的训练结果,使得每次训练的结果可能不同。如果需要比较不同模型或参数设置的性能,或者需要在多次训练中保持结果的一致性,就需要使用随机种子来控制随机性。

PS:随机种子的设置,能确保每次运行时的随机数生成是可重复的。不过设置种子只能保证模型在相同的种子值下生成相同的随机数序列,但不能保证模型的训练结果完全相同。(少量数据集下训练结果是完全相同的)

6. workers

在YOLO中,workers参数用于指定用于数据加载的工作进程数量。这些工作进程负责将数据从存储设备(如硬盘)加载到内存中,并进行预处理操作,例如图像缩放、数据增强等。默认值为8,一般不做修改,Windows下建议设置为0


🔥 权重文件保存

ultralytics/engine/trainer.py进行相应的修改,值200可根据需求任意更改:

# Save last, best and delete
torch.save(ckpt, self.last, pickle_module=pickle)
if self.best_fitness == self.fitness:
    torch.save(ckpt, self.best, pickle_module=pickle)
# 保存权重文件
if self.best_fitness == self.fitness and self.epoch >= 200:
    torch.save(ckpt, self.wdir / f'best{self.epoch}.pt', pickle_module=pickle)
    strip_optimizer(self.wdir / f'best{self.epoch}.pt')

模型测试

训练完成后,weights文件夹中必将有不少的best_xxx.pt权重文件,训练完接着就是需要在测试集上进行模型性能测试,当然你可以一个一个指定执行,但是很耗时,这时候可以选择使用shell脚本进行自动化执行,新建一个test.sh脚本文件,脚本如下(注意:需要修改data值为自己数据集yaml文件路径):

#!/bin/bash

# 指定目标文件夹的路径
target_folder=$1
task=$2
data="data.yaml"
log_dir="log"

# 获取第一级文件夹名字
parent_folder=$(dirname "$target_folder" | awk -F'/' '{print $NF}')
echo "Found folder: $parent_folder"

# 使用 mkdir 命令创建文件夹,包括多级目录,如果不存在的话
# mkdir -p "$log_dir/$parent_folder"
mkdir -p "$log_dir/$parent_folder"

log_file="$log_dir/$parent_folder/$task.log"
rm -f "$log_file"

# -type f 表示查找文件,-name "*.pt" 表示查找文件名以 .pt 结尾的文件
file_list=$(find "$target_folder" -type f -name "*.pt")

# 重定向标准输出和标准错误到日志文件
exec > "$log_file" 2>&1

for file in $file_list; do

    # 获取第一级和第二级文件夹名字
    # parent_folder=$(dirname "$(dirname "$file")" | awk -F'/' '{print $NF}')
    file_name=$(basename "$file" .pt)
    echo "========================================"
    echo "Found file: $file_name"
    echo "========================================"

    python test.py --weights "$file" --data "$data" --task $task
    
done
执行:
sh test.sh runs/train/exp/weights test

执行完会在根目录下生成log文件夹,里面对应的log日志文件。

  • 23
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w94ghz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值