将大量数据从Google Colab上传到云端硬盘时的注意事项


介绍

我是一个很弱的学生,在技术学院5年级时从事图像处理的毕业研究。
Colab用作执行环境,因此可以轻松使用GPU,并可以及时在家中进行研究。这是一个方便的时间...

我正在使用COCO Dataset作为数据集,因为我正在进行所谓的机器学习,但是由于发生了各种问题,所以我将其编写。如果有帮助的话...

发生的问题

发生了一些问题,因此我将列出它们。

第1部分:大型ZIP不能解压缩

我认为可以在Web上收集的学习数据集(不限于图像系统)通常以压缩状态下载。
如果要在Colab上下载或解压缩数据集,请

1
2
3
4
5
6
7
8
    #ドライブのマウント
from google.colab import drive
drive.mount('/content/drive')

    #URLから対象のファイルをドライブにダウンロード
!wget -P "/content/drive/My Drive/ダウンロード先のディレクトリ名" https://Dataset.No.URL
    #指定ZIPの解凍
!unzip "/content/drive/My Drive/ダウンロード先のディレクトリ名/filename.zip" -d "/content/drive/My Drive/解凍先のディレクトリ名"

我想我会写

,但是我被困在这里。

在解压缩train2017(18GB,约120,000个文件)时,我在途中抛出了zip文件读取错误。 (看起来与超时不同吗??)
我不知道详细的边框,但是就某些论坛而言,似乎可以一次处理的文件数量是有限的。包括我在内大约是15,000。
但是,即使您尝试使用带Drive的ZIP Extractor直接解压缩目标ZIP,也会引发错误。嗯

解决方案

在Colab中有几种处理文件的方法,但是上传到会话存储不是很理想,因为它会在运行时重置时消失。
我终于以某种方式希望将数据集存储在驱动器上。

暂时感觉很强烈,但是我设法按照以下流程将所有内容上传到驱动器。

1.在本地将文件拆分为多个目录

一次可以处理的文件数大约为15,000,因此我将120,000图像文件划分为10个目录,分别压缩,然后将其上传到云端硬盘。
我手动操作是因为它很尴尬,但是有人在github上发布了源代码,因此我将发布一个链接。 *需要验证,因为我们尚未验证
?无法从大文件夹中读取文件(输入/输出错误)

2.解压缩每个上传的ZIP

与上述ZIP压缩的来源相同。输出目标可能在您要存储数据集的目录下。

3.合并解压缩目录

中的文件

在/我的驱动器/数据集下有很多目录很麻烦,所以我只想总结一下内容。在Colab,

1
2
3
import os
%cd "/content/drive/My Drive/dataset/001" #分割したデータセットファイルがまとまっているディレクトリ
!mv *.jpg "/content/drive/My Drive/dataset" #移動先

您可以使用

一次将内容移至较高层。我以某种方式通过用* .jpg指定扩展名来选择它,但这是我在其中查阅目录内容的地方。

第2部分:一次交换文件时驱动器死机

由于

驱动器的规范,例如,使用Colab中的脚本上传10,000张图像时,会有相当大的反射滞后。上载过程已在运行时完成,但是当我在Drive中查看时,找不到文件。

尽管此类Drive中的反射卡住了,但是如果您继续执行该过程或再次运行上传脚本却认为它失败了(尽管上传已经完成),那将会发生可怕的事情。

忽略指定的路径并上传到顶级目录
甚至更多,
顶级目录中充满了文件,因此不接受来自Colab的装载
我将详细解释。

1.反射驱动?处理延迟

如果您尝试一次移动数据,则Drive中的反射将被延迟。如果该过程正在进行中,但是我认为它失败了,然后再次运行它,那么将忽略路径规范,并且可以将整个内容扩展到Drive顶部的/ content / drive / My Drive。

我经历了两次,并且在"我的云端硬盘"下直接扩展了超过20,000个图像文件。我想哭。

2.在驱动器

上安装限制

如果我可以使用来自Colab的命令一次将其全部删除,那不会太痛苦,但是它被Drive规范所阻止。
在云端硬盘中移动文件时,有必要使用上述脚本来挂载Colab和云端硬盘,但是在以下情况下似乎无法访问它。

  • 当文件夹中的文件或子文件夹的数量增加太多时
  • 当"我的云端硬盘"下有很多文件时
  • 当超过每个用户和每个文件的默认操作数时,等等。

?详细信息:https://research.google.com/colaboratory/faq.html#drive-timeout

其中,我碰到的是"当"我的云端硬盘"下有很多文件时。"
由于上述事件,"我的云端硬盘"中充满了大量文件。这让我感到困惑,因为我无法将其安装在驱动器上,而且手动删除的内容太多。

我通过聊天联系了Saposen,并要求在驱动器中批量删除(初始化),但是听说它没有完成,所以开始了手动擦除。
(您可以选择驱动器上带有Shift A的所有文件,但是由于显示的项目数和处理数量的限制,一次只能擦除约1000个文件,这需要很多时间,并且删除回收站也需要时间。 bin,苦修)

解决方案

首先,我认为务必要小心,不要这样做,但我会写下发生的情况该怎么办。如果不可能,请手动将其删除。这个很难(硬。

1.在不断开运行时连接

的情况下,监视"我的驱动器"中的文件数

如果您认为

驱动器上的反射很慢,则最好等到反射完成。但是,如果您要执行大量处理,则可能直接在"我的云端硬盘"下生成文件。
因此,从执行到反射的过程中,如果发生事故,将无法重新安装,因此请不要重置运行时

1
2
3
%cd "/content/drive/My Drive"
import os
!echo | xargs ls | wc

建议监视" "之类的"我的云端硬盘"中文件数量的变化。

输出看起来像↓。

1
2
/content/drive/My Drive
      5       6      73

2.一次删除"我的云端硬盘"下的所有特定文件

即使您将文件散布在"我的驱动器"下,如果保持安装,您也可以使用rm一次将其全部删除。

1
2
3
%cd "/content/drive/My Drive"
import os
!rm ./*jpg #ワイルドカードで拡張子を指定

在末尾

我自己也有一个纪念意义,但我希望能有所帮助。
我是初学者,所以如果您有任何疑问,请随时...