尝试运行暗网检测时无法打开文件yolov3_custom_last.weights

问题描述

我一直在尝试使用YOLO(v3)来实现和训练OpenImage数据集对Tank的对象检测。 我试图从this tutorial获得帮助,我的代码看起来很像。 另外,我正在使用Google Colab和Google云端硬盘服务。 通过我的程序,一切都很好。但是当我运行darknet进行检测时,在最后一步遇到了错误

!./darknet detector train "data/obj.data" cfg/yolov3_custom.cfg "darknet53.conv.74" -dont_show

经过100次迭代后,当尝试将进度保存到我在obj.data文件中处理过的备份文件夹中时,出现以下错误

Saving weights to /content/drive/My\Drive/YOlov3/backup/yolov3_custom_last.weights
Couldn't open file: /content/drive/My\Drive/YOlov3/backup/yolov3_custom_last.weights

起初,我以为我在使用地址时犯了一个错误;因此,我尝试使用ls命令检查地址

!ls /content/drive/My\Drive/YOlov3/backup/

结果是一个文件夹(但是,这不是一个错误,表示我已经正确写入了地址并且可以在我的Google驱动器中访问该地址)。

以下是data.object文件内容

classes = 1
train = data/train.txt
valid = data/test.txt
names = data/obj.names
backup = /content/drive/My\ Drive/YOlov3/backup

我还对配置文件进行了必要的更改,所以我认为问题不在于此。但是只是为了确保这是我在yolov3.cfg文件中所做的更改:

  1. 首先,我们将注释第3行和第4行(批处理,细分)以取消设置测试模式
  2. 我们将取消注释第6行和第7行(批处理,细分)以设置为训练模式
  3. 我们将max_batches的值更改为 2000 * number_of_classes (如果像我们的案例那样有一个类,则设置为4000)
  4. 我们将类似于步元组的值更改为max_baches值的80%,即90%。在这种情况下,它将是3200、3600。
  5. 对于所有所有 YOLO层和其之前的卷积层,将classes的值更改为类数,在这种情况下为1,并根据以下内容更改filters的值以下公式(在这种情况下为18)

转化层的公式可过滤值:(类数+ 5)* 3

搜索错误,并在Github上找到了this issue。 但是,我尝试了推荐的以下方法,但问题仍然相同:

  1. 删除并重新创建backup文件
  2. 试图将行 backup = backup添加文件yolo.data的{​​{1}}文件中,但是cfg文件夹中没有这样的文件
  3. 在备份文件夹中创建一个空的.cfg

本期提到的其他解决方案是关于在PC而非google Colab上运行YOLO的时间。 另外,这是我的YOlov3文件夹的树状结构,它存储在我的Google Drive我的云端硬盘(主文件夹)中。

yolov3_custom_last.weights

所以,我有点受阻,我不知道该怎么解决。我会感谢您的帮助。

解决方法

我在Windows 10上遇到了同样的错误,并且我想设法解决了该错误。我要做的就是将我的“ weights”文件夹(里面有yolov3.weights)移到更靠近.exe文件的位置,在我的情况下,该文件位于“ x64”文件夹中。此后,错误停止出现,应用程序能够正常预测测试图像。

,

我已经解决了使用ln命令更改本地驱动器地址的问题。 问题不是来自我的代码,而是来自yolov3开发人员在目录地址中处理space的方式!显然,正如我在他们的文档中认为的那样,他们对目录中的空间处理得不够好。 因此,我创建了一个虚拟地址,该地址没有“我的云端硬盘”所拥有的空间。 附注:您知道Google云端硬盘中已经有我的云端硬盘文件夹,因此您实际上无法对其进行重命名。 这是您可以用来实现此目的的代码:

!ln -s /content/drive/My\ Drive/ /mydrive