一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第5天, 点击查看活动详情

因为colab是谷歌旗下的云计算,所以如果没有梯子的小伙伴在点完赞后就可以退出去了(不会吧,不会吧,这年头还有人没有梯子/doge)

colab的直达车https://colab.research.google.com/notebooks/intro.ipynb

这里先讲用colab:

一.谷歌云盘

谷歌云盘 上上传你的训练集和代码。

二.打开colab

你可以点击左上角的新建或者直接右键空白处。 在这里插入图片描述

然后我们就可以得到一个空白的colab 在这里插入图片描述

from google.colab import drive
drive.mount("/content/drive")
在新添加的代码块中运行,然后点链接,经过一系列授权之后将授权码复制进下面的小框框然后回车,这样你的colab就可以访问谷歌云盘上的文件。
import os
path="/content/drive/My Drive/U2_net" 
os.chdir(path)
!python Ra_trian.py //注意colab中执行命令前要加!

其中My Drive 就是谷歌云盘,U2_net就是你们要改的地方。。。

1.colab 跑的时间是有限制的!!!

24小时刷新一次,什么时候开始用,什么时候算刷新的起点。 谷歌云盘可以使用GPU ,TPU,CPU(默认)跑代码。似乎三种跑起来的流量是不同的。 你可以购买谷歌的colab Pro 。这样你的流量会比平常多,而且GPU的算力也比较强。但是请注意,不是无限流量。 用CPU好像可以挂12h。Pro 的CPU好像可以挂24h。

请注意,只要这里不是显示“”重新连接”,那就说明你现在在使用colab,会消耗你的流量,建议直接通过管理会话终止。不太清楚直接关掉会不会断掉连接(好像也会接着连一会儿。。。如果有人亲测了可以告诉我一下。。)

2.colab是有显存限制的,下图是我开了colab Pro的。。。

如果报错显示显存不足,你可以通过调整batch_size来降低你显存的需求量。。 显存不足:

  • 明显的提示你CUDA memery 不足
  • 不明显的提示,运行直接终止,然后出现^c
  • 3.为什么colab跑的这么慢?

    一般情况下,colab跑神经网络的第一个epoch都需要加载数据集,只要等第一个epoch过了之后,就开始快了。

    那些踩过的坑

    不知道是不是网络的问题,在上传数据集的时候,图片莫名其妙的会重复。。 但是谷歌云盘竟然支持相同的名字,所以不能直接通过搜索(1)的名字后缀来删除。 应该(1)中 的小括号为中文,所以在读取图片的时候读取不到,但是也不会出现没有这个文件的报错,可能会出现Nantype的报错。 最后写了一个脚本来删除。。

    import cv2
    import os
    import glob
    img_dir = os.path.join(os.getcwd(), 'test' + os.sep)
    lbl_dir = os.path.join(os.getcwd(), 'mask' + os.sep)
    img_name_list = glob.glob(img_dir + '*' + '.png')
    print('img_name_list', len(img_name_list))
    lbl_name_list = []
    for img_path in img_name_list:
        name = img_path.split(os.sep)[-1]  # 文件名,包括后缀
        lbl_name_list.append(lbl_dir + name)  # 获得储存文件地址及名称的列表
    for i in range(len(lbl_name_list)):
        if not os.path.exists(lbl_name_list[i]):
            print(lbl_name_list[i].split(os.sep)[-1])
            os.remove(img_name_list[i])
    

    你也可尝试上传压缩后的文件,然后解压,但是解压后的文件好像也有问题。。 好像谷歌云盘解压的文件数还有限制。。

    解决方案1

    听说可以通过华为的skpt文件好像可以传的更快,不会出现上述问题,什么图片重复啊。并且可以把skpt的数据集传到colab上,跑第一代的时候不需要花费数据加载时间。

    更新:2022年2月26日12:14:16

    解决方案2

    把数据集放在云盘外的文件夹可以便于数据级加载: 本来加载train data要7个小时,改了之后就正常了。 解决方式,云盘下放着文件及相关的压缩包。每次运行的时候都进行解压,如果要修改的话就修改云盘下的文件。然后用固定脚本的方式进行修改压缩后的运行文件。

    !unrar x "/content/drive/MyDrive/root.rar" "/"
    path='/content/drive/MyDrive/root.rar'
    import shutil
    import os
    # # 把olddir拷贝一份newdir
    path='/content/drive/MyDrive/root/YOLOv5-Lite/'
    os.chdir(path)
    !rm /root/YOLOv5-Lite/train.py
    !rm /root/YOLOv5-Lite/utils/datasets.py
    !rm -rf /root/YOLOv5-Lite/data/bdd/labels
    os.system("cp train.py /root/YOLOv5-Lite/train.py")
    os.system("cp test.py /root/YOLOv5-Lite/test.py")
    os.system("cp data/bdd/instances_val2017.json /root/YOLOv5-Lite/data/bdd/instances_val2017.json")
    os.system("cp utils/datasets.py /root/YOLOv5-Lite/utils/datasets.py")
    os.rename('/root/YOLOv5-Lite/data/bdd/images/test','/root/YOLOv5-Lite/data/bdd/images/test_mini')
    os.rename('/root/YOLOv5-Lite/data/bdd/images/val','/root/YOLOv5-Lite/data/bdd/images/val_mini')
    os.rename('/root/YOLOv5-Lite/data/bdd/images/train','/root/YOLOv5-Lite/data/bdd/images/train_mini')
    os.rename('/root/YOLOv5-Lite/data/bdd/images/test1','/root/YOLOv5-Lite/data/bdd/images/test')
    os.rename('/root/YOLOv5-Lite/data/bdd/images/train1','/root/YOLOv5-Lite/data/bdd/images/train')
    os.rename('/root/YOLOv5-Lite/data/bdd/images/val1','/root/YOLOv5-Lite/data/bdd/images/val')
    !unrar x '/content/drive/MyDrive/root/YOLOv5-Lite/data/bdd/labels.rar' '/root/YOLOv5-Lite/data/bdd/'
    

    解决方案3

    保持长时间的固定点击:

    function ClickConnect(){
    console.log("Working"); 
    document.querySelector("colab-toolbar-button#connect").click()
    setInterval(ClickConnect,60000)
    

    Ctrl+Shift+i 然后在console中输入并回车

    希望各位可以如愿的跑colab