windows下训练yolo时出现CUDA Error: out of memory问题的解决

1.CUDA Error: out of memory darknet: ./src/cuda.c:36: check_error: Assertio `0' failed.


需要修改所使用的模型cfg文件中的subdivision的参数。

由subdivisions=8改成subdivisions=64。


subdivision:这个参数很有意思的,它会让你的每一个batch不是一下子都丢到网络里。而是分成subdivision对应数字的份数,一份一份的跑完后,在一起打包算作完成一次iteration。这样会降低对显存的占用情况。如果设置这个参数为1的话就是一次性把所有batch的图片都丢到网络里,如果为2的话就是一次丢一半。

http://blog.csdn.net/renhanchi/article/details/71077830?locationNum=11&fps=1


若上述方法不能解决:

导致cuda真正的原因是:

大致意思就是 服务器的GPU大小为M

tensorflow只能申请N(N<M)

也就是tensorflow告诉你 不能申请到GPU的全部资源 然后就不干了

解决方法:

找到代码中Session

在session定义前 增加


config = tf.ConfigProto(allow_soft_placement=True)

#最多占gpu资源的70%
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.7)

#开始不会给tensorflow全部gpu资源 而是按需增加
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)

这样就没问题了


其实tensorflow 算是一个比较贪心的工具了

就算用device_id指定gpu 也会占用别的GPU的显存资源 必须在执行程序前

执行 export CUDA_VISIBLE_DEVICES=n(n为可见的服务器编号)

再去执行python 代码.py 才不会占用别的GPU资源

最近刚开始搞tensorflow 之前都是caffe

这周连续3天被实验室的人 举报 占用过多服务器资源 真是心累 只要用上面的方法

也就是执行代码前 执行 export CUDA_VISIBLE_DEVICES=n

只让1个或者个别GPU可见 其他GPU看不见 就行了

http://blog.csdn.net/wangkun1340378/article/details/72782593


解决方法:运行ytiny-yolo-voc.cfg不会遇到此类情况,但是使用yolo-voc.cfg等多层模型会遇到cuda error out of memory错误,由于本人能力在darknet中并没有找到上述资料中所说的修改gpu资源分配的地方。故需运行yolo-voc.cfg时先查看nvidia-smi中查看gpu使用情况,只有完全gpu完全闲置才可以正常运行。(若有人同时在跑其他程序就不行啦)



2.使用detector recall函数前需要先修改examples/detector.c的代码


//改成infrared_val.txt的完整路径

然后记得一定要make一下


http://blog.csdn.net/hysteric314/article/details/54097845

<think>嗯,用户提到了在YOLO训练过程中遇到了进度条显示0%或者优化器相关的错误。首先,我需要回忆一下YOLOv5训练过程中常见的这类问题可能是什么原因引起的。根据之前的经验,进度条卡在0%可能和数据集路径设置不正确有关,比如数据集的YAML文件路径不对,或者图像文件没有被正确加载。另外,数据预处理阶段的问题,比如图像尺寸不符合要求,或者标注文件存在错误,也可能导致训练无法正常开始,从而进度条不更新。 然后是优化器错误,这可能涉及到学习率设置不当,或者安装的PyTorch版本与YOLOv5代码不兼容。例如,某些优化器参数可能需要特定版本的库支持。另外,用户可能修改了模型结构,导致优化器在初始化出现参数错误,比如传入了空的参数列表。 接下来,我需要整理解决这些问题的步骤。首先检查数据集路径是否正确,确认YAML文件中的路径是否存在拼写错误,图像和标注文件是否齐全。然后检查数据格式,比如图像是否为支持的格式(jpg、png等),标注文件是否与图像对应,并且符合YOLO的格式要求(class_id x_center y_center width height,归一化后的值)。 关于优化器错误,需要检查PyTorch版本是否符合YOLOv5的要求,查看官方文档推荐的版本,必要升级或降级。另外,检查学习率是否在合理范围内,过高的初始学习率可能导致训练不稳定。如果用户自定义了模型结构,需要确认是否影响了优化器的参数传递,比如某些层没有被正确注册,导致参数列表为空。 还要考虑硬件相关的问题,比如CUDA是否安装正确,GPU驱动是否最新,是否存在内存不足的情况。有候,CUDA内存不足会导致训练无法启动,进度条卡住。这候需要调整批次大小,或者检查是否有内存泄漏的情况。 此外,查看错误日志是关键。YOLOv5在运行会输出详细的日志信息,根据报错信息中的行号去检查对应的代码部分,比如数据加载、模型构建或优化器初始化等步骤是否存在问题。如果是优化器错误,可能需要检查优化器的配置参数是否正确,比如动量、权重衰减等是否在合理范围内。 可能还需要建议用户尝试在官方提供的标准数据集(如COCO)上运行训练,以排除是否是自定义数据集的问题。如果标准数据集可以正常运行,那么问题很可能出在用户的数据集或配置上。反之,则需要检查代码和环境配置。 最后,建议用户更新YOLOv5到最新版本,因为开发者可能已经修复了一些已知的bug。同,参考GitHub上的Issues和讨论,寻找类似问题解决方案,或者向社区寻求帮助。</think>### YOLO训练中进度条0%或优化器错误的解决方法 #### 1. 检查数据集配置 - **路径正确性**:确保`data.yaml`中的`train`和`val`路径指向正确的图像和标签目录。例如: ```yaml train: ../datasets/coco/train/images val: ../datasets/coco/val/images ``` 若路径错误,训练会因无法加载数据而卡在0%[^2]。 - **数据格式验证**: - 图像格式需为`.jpg`、`.png`等标准格式。 - 标签文件需为`.txt`格式,每行包含`class_id x_center y_center width height`(归一化值)。 - 使用工具验证标注: ```bash python utils/checks.py --data data.yaml ``` #### 2. 环境与依赖项排查 - **PyTorch版本匹配**:YOLOv5要求PyTorch≥1.7.0。检查版本: ```bash pip show torch ``` 若不匹配,更新: ```bash pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113 ``` - **CUDA状态**:确认GPU可用: ```python import torch print(torch.cuda.is_available()) # 应输出True ``` #### 3. 优化器错误调试 - **学习率设置**:初始学习率(`--lr`)建议在`0.001`到`0.01`之间。过高可能导致数值不稳定。 - **参数检查**:若自定义模型,检查优化器参数是否为空: ```python model = Model().to(device) print(len(list(model.parameters()))) # 应大于0 ``` #### 4. 日志与代码调试 - **错误追踪**:运行训练命令添加`--verbose`参数: ```bash python train.py --img 640 --batch 16 --data coco.yaml --weights yolov5s.pt --verbose ``` 根据报错位置(如`train.py`第120行)检查数据加载逻辑。 - **简化测试**:使用小批次和少量数据验证流程: ```bash python train.py --epochs 1 --batch 2 --data coco.yaml --weights yolov5s.pt ``` #### 5. 硬件资源监控 - **GPU内存管理**:若出现`CUDA out of memory`,降低批次大小: ```bash python train.py --batch 8 # 原为16 ``` - **CPU/GPU利用率**:使用`nvidia-smi`或`htop`监控资源占用,排除瓶颈。 #### 6. 更新代码与参考社区 - **同步最新版本**: ```bash git pull origin master pip install -r requirements.txt --upgrade ``` - **查阅已知问题**:在[YOLOv5 Issues](https://github.com/ultralytics/yolov5/issues)中搜索关键词如`optimizer error`或`0% progress`。 ---
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值