Colab使用指南
Colab Guide
Colab Guide
1.为什么要使用 Colab
就喜欢薅羊毛:)
- 能免费使用一点程度的GPU/CPU来计算和训练模型。
- 云端代码,十分方便,不需要下载pythan或其他语言工具载体。
2.目的
这个教程主要基于b站up的教程视频,使用yolov4来训练模型,尝试使用colab来编写python代码。
3. 步骤
一. 创建文件夹和下载材料
- 从百度云下载VOC07+12+test.zip文件,这是一个包含数据集的压缩包 - JPEGImages里面存放的为图片文件,Annotations里面存放的标签文件,ImageSets里面存放的是区分验证集、训练集、测试集的txt文件。
- 将VOC07+12+test.zip文件进行备份
- 在google云盘上创建一个VOC_dataset文件夹

- 将VOC07+12+test.zip文件上传到VOC_dataset文件夹上,到时候将使用代码进行解压。
- 再创建一个叫models的文件,然后在models文件夹里再创建一个叫yolo4-tiny-pytorch文件夹

- 我们还需要在yolo4_tiny_pytorch里再创建两个文件夹,一个叫model_data,一个叫logs.

- 要在model_data里面放预训练权重(由于使用的是yolo4_tiny_pytorch的库,所以要将相应的预训练权重上传上去)

二. Colab配置环境
- 在Colab里创建笔记本,并更改名字

- 更改硬件加速器:代码执行命令–>更改运行时类型–>硬件加速器–>选择GPU

- 配置环境的检查,一般来说colab已经配备了pytorch的环境,我们可以用以下代码来验证一下
!pip list
可以看到torch已经安装好了.
- 在笔记本上挂载Goole云盘
在笔记上敲入以下代码
from google.colab import drivedrive.mount('/content/gdrive')然后我们会发现文件里多出两个文件夹

⚠️注意:当退出后重新进入就要再运行一次.
- 在笔记本上下载深度学习库
使用git clone进行下载,在笔记上敲入以下代码
!git clone https://github.com/bubbliiiing/yolov4-tiny-pytorch.git%cd yolov4-tiny-pytorch/执行完后就会发现多出一个yolo4-tiny-pytorch文件夹

代码解释: 第一个代码是将学习库git下来(相当于复制),在将它导到自己命名的根目录(%cd + 文件名)
同时yolo4-tiny-pytorch文件夹成为了我们的根目录
如何验证, 输入以下代码即可
!pwd
结果会显示出目前的根目录地址
- 数据集的复制和解压
!rm -rf ./VOCdevkit!cp /content/gdrive/MyDrive/VOC_dataset/VOC07+12+test.zip ./!unzip ./VOC07+12+test.zip -d ./代码解释:将之前复制在云盘的压缩包解压到根目录上,同时删除原先自带的VOCdevkit的文件(原因是文件是空的),cp目标,unzip目标在根目录,rm移除VOCdevkit文件

- 保存路径设置,防止停止使用后丢失权值
加入以下代码
!rm -rf logs ##移除根目录里logs文件!ln -s /content/gdrive/MyDrive/models/yolov4-tiny-pytorch/logs logs ##将云盘里的logs文件链接到根目录可以发现logs文件夹和云盘的logs文件夹一致
三. 训练模型
- 打开VOC_annotation.py文件,由于我们现在使用的直接就是VOC数据集,我们已经划分好了训练集验证集和测试集,所以我们将annotation_mode设置为2。

- 然后输入指令完成标签的处理,生成2007_train.txt和2007_val.txt。

- 处理训练文件需要三个部分
- 预训练文件的使用(也就是我们的权值文件)yolov4_tiny_weights_coco

- 保存周期的设置,由于云盘不够大,所以已经会撑爆,我们需要设置保存周期,然后在保存周期的期间将文件挪出来。
- 设置预训练文件的使用,复制预训练文件的路径,然后打开根目录(yolov4-tiny-pytorch)里的train.py, 替换model_path 的路径

- 保存周期设置,将save_period改成4,也就是每隔4代保存一次

四. 开始训练
复制以下代码即可开始训练模型
!python train.py4. 掉线怎么办
重连呗。设置也得重新搞,但是笔记本都保存好代码了,需要改的不多,同时已经将保存的路径设置到云端里了,不会因为掉线而丢失权值。