我正在尝试在自定义数据集上训练 Yolo,一切似乎都在工作而没有错误,但它只是没有训练。
我按照 https://github.com/AlexeyAB/darknet 上的教程操作了两次,但我得到了相同的结果
./darknet detector train data/obj.data cfg/yolo-obj.cfg yolov4.conv.137
[yolo] params: iou loss: ciou (4), iou_norm: 0.07, cls_norm: 1.00, scale_x_y: 1.05
nms_kind: greedynms (1), beta = 0.600000
Total BFLOPS 59.563
avg_outputs = 489778
Loading weights from yolov4.conv.137...
seen 64, trained: 0 K-images (0 Kilo-batches_64)
Done! Loaded 137 layers from weights-file
Learning Rate: 0.001, Momentum: 0.949, Decay: 0.0005
Resizing, random_coef = 1.40
608 x 608
Create 64 permanent cpu-threads
mosaic=1 - compile Darknet with OpenCV for using mosaic=1
我也尝试过没有预先训练的重量,但这也没有开始训练过程
./darknet detector train data/obj.data cfg/yolo-obj.cfg
[yolo] params: iou loss: ciou (4), iou_norm: 0.07, cls_norm: 1.00, scale_x_y: 1.05
nms_kind: greedynms (1), beta = 0.600000
Total BFLOPS 59.563
avg_outputs = 489778
Learning Rate: 0.001, Momentum: 0.949, Decay: 0.0005
Resizing, random_coef = 1.40
608 x 608
Create 64 permanent cpu-threads
mosaic=1 - compile Darknet with OpenCV for using mosaic=1
我错过了什么?
如果你想使用OpenCV,你需要重新编译Darknet,但首先将make文件更改为以下内容:
OPENCV=1
如果你不需要OpenCV,那就按照@TaQuangTu的要求去做。当您修复此行时,只需再次运行 build.sh 脚本,它应该可以正常工作。
如果您打算使用 GPU 进行训练,我还建议您更改以下行
GPU=1
CUDNN=1
CUDNN_HALF=1
我的朋友,我现在刚刚解决了这个问题。 我想我已经在这里找到了原因。如果你的训练/测试.txt是空的,这就是原因。您打开"creating-train-and-test-txt-files.py"并对其进行编辑。找到关键字是 jpeg 地方。我们在这里只能找到 2 个 JPEG 单词,您可以将它们编辑为"jpg"并在您的 Google 云端硬盘中替换它。 最后,重新启动合作实验室工作。而且您的培训不会因为"608 x 608 创建 64 个永久 CPU 线程"。
来自中国的良好祝愿。
你是如何安装OpenCV的?
对于简单的修复,您可以尝试此sudo apt install libopencv-dev python3-opencv
还要确保你有cmake,
sudo apt install cmake
这应该在您的系统中安装 opencv 3.2 和 cmake 3.10。然后尝试运行暗网。
最后,更改生成文件,
OPENCV=1
上述错误主要是由于空train.txt
和test.txt
文件引起的。请检查这两个文件
使用它来启用OpenCV:
$ git clone https://github.com/AlexeyAB/darknet.git
$ cd darknet
$ sed -i 's/OPENCV=0/OPENCV=1/' Makefile
https://github.com/AlexeyAB/darknet/blob/master/Makefile#L4
开始训练时查看资源利用率,并查看 RAM 是否导致资源利用率超过。
如果是这样,请尝试以下解决方案:
[net] 部分中的 CFG 参数:
[网]部分
批次 - 将在一批中预处理的样品数量(图像、字母等(
细分 - 一个批次中的mini_batches数量,大小mini_batch=批次/细分,因此GPU一次处理mini_batch样本,并且批量样本的权重会更新(1次迭代处理批量图像(
参考这一点,我尝试了各种组合min_batch尺寸,例如:
批次=64, 细分=8
"或">
批次=64, 细分=16
等等...
我发现我的colab只为min_batch=2工作 因此,我认为细分是批次的一半,例如:
batch=64
subdivisions=32
"或">
batch=32
subdivisions=16
或任何其他...
当我使用
批次=1, 细分=1