神经网络学习小记录69——Pytorch 使用Google Colab进行深度学习_利用google colaboratory训练深度神经网络-程序员宅基地

技术标签: Pytorch  神经网络学习小记录  Colab  深度学习  神经网络  

注意事项

本文以VOC数据集为例,因此在训练的时候没有修改classes_path等,如果是训练自己的数据集,各位一定要注意修改classes_path等其它参数!

学习前言

Colab是谷歌提供的一个云学习平台,Very Nice,最近卡不够用了决定去白嫖一波。该博客只会说明如何使用Colab对已有的深度学习仓库进行训练,并不会说如何进入外网、如何注册等。

该博客仅为了演示Colab的使用,主要是为了各位熟悉Colab操作,具体问题具体分析,操作不当与版本更迭会导致步骤出错,如果出错的话建议多百度,多看代码与指令,查一下错误的原因,同时建议是有一定的基础同学再使用Colab。
在这里插入图片描述

什么是Google Colab

Google Colab是谷歌提供的免费Jupyter 笔记本环境,不需要什么设置与环境配置就可以使用,完全在云端运行。不影响本地的使用。

Google Colab为研究者提供一定免费的GPU,可以编写和执行代码,所有这些都可通过浏览器免费使用。同学们可以在上面轻松地跑 Tensorflow、Pytorch 等深度学习框架。

尽管Google Colab提供了一定的免费资源,但资源量是受限制的,所有 Colab 运行时都会在一段时间后重置。Colab Pro 订阅者的使用量仍会受到限制,但相比非订阅者可享有的限额要多出大约一倍。Colab Pro+ 订阅者还可获享更高的稳定性。
在这里插入图片描述

相关链接

Colab官网:https://colab.research.google.com/
(需要外网才可以进入)
ipynb Github:https://github.com/bubbliiiing/Colab

利用Colab进行训练

本文以YoloV4-Tiny-Pytorch版本的训练为例,进行Colab的使用演示。

一、数据集与预训练权重的上传

1、数据集的上传

Colab和Google自带的云盘联动非常好,因此我们需要首先将数据集上传云盘,这个上传的过程其实非常简单,本地先准备好数据集。
由于我所上传的库,均使用的VOC数据集,我们需要按照VOC数据集摆放好。本文直接以VOC07+12数据集为例进行演示。
在这里插入图片描述
JPEGImages里面存放的为图片文件,Annotations里面存放的标签文件,ImageSets里面存放的是区分验证集、训练集、测试集的txt文件。
然后将VOCdevkit文件整个进行打包。需要注意的是,不是对上面三个文件夹进行打包,而是对VOCdevkit进行打包,这样才满足数据处理的格式。
在这里插入图片描述
在获得打包后的压缩包后,将压缩包上传到谷歌云盘。我在谷歌云盘上新建了一个VOC_datasets文件夹存放压缩包。
在这里插入图片描述
此时数据集的上传已经完成。

2、预训练权重的上传

在谷歌云盘上进行文件夹的创建,首先创建Models,然后在Models里面创建yolov4-tiny-pytorch,然后在yolov4-tiny-pytorch里面创建logs和model_data。

model_data放置的是预训练文件。
logs放置的是网络训练过程中产生的权值。

在这里插入图片描述
由于我们这次使用的是YoloV4-Tiny-Pytorch的库,我们将它的预训练权重上传到model_data文件夹。
在这里插入图片描述

二、打开Colab并配置环境

1、笔记本的创建

在该步中,我们首先打开Colab的官网。
在这里插入图片描述
然后点击文件,创建笔记本,此时会创建一个jupyter笔记本。
在这里插入图片描述
创建完成后给文件改个名,好看一些。
在这里插入图片描述
之后点击代码执行程序,然后点击更改运行时类型,在其中硬件加速器部分选择GPU,Colab便会配置一个带有GPU的机器,此时笔记本就创建完成了。
在这里插入图片描述
在这里插入图片描述

2、环境的简单配置

colab已经集成了pytorch环境,无需专门配置pytorch,不过使用的torch版本较新。
由于我们的数据集在谷歌云盘上,所以我们还要挂载云盘。

from google.colab import drive
drive.mount('/content/gdrive')

我们将上述代码输入到笔记本中执行。将云盘挂载到服务器上。然后点击运行即可。
在这里插入图片描述
此时点击左边栏中,类似于文件夹的东西,就可以打开文件夹了,看看文件部署情况。gdrive就是我们配置的谷歌云盘。没有的话就去左侧刷新一下。
在这里插入图片描述
打开gdrive,其中有我们的数据集。
在这里插入图片描述

3、深度学习库的下载

这一步,我们需要完成深度学习仓库的下载,我们使用git clone指令进行下载。执行如下指令后,左边的文件中多出了yolov4-tiny-pytorch文件夹。没有的话就去左侧刷新一下。

然后我们通过了cd指令将根目录转移到了yolov4-tiny-pytorch文件夹。

