【问题标题】:Couldn't open file yolov3_custom_last.weights when trying to run darknet detection尝试运行暗网检测时无法打开文件 yolov3_custom_last.weights
【发布时间】:2020-12-04 08:44:07
【问题描述】:

我一直在尝试使用 YOLO (v3) 来实现和训练具有 OpenImage 数据集的 Tank 对象检测。 我试图从this tutorial 获得帮助,我的代码看起来很像。 我也在使用 Google Colab 和 Google Drive 服务。 通过我的程序一切都很好。但是当我运行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/

结果是一个空文件夹(但是,这不是错误,这意味着我已正确写入地址并且可以在我的谷歌驱动器中访问它)。

以下是 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. 我们将 step tuple-like 值更改为 max_baches 值的 80%、90% 值。在这种情况下,它将是 3200、3600。
  5. 对于所有 YOLO层和之前的卷积层,将classes的值更改为类数,在这种情况下为1,并根据以下公式更改filters的值(在这种情况下,18)

卷积层过滤器值的公式: (number_of_classes + 5)*3

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

  1. 删除并重新创建 backup 文件夹
  2. 尝试在yolo.data文件夹.cfg的文件中添加 backup = backup行,但cfg文件夹中没有这样的文件。
  3. 在备份文件夹中创建一个空的yolov3_custom_last.weights

本期提到的其他解决方案是关于您在 PC 上运行 YOLO 而不是 google Colab 的情况。 另外,这里是我的文件夹 YOLOv3 的树结构,它存储在我的 Google Drive My Drive(主文件夹)中。

YOLOv3
        darknet53.conv.74
        obj.data
        obj.names
        Tank.zip
        yolov3.weights
        yolov3_custom.cfg
        yolov3_custom1.cfg.txt

所以,我有点卡住了,我不知道有什么办法可以解决这个问题。我将不胜感激。

【问题讨论】:

  • 当您第一次将驱动器连接到 colab 时,驱动器文件夹的行为就像它们被压缩了一样。我不知道为什么,但是在您的代码第一次访问驱动器中的文件夹之后它真的很慢,您可以尝试将文件复制到备份文件夹中以进行首次访问,也许可以解决它。
  • 你找到解决办法了吗?
  • @Tul 是的。实际上问题不是来自我,而是来自 yolov3 开发者!显然,正如我在他们的文档中所想的那样,他们并没有很好地处理目录中的空间。所以我创建了一个虚拟地址,它没有像My Drive 这样的空间。 P.S:您知道我的云端硬盘文件夹已经存在于您的 Google 云端硬盘中,因此您实际上无法重命名它。这是您可以用来实现此目的的代码:!ln -s /content/drive/My\ Drive/ /mydrive

标签: python deep-learning google-colaboratory yolo


【解决方案1】:

我已经解决了使用ln 命令更改本地驱动器地址的问题。 问题不在于我的代码,而在于 yolov3 开发人员在目录地址中处理space 的方式!显然,正如我在他们的文档中所想的那样,他们并没有很好地处理目录中的空间。 所以我创建了一个虚拟地址,它没有像 My Drive 那样的空间。 P.S:如您所知,我的云端硬盘文件夹已经存在于您的 Google 云端硬盘中,因此您实际上无法重命名它。 以下是您可以用来实现此目的的代码:

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

【讨论】:

    【解决方案2】:

    我在 Windows 10 上遇到了同样的错误,我想我设法修复了它。我所要做的就是移动我的“weights”文件夹(里面有我的 yolov3.weights),更靠近 .exe 文件,在我的例子中,它位于“x64”文件夹中。之后,错误停止出现,应用程序能够正常预测测试图像。

    【讨论】:

    • 你好。感谢您的回答。其实这不是问题。我已经发布了这个答案。亲切的问候。
    猜你喜欢
    • 2018-12-28
    • 2016-07-21
    • 1970-01-01
    • 2017-12-10
    • 2012-11-19
    • 1970-01-01
    • 2023-03-27
    • 2021-04-03
    • 2020-07-17
    相关资源
    最近更新 更多