谷歌云盘Colab使用心得

1 连接Colab

1.1 上传文件夹到云端硬盘

 在这里插入图片描述

1.2 安装必要的包和软件

在代码段输入以下代码:

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} &1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

1.3 Colab上挂载Google Drive

from google.colab import drive
drive.mount("/content/drive")

1.4 进入到文件所在的目录

import os
path="/content/drive/MyDrive"
os.chdir(path)
os.listdir(path)

 path="/content/drive/MyDrive"包含内容为如下界面内容:

谷歌云盘Colab使用心得_第1张图片

 得到的结果为:['Colab Notebooks', 'Untitled', 'Untitled0.ipynb', 'colab']

2 下载图像数据集

最近在用谷歌云盘的colab跑目标检测的代码,要把KITTI图像数据集保存在谷歌云盘,但是在官网上好像需要发送到邮箱然后再下载比较麻烦,所以在CSDN上找到了这个好链接,可以直接在colab上用代码下载保存在谷歌云盘,非常nice! 分享给大家

2.1 下载地址

各类图像数据集下载地址

2.2 下载代码

在云盘中要保存的地址

import os
os.chdir('/content/drive/MyDrive/Colab')

下面是下载数据集的代码,只需要【!wget 网址

# 下载数据集,后面记得换上自己需要的数据集网址
!wget https://s3.eu-central-1.amazonaws.com/avg-kitti/data_object_image_2.zip

3 命令说明

3.1 查询GPU性能

!/opt/bin/nvidia-smi

3.2 查询当前位置所在目录

!ls

3.3 查看当前的工作路径

!pwd

3.4 新建文件夹

!mkdir  XXX  新建文件夹,XXX是你的路径与文件名,例如下图是在根目录下创建data文件夹。

!mkdir ./data

3.5 设置工作路径

#设置根目录为此路径,即工作路径
import os
os.chdir('/content/drive/MyDrive/paper/fastswa_semi_metric_files/')

上面代码是设置云端硬盘项目主目录为工作根目录,这样子的话就无需改动,项目里面的路径了,对了项目中要使用相对路径,否则会报错。如实在需要使用绝对路径,那么一定要是 /content/drive/MyDrive/ 开头。这样的话,我们就进入到了我们的项目中了,再执行下面的命令就可以运行我们的mian.py 了,前面感叹号一定要是英文感叹号。

! python main.py

3.6 复制解压数据集

如此一来就可以在Colab中连接到谷歌云端硬盘,然后再进入项目主目录运行我们的代码了。但是又有个问题来了,就是我们的Colab服务器与云端硬盘并不是在一台服务器上,所以如果我们的项目中有大量的数据需要读取,那么这个I/O操作是非常消耗时间的。这个时间简直让人疯了,比我本机还慢,所以为了解决这个问题,需要把云端的数据加载到上文的 content 路径下,例如上文的data 目录下。首先把数据打包成zip压缩包上传到云端硬盘中,例如我的数据是data-local.zip,放在Demo路径下,使用如下命令进行copy到./data/下,也就是content/data路劲下,Linux中./表示主目录content/。

!cp /content/drive/MyDrive/paper/Demo/data-local.zip ./data/

然后再进入到./data目录下,解压data-local.zip数据,这个过程都很快,前面copy数据也非常快,然后就需要改一下代码中的读取数据的路径了,改成./data/data-local/XXX 即可读取,这时候运行起来就非常快了!

!cd ./data && unzip data-local.zip

4 运行自己的py文件

  1. 将py文件和其他必要文件上传到Google Drive
  2. 将工作目录切换到py文件所在的目录
import os
os.chdir('drive/Colab/自己的文件')

不放心的话切换之后用!s命令查看是不是到指定目录

     3. 运行代码

!python xx.py

5 注意事项

1. Linux系统下文件路径使用‘/’而不是“\”,所有带“\”路径都会提示文件不存在
2. 使用云端硬盘保存数据
直接使用colab可以上传临时数据,保存临时结果,一旦断开连接,数据将会丢失,所以强烈建议使用云端硬盘保存数据。
3. 断开连接的解决办法
在使用Colab时,一段时间挂机未操作有可能导致连接断开,但是要是想跑时间较长的项目时不可能一直盯着屏幕,解决办法如下:
在浏览器中按F12,找到console将下面的代码粘贴到控制台运行即可。

function ClickConnect(){
  colab.config
  console.log("Connnect Clicked - Start"); 
  document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click();
  console.log("Connnect Clicked - End");
};
setInterval(ClickConnect, 60000)

4. 运行时间过长的项目
建议保存中间结果,下次使用时直接读取中间结果继续跑。

6 防中断

在Firefox和Chrome中,在colab页面,按Ctrl+Shit+i,打开检查页面(也可以右击鼠标,选择“检查”),并切换到控制台或terminal标签,chrome中为Console。

function ConnectButton(){
    console.log("Connect pushed"); 
    document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click() 
}

setInterval(ConnectButton,60000);

执行了代码后,记下弹出的数字,那是intervalId,当想停止这段代码的执行时,只需要执行

clearInterval(intervalId)

7 在gdrive中保存调用模型

7.1 保存模型

要保存我们的模型检查点(或任何文件),我们需要将其保存在驱动器的安装路径中。eg.

model_save_name = 'classifier.pt' 
path = F"/content/gdrive/My Drive/{model_save_name}" 
torch.save(model.state_dict(), path)

7.2 调用模型

记住我们保存的路径:

eg.

model_save_name = 'classifier.pt' 
path = F"/content/gdrive/My Drive/{model_save_name}" 
model.load_state_dict(torch.load(path))

8 在需要同步的地方手动强制刷新

我想将训练的中间结果写到Drive里保存,需要等所有任务都完成,并且在这边显示已经存在,回到Drive目录里查看仍然啥都没有,这个时候就可能页面关了,缓存文件还没更新过去。实际使用中,可以在需要同步的地方手动强制刷新:

# 实现对网盘的同步
drive.flush_and_unmount()

你可能感兴趣的:(姿态识别,python,计算机视觉,深度学习)