问题描述
训练YOLOv4的过程中,输入代码:
$ ./darknet detector train cfg/xxx.data cfg/xxx.cfg
yolov4.conv.137
报错:darknet: ./src/utils.c:331: error: Assertion `0‘ failed. Aborted (core dumped)
darknet: ./src/utils.c:331: error: Assertion `0’ failed.
Aborted (core dumped)
解决方法
降低 .cfg文件中的batch值与width、height,如下图所示。
解决过程
经过查找发现,引发相关报错的原因为包含:
- 配置文件(./cfg/xxx.cfg)中设置的batch过大。
- ARCH line 与电脑配置不匹配
- 对应cfg文件中subdivisions的值过小
- 显卡算力小,修改[convolutional]层的filters的值
幸运的是我发现原来make过的yolov4 文件可以运行,我对两个程序进行了对比,发现两个的配置相同:
CUDA-version: 11010 (11020), cuDNN: 8.1.0, GPU count: 1
但opencv的版本不相同,能运行的版本为Opencv 4.2.0, 报错版本为Opencv 4.5.2。 接下来就是对Opencv版本进行降级了。
将opencv版本降低为4.2.0后,再make过程中缺失opencv相关文件,如图所示。由于需要忙着训练网络,所以将Makefile中opencv = 0后重新make。
后来发现,需要修改.cfg文档中的batch、subdivision、width与height值。进行对应调整达到电脑对应配置后便可进行训练。
参考
[1]darknet: ./src/utils.c:256: error: Assertion `0’ failed. #1930
[2]darknet: ./src/utils.c:256: error:Assertion ‘0’ failed.
[3]darknet YOLOv4训练遭遇 darknet: ./src/utils.c:326: error: Assertion ‘0’ failed.