深度学习.yolov3.基于Windows系统训练及测试.问题篇
- 0. 目录/步骤
- 5. 遇到罗列问题的解决方案
- 5.0错误目录
- 5.0.1错误目录列表
- 5.1错误3.1.4
- 5.2错误3.2.2
- 5.3错误3.3.2
- 5.4错误3.4.1
- 下一篇
0. 目录/步骤
5. 遇到罗列问题的解决方案
5.0错误目录
5.0.1错误目录列表
1 错误3.1.4: 终端out of memory报错 ->转到5.1->
2 错误3.2.2: 训练出现灾难性nan值 ->转到5.2->
3 错误3.3.2: 坐标.txt坐标导入丢失 ->转到5.3->
4 错误3.4.1: GPU调用冲突报错 ->转到5.4->
5 其他错误待更新
5.1错误3.1.4
终端out of memory报错
报错语句:darknet: ./src/cuda.c:36: check_error: Assertion 0’ failed.
5.1.0.1图片out_of_memory报错->
原因一:GPU显存过小
解决方案一:
修改subdivisions参数,将参数值改为64(=batch),subdivision这个参数顾名思义-分块,我们将一堆图片64为一组进行打组,这就是batch,但GPU不能一口气同时训练64张图片,所以引入了subdivisions的概念,减轻GPU的负担.就好比一樵夫每天(一个周期)都要去上山砍柴(训练),一天的任务是砍64捆(batch),但它不能一口气运下山,所以就每四捆的运(batch=64, subdivisions=16),就要运16趟,相比较于一口气的运,分块的概念弥补了硬件的不足,由时间进行相抵.
解决方案二:
关闭多尺度训练random=0.
解决方案三:
修改compute值,见步骤1.4.2.4,->,降低计算机的生产值
5.2错误3.2.2
训练出现灾难性nan值
5.2.0.1图片出现灾难性的nan->
5.2.0.2图片出现错误收敛->
原因一:数据集规模太小
解决方案:加大数据集的规模,增加训练的数量,增加底层图片库,增加训练集,在相对短的时间内看到收敛
原因二:现存不足
解决方案:在显存允许的情况下,可以适当增加batch,加大subdivisions,关闭多尺度训练,或等待收敛迹象
原因三: 坐标.txt坐标导入丢失
解决方案:见错误5.3->
5.3错误3.3.2
坐标.txt坐标导入丢失
5.3.0.1图片坐标导入丢失->
原因一:voc.names的类名是否与xml的类名不对应
解决方案:对xml文件进行搜索name,找到类名,在终端出现大量的nan时,其中也可能txt坐标没有成功的导入到坐标文件中,所以工程不知道要训练什么,我们在建立连接的环节一定要注意这点.修改voc_label.py文件的源码,修改Classes,改为自己的类,重新导入到txt中,并把voc.data也中的类名也改过来
5.4错误3.4.1
GPU调用冲突报错
报错语句:
CUDA Error: unspecified launch failure
CUDA Error: unspecified launch failure: No error
5.4.0.1图片GPU调用报错->
原因一:没有指定GPU训练
解决方案:输入命令行6.1.1.3进行指定GPU训练
3 指定GPU训练
命令行: darknet.exe detector train data\voc.data cfg\yolov3-voc.cfg yolov3.weights -gpu 1
下一篇
Yolov3基于Windows系统训练及测试(五.整理篇)