yolov3.5使用Goole colab训练自己的数据集

使用 Google Colab 训练自己的 Yolov3的数据集

前言

  怀着激动的而难受的心情写的这篇文章,中途踩了不少坑,主要是毕业论文的指导老师不懂 Object Detection,一定要我跑 3 个及其以上的模型出来对比一下,要不然不好做对比写论文,于是就开始跑,由于我的电脑显存很小,基本跑不动什么模型,所以只能用 Yolov5s 的权重跑模型,当时寒假里还跑了9个小时,--batch-size 给的是2,要不然就 out of memory,所以DL真就是一个吞钱的怪兽呢, 没服务器,没显卡,没指导的三无人员做这个真的快把电脑给砸了,在这过程中试过租服务器,用 Google Colab 做训练(被限流过运行不了),还试过阿里天池训练,还租过2次服务器,一家是易学智能,感觉这家的还行,该有的软件都有了,唯一的缺点就是 CUDA 版本没有高过10.2的,我想跑 Yolo-Pytorch 版本的需要 torch>=1.7.0,对应的 CUDA 至少是 10.2起步,自己装的CUDA 是 11.2,所以运行比较新的框架没啥问题,先秀秀我这个垃圾电脑的配置吧(由于是在我哥的老电脑上做 Ubuntu18.04环境的配置,所以电脑很老),真就2个G的显存.还有一家叫智星云服务器,客服找了半天没人,然后说好的 Vscode 预装没有,想配环境还冲突,把 Pytorch 和 Tensor 杂在一起也是 niubililty了.
在这里插入图片描述

注意事项

本文需要假设你能在稳定的科学上网的前提下进行,如果不会科学上网也不要问我~-~,国家的法律规定的.其次,我也假定了数据集都已经做好了,本人不提供数据集不要问我要,不提供,不提供,不提供,符合 Yolo 样式的label自己网上找有很多转换脚本.

步骤

步骤可以不分先后,只需要做好3件事情,一是把数据传到 Google Drive 中,二是在 Google Colab 或者在 Drive 中把自己的文件格式给组织好,三是下载好 Yolov3-Pytorch版本
1. 先从下 Yolov3-Pytorch 的版本开始吧,由于是个人的公众号,所以无法放超链接,就以代码块的方式放超链接吧.

https://github.com/ultralytics/yolov3  

下完以后可以随便在根目录下创建一个文件夹,我习惯了取名 Coco,然后里面,还需要 2个文件夹.2个 txt 文件,train 文件夹下放图片和符合 Yolo格式的标签,同理 val 文件,然后在 Coco 文件夹中还需要两个 txt文件,里面最好放 train 图片的绝对路径和 val 图片的绝对路径,在本地机器下绝对路径相对路径倒是无所谓,一旦在服务器上就很能难弄的清楚了,在 Colab 中如何放绝对路径,这就需要有相对好的 Linux 的一些基础了,熟练使用 cd,pwd,ls命令即可,可以看看我生成的 txt 文件里面的内容,可以照例子组织目录,但是不一定需要完全按照我的组织,只需要在输入让coco128.yaml找的到 train.txt 和 val.txt还有让程序能够根据绝对路径扫描到两个 txt 文件中的 images 即可. 

我的数据是这样组织的

  1. 最好在 Google Drive 中就把数据组织好,要不然 Colab 只能移动文件,稍微有点麻烦,不过Colab 挂载云盘之后可以随时更新倒是不用特别慌.后面的 txt 文件传上去.Google Drive 上传数据可能有点慢,耐心等待即可,组织完数据之后,还需要进行一些操作,比如我仅仅需要一个类别的训练,所以需要改 coco128.yaml

Github 中作者给的数据组织格式我是试验没成功,按照 Yolov5 的格式组织才成功的.

  1. 可以在 Google Drive 用自带的编辑器修改,即 Text Editor.修改 Coco128.yaml中的nc=1以及类别为 plane,和 Yolov5的一样.

  2. 我是习惯用下面的程序写出 txt 文件,看着用吧,看的懂就是看的懂,看不懂回炉再造去吧,没办法了,哈哈哈哈我平常在 Vscode 的当前文件夹下运行这个程序,然后就会在 Coco 文件夹生成 train.txt, val.txt

# author: neverland
# 生活不过是 shit
import os

train_path = '/home/neverland/桌面/yolov3/yolov3-master/coco/train/images' #训练图片的文件夹
val_path = '/home/neverland/桌面/yolov3/yolov3-master/coco/val/images' #验证图片的文件夹

out_path =  '/content/drive/MyDrive/test/yolov3/coco/val/images' #为了 txt 文件写出绝对路径

path = os.listdir(val_path)           #记得这里也得改 train 或者 val
out_file = open('val.txt','w')    #记得这里也得改 train 或者 val


for i in range(len(path)):
    filenames = path.pop()
    true_path = os.path.join(out_path,filenames)  # trainpath 就写train ,val 的话就改成  val_path
    out_file.write(true_path + '\n')

把 txt 文件生成(就是我之前上面的文件,然后传到 Drive中,记得放在那个 coco 文件夹下).

  1. 然后在 Colab 上运行代码,先挂在一下,可以用鼠标指针点的位置挂载然后运行即可,然后它就会自动输入以下命令
from google.colab import drive
drive.mount('/content/drive')

当然也可以自己输上面的代码,然后运行,然后所有的准备工作就准备完了.就可以开始训练了.(爬)

  1. 可以直接修改 Yolov3 目录下的train.py,当然也可以不修改,像我会直接修改好,比如--batch--size改成 16,我试了下 32会爆显存,没往大了调.

也可以在 Colab 中按照作者给的命令用命令行输入命令,然后做训练.

或者改好之后直接切换到目录下用

!python train.py 

命令直接开始训练.

训练完之后从 Drive 把好的模型给保存下来就行了,然后做个检测.
就是抱歉之前刚发现自己的 coco128.yaml没改,所以 label 用的 person(它竟然没给我报错),回炉再训练去了.还好Google GPU 够给力.

最后

  本人对本文拥有解释权,如果不是特别喜欢的问题就不回答了,私信的话如果是一些特别 2 的问题就懒得回答了.同时转载请表明出处哈!
  三天里踩坑无数,就在要花钱消灾代跑的时候谷歌救了我一命,昨天晚上又到操场上去躺了一会儿,回忆起那时候佛系随缘的自己,烦躁又没了,回来 Colab 又恢复正常了,可真好啊.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值