如何使用云端GPU训练yolov5(colab)

如何使用云端GPU训练yolov5(colab)

一、获取yolov5文件

从githup上直接在下载,(科学上网)链接:link

二、上传文件到colab

直接google 搜索 colab,用New–>More–>Google Colaboratory,新建一个note文件
如何使用云端GPU训练yolov5(colab)_第1张图片
创建完之后,可以自己取个名字,这里取名为yolov5.ipynb,然后点击左侧文件图标,等待一会,点击upload图标,找到yolov5的下载路径(因为是单个文件,所以必须把文件变成压缩包的形式),然后进行上传,上传完成后,点击刷新按钮,就可以看到上传的文件。
如何使用云端GPU训练yolov5(colab)_第2张图片
上传好后如图所示

如何使用云端GPU训练yolov5(colab)_第3张图片

三、训练

1、设置GPU资源

将自己的环境换成具有GPU的配置,首先点击Resource如下图step1所示,接着点击下方Change runtime type 如step2所示,点击step3框中下拉菜单,选择GPU,点击save。(若长时间不用GPU资源的话,colab会自动回收GPU资源)
如何使用云端GPU训练yolov5(colab)_第4张图片

2、解压缩资源

在旁边的代码块中依次运行

! unzip /content/yolov5-5.0.zip -d /content/yolo

效果如下图所示

如何使用云端GPU训练yolov5(colab)_第5张图片

%cd /content/yolo/yolov5-5.0

如何使用云端GPU训练yolov5(colab)_第6张图片

!pip install -r requirements.txt 

如何使用云端GPU训练yolov5(colab)_第7张图片

!python train.py

如何使用云端GPU训练yolov5(colab)_第8张图片

注意这里会报上图方框中显示的错误:
AttributeError: Can’t get attribute ‘SPPF’ on

原因是在yolov5的官方源代码中缺少SPPF的类,在yolov5-5.0–>models文件夹中打开common.py文件,找到calss SPP代码位置,在上方粘贴如下代码,即可,具体操作如下图所示。

class SPPF(nn.Module):
    def __init__(self, c1, c2, k=5):
        super().__init__()
        c_ = c1 // 2
        self.cv1 = Conv(c1, c_, 1, 1)
        self.cv2 = Conv(c_ * 4, c2, 1, 1)
        self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)

    def forward(self, x):
        x = self.cv1(x)
        with warnings.catch_warnings():
            warnings.simplefilter('ignore')
            y1 = self.m(x)
            y2 = self.m(y1)
            return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))

如何使用云端GPU训练yolov5(colab)_第9张图片

如何使用云端GPU训练yolov5(colab)_第10张图片
接下来重复训练操作

!python train.py

如何使用云端GPU训练yolov5(colab)_第11张图片

然后,现在出现上图方框中出现的错误
RuntimeError: Given groups=1, weight of size [512, 1024, 1, 1], expected input[1, 512, 8, 8] to have 1024 channels, but got 512 channels instead
意思是通道不匹配的错误,解决方法:

在左边文件列表中,找到train.py文件,打开,找到
if name == ‘main’:
参数初始化代码处,在–cfg 所在行中的 default=’ ',在引号中添加如下路径:

/content/yolo/yolov5-5.0/models/yolov5s.yaml

此路径在,yolov5-5.0–>models–>yolo5s.yaml文件,点击竖着的三个点可以直接拷贝路径,如下图所示:
如何使用云端GPU训练yolov5(colab)_第12张图片
添加好路径后如下图所示(注意:这里的yolov5s.yaml 必须与上一行的 yolo5s.pt对应)
如何使用云端GPU训练yolov5(colab)_第13张图片
保存,并重复

!python train.py

如何使用云端GPU训练yolov5(colab)_第14张图片

然后,现在出现上图方框中出现的错误,
RuntimeError: result type Float can‘t be cast to the desired output type long int
这是因为yolo版本的不同导致loss文件出现不匹配的原因,解决方法如下:
打开yolov5-5.0–>utils–>loss.py文件,大约在178行左右,将代码进行替换,如下图所示:
如何使用云端GPU训练yolov5(colab)_第15张图片

anchors,shape = self.anchors[i],p[i].shape

接着,在大约211行代码处进行如下图所示的替换:
在这里插入图片描述

indices.append((b, a, gj.clamp_(0, shape[2] - 1), gi.clamp_(0, shape[3] - 1)))  # image, anchor, grid

修改完保存,再次运行:

!python train.py

看到下图的界面时,表示代码运行正常,大功告成!
如何使用云端GPU训练yolov5(colab)_第16张图片

你可能感兴趣的:(python,人工智能,深度学习)