用Colab训练机器学习的经验以及踩坑的那些事

首先

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

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

这里先讲用colab:

一.谷歌云盘

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

二.打开colab

你可以点击左上角的新建或者直接右键空白处。用Colab训练机器学习的经验以及踩坑的那些事_第1张图片

用Colab训练机器学习的经验以及踩坑的那些事_第2张图片

然后我们就可以得到一个空白的colab用Colab训练机器学习的经验以及踩坑的那些事_第3张图片

三.登录

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

用Colab训练机器学习的经验以及踩坑的那些事_第4张图片
在新添加的代码块中运行,然后点链接,经过一系列授权之后将授权码复制进下面的小框框然后回车,这样你的colab就可以访问谷歌云盘上的文件。
在这里插入图片描述

开始训练

import os
path="/content/drive/My Drive/U2_net" 
os.chdir(path)
!python Ra_trian.py //注意colab中执行命令前要加!

用Colab训练机器学习的经验以及踩坑的那些事_第5张图片

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

注意事项

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

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

请注意,只要这里不是显示“”重新连接”,那就说明你现在在使用colab,会消耗你的流量,建议直接通过管理会话终止。不太清楚直接关掉会不会断掉连接(好像也会接着连一会儿。。。如果有人亲测了可以告诉我一下。。)
用Colab训练机器学习的经验以及踩坑的那些事_第6张图片
用Colab训练机器学习的经验以及踩坑的那些事_第7张图片

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

用Colab训练机器学习的经验以及踩坑的那些事_第8张图片
如果报错显示显存不足,你可以通过调整batch_size来降低你显存的需求量。。
显存不足:

  1. 明显的提示你CUDA memery 不足
  2. 不明显的提示,运行直接终止,然后出现^c

3.为什么colab跑的这么慢?

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

4.广告时间:

有的人要用colab Pro,但是并没有购买的渠道,我是在某宝上进行购买。
这里安利一个对我很好的学长,我一开始也不知道是我的学长,是他从我的收获地址中认出来,主动给我免了代充费。
这些只是为了体现这个老板不会坑你们的。。。
这里给他打个广告嘿嘿

购买之前最好先询问一下店家!!
安妮代购小店
1.0嘻yVsQXc1RYDA啊 https://m.tb.cn/h.4LDm2LN Colab Pro升级月费会员 谷歌云盘扩容订阅 google one colabpro

用Colab训练机器学习的经验以及踩坑的那些事_第9张图片

那些踩过的坑

不知道是不是网络的问题,在上传数据集的时候,图片莫名其妙的会重复。。
但是谷歌云盘竟然支持相同的名字,所以不能直接通过搜索(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个小时,改了之后就正常了。
解决方式,云盘下放着文件及相关的压缩包。每次运行的时候都进行解压,如果要修改的话就修改云盘下的文件。然后用固定脚本的方式进行修改压缩后的运行文件。
用Colab训练机器学习的经验以及踩坑的那些事_第10张图片

!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)
!pwd
!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训练机器学习的经验以及踩坑的那些事_第11张图片

希望各位可以如愿的跑colab

用Colab训练机器学习的经验以及踩坑的那些事_第12张图片

一些解决方式是参考其他的人做法或者从其他人的讲解得到启发,由于时间过久找不到原文,就不进行参考链接的展示。

你可能感兴趣的:(笔记,机器学习,其他)