测试G-Colab训练的YOLOv3自定义模型时出现CUDA设备未检测到错误的技术求助
解决YOLOv3测试时的CUDA设备未检测错误
我来帮你排查这个在Colab上遇到的CUDA错误问题——训练完YOLOv3自定义模型后测试触发no CUDA-capable device is detected,结合你的场景,大概率是下面几个原因,咱们一步步来解决:
先确认Colab的GPU会话是否正常
Colab的GPU会话会因为闲置超时、训练后意外切换等原因失效。先运行这条命令检查GPU状态:!nvidia-smi如果输出里看不到GPU信息,说明会话已经掉了:
- 点击顶部菜单栏的
Runtime→Change runtime type - 在弹出的窗口里选择
GPU作为硬件加速器 - 重启Runtime(
Runtime→Restart runtime),之后再重新测试。
- 点击顶部菜单栏的
检查Darknet的编译配置是否带CUDA
有时候训练时用了GPU编译的Darknet,但测试前如果重新编译时没开GPU选项,就会变成CPU版本,自然找不到CUDA设备。重新编译带CUDA的Darknet:!sed -i 's/GPU=0/GPU=1/' Makefile !sed -i 's/CUDNN=0/CUDNN=1/' Makefile !make clean && make编译完成后再执行测试命令,确保用的是GPU版本的Darknet。
测试命令强制指定GPU设备
有时候测试命令默认可能没调用GPU,你可以在测试命令末尾加上-gpu 0强制指定使用第一块GPU(Colab一般只有一块):./darknet detector test data/obj.data cfg/yolov3.cfg weights/yolov3.weights data/test.jpg -gpu 0额外检查配置文件的输入尺寸
虽然你已经调整了batch和subdivisions,但YOLOv3要求输入的width和height必须是32的倍数(比如416、608),如果配置文件里的尺寸不符合要求,也可能间接导致设备调用异常,这个可以顺便确认一下。
按照上面的步骤排查,基本就能解决这个CUDA设备未检测的问题了。
内容的提问来源于stack exchange,提问作者Aditya
相关产品推荐
相关产品推荐