!git clone https://github.com/bubbliiiing/yolov4-tiny-pytorch.git
%cd yolov4-tiny-pytorch/

在这里插入图片描述

4、数据集的复制与解压

直接将数据集布置在谷歌云盘会导致大量的云盘数据传输,速度远不及本地文件,因此我们需要将数据集复制到本地里进行处理。

我们输入下述代码进行文件的复制与解压。首先执行的是删除指令,将原来的空VOCdevkit文件夹进行删除。然后进行解压。

由于这里使用的是zip文件所以使用的是unzip指令,如果是其它形式的压缩包,需要根据压缩包的格式进行指令的修改(请同学们百度)。执行下述指令后,可以发现,左边的文件中已经解压好了VOC数据集。没有的话就去左侧刷新一下。

!rm -rf ./VOCdevkit
!cp /content/gdrive/MyDrive/VOC_datasets/VOC07+12+test.zip ./
!unzip ./VOC07+12+test.zip -d ./

在这里插入图片描述

5、保存路径设置

本文提供的代码默认的保存路径为logs文件夹,但Colab存在不稳定的问题,运行一段时间后会发生断线。
如果将权值保存在原始根目录下的logs文件夹,发生断线网络就白训练了,浪费大量的时间。
可以将google云盘软连接到根目录下,那么即使断线,权值也保留在云盘中。
在这里插入图片描述
本文之前在云盘中创建了logs文件夹。将该文件夹链接过来。

!rm -rf logs
!ln -s /content/gdrive/MyDrive/Models/yolov4-tiny-pytorch/logs logs

在这里插入图片描述

三、开始训练

1、标注文件的处理

打开voc_annotation.py文件,由于我们现在使用的直接就是VOC数据集,我们已经划分好了训练集验证集和测试集,所以我们将annotation_mode设置为2。

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

!python voc_annotation.py

在这里插入图片描述

2、训练文件的处理

处理训练文件主要包含三个部分:
1、预训练文件的使用。
2、保存周期的设置,这个设置是因为云盘的存储空间有限,每代都保存会导致存储空间满出。

a、预训练文件的使用

首先修改model_path,指向我们上传到谷歌云盘的权值文件。在左侧文件栏中,找到models/yolov4-tiny-pytorch/model_data,复制权值路径。
在这里插入图片描述
替换右侧的model_path。
在这里插入图片描述

b、保存周期的设置

有一些仓库已经完成了更新,添加了每隔多少世代的保存参数,直接修改save_period既可,在本文中,我们将save_period设置成4,也就是每隔4代保存一次。

还没有更新的仓库只能每一代都保存了,记得偶尔去google云盘删一下
在这里插入图片描述

3、开始训练

此时在笔记本里面输入:

!python train.py

即可开始训练。
在这里插入图片描述

断线怎么办?

1、防掉线措施

听说可以通过自动点击来减少掉线频率。
在Google colab的按F12,点击网页的控制台,粘贴如下代码:

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

2、完了还是掉线呀?

没什么办法,便宜的东西必然有它的坏处。

按照步骤重新来一次,然后将预训练权重设置成logs文件夹里面训练好的权值文件即可。

除此之外,Init_epoch等参数也需要调整。

总结

使用Colab训练比较重要的是处理好路径的关系,找到哪个文件在哪里,文件夹的执行目录在哪里,就可以比较简单的运行起程序了,不过Colab确实存在断线问题,我们需要时刻保存好文件,因此我将权值直接保存在云盘上,这样也不会丢失。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44791964/article/details/123659637

智能推荐

计算机的外围设备简介_计算机外围固定-程序员宅基地

