YOLOv8_测试yolov8n.pt,yolov8m.pt训练的时间和效果、推理一张图片所需时间_解决训练时进程被终止killed

接上篇英伟达Jetson搭建Yolov8环境过程中遇到的各种报错解决(涉及numpy、scipy、torchvision等)以及直观体验使用Yolov8目标检测的过程(CLI命令行操作、无需代码)-优快云博客的进一步测试,只是好奇,建议浏览一下就行,不需要浪费时间走一遍这个流程。

主要内容:

  • yolov8n.pt和yolov8m.pt的训练时间;
  • yolov8n.pt和yolov8m.pt处理一张图片的耗时;
  • yolov8n.pt和yolov8m.pt目标检测的效果对比;
  • 尝试对视频.mp4文件进行目标检测;

1、YOLOv8提供的各种模型

YOLOv8 - Ultralytics YOLOv8 文档

YOLOv8提供了基于目标检测、实例分割、姿态检测、分类等不同类型,不同规格的模型,后缀n、s、m、l、x代表模型的规模逐渐增大。

 不同的模型的性能见下表:

关于mAPval 50-95:

  • Precision,精确度,代表预测为正的样本中有多少正确;
  • Recall,召回率,代表真正为正的样本中有多少被预测为正;
  • AP(Average Precision),平均精度,综合考虑精确度Precision和召回率Recall;
  • mAP(mean Average Precision),多个类别下,平均精度AP的均值。
  • mAPval (mean Average Precision on the validation set),在验证集上的mAP。
  • IOU(Intersection overUnion),交并比,“预测的边框”和“真实的边框”的交集/并集,为1代表完全重叠;
  • mAPval 50-95,代表在验证集上IOU=50~95之间的mAP;

关于速度:

  • CPU ONNX指的是在CPU下,使用ONNX这个模型格式推理的速度;
  • A100 TensorRT指的是在英伟达A100显卡GPU下,使用TensorRT推理的速度;

所以总结下就是,模型越大,效果越好,但推理的时间也越久;

2、yolov8n.pt和yolov8m.pt的训练时间

2.1、yolov8n.pt的训练时间

yolo train data=coco128.yaml model=yolov8n.pt epochs=10 lr0=0.01

 训练10次耗时0.376小时≈22分钟。

2.2、yolov8m.pt的训练时间

yolo train data=coco128.yaml model=yolov8m.pt epochs=10 lr0=0.01

如果只是把yolov8n.pt改成yolov8m.pt,且运行设备的内存不够大(我用的是8G内存),就会出现刚开始训练就终止Killed的问题,像这样:

减小batch可以解决这个问题,默认是batch=16,我修改成batch=4之后可以正常训练,batch=-1是可以自动适配硬件这个还没有尝试。

yolo train data=coco128.yaml model=yolov8m.pt epochs=10 lr0=0.01 batch=4

训练的过程中打开jtop,关于安装jtop及可能遇到的问题在这里Jetson Orin Nano_安装jtop指令(遇到循环提示重启服务的问题)、查看系统运行情况及基本信息-优快云博客

可以从下图看到,即便是batch=4,6个CPU基本满负荷,内存占用大概是5.5/7.4≈74%.

最终跑完,一共耗时1.9个小时。

3、yolov8n.pt和yolov8m.pt处理一张图片的耗时

3.1、yolov8n.pt处理一张图片的耗时

一共有10张图片,平均预处理preprocess=7.3ms,推理interence=318.4ms,后处理postprocess=6ms,总计331.7ms;

3.2、yolov8m.pt处理一张图片的耗时

同样的这10张图片,平均预处理preprocess=5.6ms,推理interence=1135.1ms,后处理postprocess=3.4ms,总计1144.1ms,差不多是yolov8n.pt的3.5倍。

4、yolov8n.pt和yolov8m.pt目标检测的效果对比

yolo predict model=yolov8n.pt source='/home/lgzn/Pictures/test_car_plane'
yolo predict model=yolov8m.pt source='/home/lgzn/Pictures/test_car_plane'

对比来说yolov8m.pt效果确实明显要好,比如下图识别出car的置信度变高了,还多识别出2个bus,错误识别的traffic light也没有了。

5、尝试对视频.mp4文件进行目标检测

对图片、视频的检测并没有很大的不同,只是修改个识别的来源source:

yolo predict model=yolov8m.pt source='/home/lgzn/Pictures/video_test/ollie.mp4'

因为看到训练的日志class里面有person和skateboard这两个类别,所以试试看这个video,skateboard识别出来了并且置信度是0.9,满意。

总有一天,我的ollie会过障碍,然后一立、两立;

### 调整超参数以优化YOLOv8分割模型 为了提升YOLOv8在图像分割任务中的表现,可以考虑调整多个关键超参数。这些超参数直接影响到模型的学习过程以及最终性能。 #### 学习率 (Learning Rate) 学习率决定了权重更新的速度,在训练初期通常设置较高以便快速收敛,之后逐渐降低以精细化调优。对于YOLOv8-seg这样的复杂网络结构,建议采用分阶段策略: - 初始较高的学习率用于加速前期收敛 - 中期适当减小学习率稳定训练过程 - 后期进一步降低学习率确保精度[^1] ```python # 设置自定义学习率调度器 scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[50, 75], gamma=0.1) ``` #### 批量大小 (Batch Size) 批量大小影响梯度估计的质量内存占用情况。较大的batch size有助于获得更稳定的梯度方向,但也增加了显存需求。合理的选择取决于硬件条件个人经验: - 小型GPU可选用较小的batch size如4或8 - 大容量设备则尝试更大的数值比如16甚至更高 ```yaml train: batch_size: 16 ``` #### 迭代次数 (Epochs) 迭代次数即整个数据集被遍历多少次。过多可能导致过拟合;不足又难以充分挖掘特征空间。一般而言,具体值需视数据规模而定: - 对于大规模高质量的数据集,增加epochs可能带来更好效果 - 数据有限的情况下应谨慎控制epoch数量以防过拟合 ```yaml train: epochs: 300 ``` #### 权重衰减 (Weight Decay) 作为正则化手段之一,weight decay能够抑制模型复杂度过高带来的风险。适度应用可以帮助防止过拟合并促进泛化能力: - 常见取值范围为\(1e^{-4}\sim1e^{-5}\) ```yaml solver: weight_decay: 0.0005 ``` #### 随机裁剪与缩放 (Random Crop & Resize) 增强技术能有效扩充样本多样性,缓解因标注偏差造成的分布不均现象。随机裁剪配合不同比例尺下的resize操作尤其适用于目标检测/分割场景: - 推荐启用此功能并测试多种组合方案找出最优配置 ```yaml augment: random_crop: true resize_ratio: [0.5, 2.0] ``` 通过上述几个方面细致调节超参数,并结合交叉验证等方法不断试验对比,有望显著改进YOLOv8在特定应用场景下的分割准确性及效性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值