当前位置 : 主页 > 编程语言 > java >

Yolov3基于Windows系统训练及测试(四.问题篇)

来源:互联网 收集:自由互联 发布时间:2022-06-30
深度学习.yolov3.基于Windows系统训练及测试.问题篇 ​​0. 目录/步骤​​ ​​5. 遇到罗列问题的解决方案​​ ​​5.0错误目录​​ ​​5.0.1错误目录列表​​ ​​5.1错误3.1.4​​ ​​


深度学习.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报错->
Yolov3基于Windows系统训练及测试(四.问题篇)_机器学习
原因一: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->
Yolov3基于Windows系统训练及测试(四.问题篇)_类名_02
5.2.0.2图片出现错误收敛->
Yolov3基于Windows系统训练及测试(四.问题篇)_yolov3_03
原因一:数据集规模太小
解决方案:加大数据集的规模,增加训练的数量,增加底层图片库,增加训练集,在相对短的时间内看到收敛
原因二:现存不足
解决方案:在显存允许的情况下,可以适当增加batch,加大subdivisions,关闭多尺度训练,或等待收敛迹象
原因三: 坐标.txt坐标导入丢失
解决方案:见错误5.3->

5.3错误3.3.2

坐标.txt坐标导入丢失
5.3.0.1图片坐标导入丢失->
Yolov3基于Windows系统训练及测试(四.问题篇)_yolov3_04
原因一: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调用报错->
Yolov3基于Windows系统训练及测试(四.问题篇)_训练测试问题_05
原因一:没有指定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系统训练及测试(五.整理篇)​​


网友评论