YOLO 暗网重新训练甚至没有开始说它在某些 *labels* 目录中找不到 *.txt

问题描述

我一直在尝试在自定义数据集上重新训练 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 文件等,但都是徒劳的。请帮助某人。

解决方法

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

作为第二部分没有开始训练的答案,确保在darknet训练命令的末尾使用参数-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 位)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...