0

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

更烦人的是,如果我将.txt文件分离到yolo 暗网正在寻找的标签目录中,这个错误就会消失,但训练永远不会开始。

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

4

2 回答 2

1

在从不同的角度进行了多次尝试后,我找到了正确的方法。组织图像标签的第一个问题的答案与大多数在线教程的建议相反。标签应位于与图像不同的目录中。每个.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.

于 2021-02-04T18:05:17.670 回答
0

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

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

您应该拥有data/train.txtand data/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 位)

于 2021-02-05T06:41:12.463 回答