news 2026/8/22 2:18:02

YOLO系列学习三(训练):

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
YOLO系列学习三(训练):

!!!如何让训练跑的更快:

一.训练效率:即下面四种硬件资源的利用率

二.两个高效率训练的典型特征:

-cuda的利用率又高又稳

-所有资源利用率都不到100%

三.影响GPU训练效率的4个选项:

1.imgsz选项--->缩放

注:imgsz必须是32的倍数

例如:imgsz=640,就是将图片缩放到一个640×640的正方形里,图片的宽高比例不变

到目前为止的训练的完整流程:

重点:

-imgsz越小,训练越快,但是也是有上限的,并且还与训练效果有关

-Imgsz设置成多少比较合适:一般保持默认的640就行

-比较建议调整的情况有两种:

1.图片尺寸很大,目标一丁点---->imgsz调高一点

2.图片尺寸普遍比640小---->保持原本(接近)的32倍的imgsz

2.batch选项---->批次

一个批次里图片的数量:批量(batch size)

代码里将"batch=2",一次投喂两张图片

硬件条件会限制batch的上限

batch=2 时间:大概42s

batch=8 时间:大概22s

(1)batch对显存占用和训练效率的影响:

-batch太小,显存占用低,训练效率低

-随着batch越调越高,显存占用会变高,训练效率也会变高,但是效率的提升是有限的

-尤其是显存占用快满的时候,效率反而会变差

-batch再高的话,甚至会开始报错

(2)接近最快的batch一般是在一个区间里,我们只需要将batch调整到这个区间就行

方法:将"batch=-1",YOLO就会自动帮你找一个相对合适的batch,调到能差不多接近最快就行

3.cache选项---->缓存

默认cache=False,即不适用缓存

对应cache="ram",即使用内存作为缓存

缓存的核心思想:如果一个东西你经常用,就放到近一点的地方

所有训练集图片都以文件的形式存储下硬盘里,每次训练时,都需要将图片从硬盘加载到内存里,再进行后续操作

cache="ram",提前加载,提前缩放(大概率可以提高训练的效率)

缺点:所有缩放后的图片都会放到 内存里,所以内存要足够大,才能容纳这些图片

4.workers选项---->打包

细节:

-每一轮的每个批次都是随机打包的

-在把每批次的图片拼到一个数据块之前,通常会先随机修改一下

数据增强(修改)----随机放大或缩小一些,接着随机旋转一点角度,再调一调颜色,再从中间裁剪一下

一个批次完整的打包流程:

解决办法:多开几个进程打包:

"worker=1",时间:大概12s

worker每加一,内存就要多消耗一倍

5.邪修路线:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 23:35:56

计算机毕业设计springboot基于多模态医学知识的医疗诊断专家 基于Spring Boot框架的多模态医学知识辅助诊疗系统设计与实现 Spring Boot驱动的多模态医学知识智能诊断平台开发

计算机毕业设计springboot基于多模态医学知识的医疗诊断专家gg5689(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着科技的飞速发展,医疗行业正逐步迈向智能化与信…

作者头像 李华
网站建设 2026/8/21 19:38:21

Memobase记忆系统:构建AI长期记忆的终极指南

Memobase记忆系统:构建AI长期记忆的终极指南 【免费下载链接】memobase Profile-Based Long-Term Memory for AI Applications 项目地址: https://gitcode.com/gh_mirrors/me/memobase 在人工智能快速发展的今天,如何让AI记住用户信息并提供个性化…

作者头像 李华
网站建设 2026/8/21 23:01:54

Taskflow终极指南:现代C++并行任务编程的完整解决方案

Taskflow终极指南:现代C并行任务编程的完整解决方案 【免费下载链接】taskflow 项目地址: https://gitcode.com/gh_mirrors/taskfl/taskflow Taskflow是一个使用现代C编写的通用任务并行编程框架,它通过简化复杂的并行任务调度,让开发…

作者头像 李华
网站建设 2026/8/21 23:02:04

break和continue的区别是什么?

一、开篇:循环控制的 “刹车” 与 “换挡”——break 和 continue 的核心定位在编程的循环逻辑中,break和continue是两个高频使用的循环控制语句,它们看似都能改变循环的执行流程,但本质上是解决完全不同问题的 “工具”&#xff…

作者头像 李华
网站建设 2026/8/21 23:01:59

物联网数据洪峰下的生存指南:3招让关键消息“插队“成功

当海量物联网数据涌来,如何让救命信号不被淹没?在数以万计的设备同时上报数据的场景中,普通数据与紧急告警混杂在一起,系统如何识别并优先处理那些真正重要的信息?这正是物联网数据分级、紧急消息处理和智能队列路由技…

作者头像 李华