热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Pytorch 使用Google Colab训练神经网络深度学习

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

学习前言

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确实存在断线问题,我们需要时刻保存好文件,因此我将权值直接保存在云盘上,这样也不会丢失。

以上就是Pytorch 使用Google Colab训练神经网络深度学习的详细内容,更多关于Pytorch训练Google Colab神经网络的资料请关注编程笔记其它相关文章!


推荐阅读
  • 【图像分类实战】利用DenseNet在PyTorch中实现秃头识别
    本文详细介绍了如何使用DenseNet模型在PyTorch框架下实现秃头识别。首先,文章概述了项目所需的库和全局参数设置。接着,对图像进行预处理并读取数据集。随后,构建并配置DenseNet模型,设置训练和验证流程。最后,通过测试阶段验证模型性能,并提供了完整的代码实现。本文不仅涵盖了技术细节,还提供了实用的操作指南,适合初学者和有经验的研究人员参考。 ... [详细]
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • 机器学习(ML)三之多层感知机
    深度学习主要关注多层模型,现在以多层感知机(multilayerperceptron,MLP)为例,介绍多层神经网络的概念。隐藏层多层感知机在单层神经网络的基础上引入了一到多个隐藏 ... [详细]
  • iOS 百度地图使用指南:基本定位与地理编码
    本文详细介绍如何在 iOS 应用中集成百度地图,实现基本的地图定位和地理编码功能。配置详情请参考官方文档:http://developer.baidu.com/map/index.php?title=iossdk ... [详细]
  • 本文介绍了如何使用 Google Colab 的免费 GPU 资源进行深度学习应用开发。Google Colab 是一个无需配置即可使用的云端 Jupyter 笔记本环境,支持多种深度学习框架,并且提供免费的 GPU 计算资源。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • POJ2263是一个经典的图论问题,涉及寻找从起点到终点的最大载重路径。本文将详细介绍该问题的背景、解题思路及代码实现。 ... [详细]
  • 英特尔推出第三代至强可扩展处理器及傲腾持久内存,AI性能显著提升
    英特尔在数据创新峰会上发布了第三代至强可扩展处理器和第二代傲腾持久内存,全面增强AI能力和系统性能。 ... [详细]
  • 分享两个GitHub链接,今天看到的,超赞超赞不能更赞了,答应我一定要去看好吗~~~~不论是笔记还是github中分享的其它资源ÿ ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
author-avatar
我爱盘小静永远永远
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有