文章浏览阅读6.1k次,点赞3次,收藏5次。外围设备介绍计算机的外围设备(简称外设)虽然很多,但按功能分大类只有四类:输入、输出、存储、网络通讯。有些专业计算机需要的外围设备也不尽相同,并不都需要这四类外围设备。外围设备可以按需要组装,有些专业计算机甚至可以将存储设备和主芯片集成到一片芯片上,从而不再需要外加存储设备。最早的计算机(那时还只能称为计算器,只能做简单运算,如ABC机和ENIAC机)输入只是一些拨码开关,只能输入数字(还得是二进_计算机外围固定

java 图片中加文字_java怎么在图片上加文字-程序员宅基地

文章浏览阅读1.5k次。java 图片中加文字_java怎么在图片上加文字

GBase8cGDCA认证模拟题题库(三)_如果需要打开delete语句的审计功能,需要开启下面哪个参数-程序员宅基地

文章浏览阅读720次,点赞20次,收藏6次。B 选项,在创建模式时,可以不指定模式名。C 选项,兼容模式可选值为 AB、C、PG.安装GBase 8c分布式集群时所需的配置文件gbase.yml,在解压GBase8cV5 S3.0.0BXX CentOS x86 64.tar.bz2压缩包生成的目录中得到。真值的有效文本值是: TRUE、t、"true'、y、yes'、"1'TRUE'、true、整数范围内1~2^63-1、整数范围内-1~-2^63。GBase 8c 使用create table 创建表时,不指定参数,默认是astore,行存表。_如果需要打开delete语句的审计功能,需要开启下面哪个参数

xml文件中几个名词_xml文件里面的名词-程序员宅基地

文章浏览阅读334次。1 xmlns是XML Namespaces的缩写,中文名称是XML(标准通用标记语言的子集)命名空间。 web-app是web.xml的根节点标签名称 version是版本的意思 xmlns是web.xml文件用到的命名空间 xmlns:xsi是指web.xml遵守xml规范 xsi:schemaLocation是指具体用到的schema资源_xml文件里面的名词

【OpenGL】中点圆、椭圆生成算法_用setpixel函数中点画圆算法代码c++-程序员宅基地

文章浏览阅读1.6w次,点赞12次,收藏69次。OpenGL 中点圆、椭圆生成算法_用setpixel函数中点画圆算法代码c++

HTML-CSS实现背景图片出现不同的位置_css背景图高度占据一半另一半有别的背景色-程序员宅基地

文章浏览阅读2.1k次。首先在HTML中写入div,命名为img,在这个div中加入一个span标签并命名为img-bg和img50(5星为50).<div class="img"> <span class="img-bg img50"></span> <span class="img-bg img45"></span> <span class="img-bg img40"></span> </div> 在css代码._css背景图高度占据一半另一半有别的背景色

随便推点

duilib vs2015 安装_DuiLib(1)——简单的win32窗口-程序员宅基地

文章浏览阅读169次。资源下载https://yunpan.cn/cqF6icWRN5CTc 访问密码 92e3 注:DUILIB库.7z 是vs2015下编译好的动态库及静态库,如上图所示一、新建一个win32工程项目设置中选择:debug,常规中:全程无优化-全程无优化,多线程调试 (/MTd);我的项目选择的是静态编译,使用的是静态库,就不需要带duilib.dll文件了代码如下:#include #inclu..._vs2015使用duilib

OpenGL: 渲染管线理论详解_通过此次实验你对固定渲染管线的opengl编程有什么了解。-程序员宅基地

文章浏览阅读5k次,点赞4次,收藏13次。学习着色器,并理解着色器的工作机制,就要对OpenGL的固定功能管线有深入的了解。首先要知道几个OpenGL的术语:渲染(rendering):计算机根据模型(model)创建图像的过程。模型(model):根据几何图元创建的物体(object)。几何图元:包括点、直线和多边形等,它是通过顶点(vertex)指定的。 最终完成了渲染的图像是由在屏幕上绘制的像素组成的。在内存中,和像素有关的信息(如像素的颜色)组织成位平面的形式,位平面是一块内存区域,保存了屏幕上每个像素的一个位的信息。_通过此次实验你对固定渲染管线的opengl编程有什么了解。

Android MPAndroidChart:动态添加统计数据线【8】_android 动态统计-程序员宅基地

文章浏览阅读3.9k次。Android MPAndroidChart:动态添加统计数据线【8】本文在附录相关文章6的基础上,动态的依次增加若干条统计折线(相当于批量增加数据点)。布局文件:

vmware中的linux虚拟机如何增加磁盘容量_linux虚拟机磁盘空间不足-程序员宅基地

文章浏览阅读6.3k次。vmware中 centos的磁盘大小 20G->30G现象:fdisk -l可以看到增大后的磁盘总量,但是需要增加分区并格式化然后挂载才能使用.一、vmware中的设置先关闭虚拟机vm->settings->hard disk->utilities->expand->输入大小(增加后的大小)二、启动虚拟机,进入命令行1、 fdisk /dev/sda进入命令行Comman_linux虚拟机磁盘空间不足

Hadoop2.7.3下Mysql8.0下Hive2.3.8的安装_hive2.3.8安装-程序员宅基地

文章浏览阅读927次。hive安装前提:1.基于hadoop2.7的完全分布式集群搭建完成hadoop2.7集群搭建2.MySQL8.0安装完成 安装centos7上MySQL8.0Hive2.3.8的安装下载链接:https://mirrors.tuna.tsinghua.edu.cn/apache/下滑找到hive点击进去点击hive2.3.9(hive2.3.9和hive2.3.8差别不大)下载画红线的也就是bin.tar.gz后缀的hive解压安装下载完成后通过xftp传到虚拟机上(基操不在赘述)_hive2.3.8安装

The‘grub-efi-amd64-signed‘ package failed to install into /target/. Without the GRUB boot loader,_the grub-efiamd64-signed' package failed to instal-程序员宅基地

文章浏览阅读430次,点赞8次,收藏4次。在进行安装的时候有一个是否联网的选择,选择链接网络,则在安装的时候,可以看到在安装过程中,它会主动下载grub-efi-amd64-signed' package,确确实实,我在安装详情里看到了它有这个的download过程以及update过程。_the grub-efiamd64-signed' package failed to install intotarget without the g

推荐文章

热门文章

相关标签