YOLO darknet retrain 甚至没有开始说它在某些 *labels* 目录中找不到 *.txt

YOLO darknet retrain does not even start saying it could not find *.txt in some *labels* directory

我一直在尝试在自定义数据集上重新训练 YOLOv3。我将 jpg 图像及其相应的 txt 注释文件保存在同一目录中。我已经按照建议适当地设置了我的 .data 文件、.names 文件和 .cfg 文件网上很多教程。非常令人沮丧的是,我一直 运行 遇到它说 Couldn't open file: <some-path>/labels/<some file>.txt 的问题。令人恼火的是,它似乎在某些 labels 目录中寻找 .txt 文件,该目录不存在,我也没有在任何地方提及它。我所有的 .jpg.txt 文件都在一个名为 images 的目录中,与系统正在寻找此 labels 目录的位置。

更烦人的是,如果我将 .txt 文件分离到 labels 目录中,这是 yolo 暗网正在寻找的地方,此错误消失但训练从未开始。

我尝试了很多不同的方法来指定路径,使用不同的模型,cfg 文件等,但都是徒劳的。请帮助某人。

从不同角度进行了多次尝试后,我找到了正确的方法。组织imageslabels的第一个问题的答案与大多数在线教程的建议相反。 labels 应位于与 images 不同的目录中。每个 .txt 文件的路径应该与其对应的 .jpg 的路径仅在单词 images 上有所不同.例如,如果图像的路径是 <path/to/somewhere/images/somewhere/xyz.jpg>,则其对应的标签文件的路径应该是 <path/to/somewhere/labels/somewhere/xyz.txt>.

作为对训练未开始的第二部分的回答,请确保在暗网训练命令末尾使用参数 -clear 1,即 ./darknet detector train cfg/data_file.data cfg/cfg_file.cfg yolov3.weights -clear 1.

请记住,在您的 *.data 文件中,您有以下设置:

classes = [Your number of classes]
train  = data/train.txt
valid  = data/test.txt
names = data/obj.names
backup = backup/

您应该有 data/train.txtdata/test.txt,这是一个包含图像目录列表的文本文件。

例如,如果您将所有图片和 txt 文件放在 data/obj,txt 文件应包含:

data/obj/1.jpg
data/obj/2.jpg
.
.
(and so on)

然后,YOLO 会自动检查图像的相应标签,这些标签应该具有相同的名称(在这种情况下:1.txt、2.txt、...)

参考: (https://github.com/AlexeyAB/darknet#how-to-train-to-detect-your-custom-objects中的第3和第4)