使用 Colab 训练 Pytorch-Yolov4

前言

  自从跑完 Ultralytics 的 Pytorch-Yolov3、Pytorch-Yolov5 之后就一直想把 Yolov4 也给跑出来,一直想把 WongKinYiu 大佬的跑出来,但是跑了半天成功不了,后来就去跑了 Darknet-Yolov4 版本的,就是 C 语言版本的,但是那个不大想写公众号的文章了,好浪费时间,就写个 Pytorch-Yolov4 版本的,写论文真累,不过看周围的同学还在用 ENVI 各种做什么建成区的面积提取,就在想,还好没做遥感的毕设,要不累个半死,还好做的是计算机的。O(∩_∩)O哈哈哈~。

Plus:

   Colab 提供的服务是 GPU 一天一人 6 小时,CPU 版本 12小时,如果你多次连了不用会关黑屋,× 出去 ✊。 关于如何 XX 上网的问题不要问我,自己好,买也好,自己解决,记得代码程序运行的时候选择 GPU 运行,当然如果没配好环境的话,先用 下好该下的东西,当然 CPU 和 GPU 是两台不同的机器,再装 requirements 的时候需要用 GPU 的环境,记得,记得,记得!

训练步骤

  1. 打开 Colab,挂载云盘。可以使用下面的命令,也可以点快捷键,在文件下面的第三个工具那点一下就会问你是不是要挂载云盘,问完之后一般会给你一个验证码,自己验证一下就行了。
from google.colab import drive
drive.mount('/content/drive')

也可以用这个命令来挂载云盘,挂载好之后,切换到 drive/MyDrive中,准备下一步工作。

  1. 下载代码,由于 Colab 是外面世界的,而 Github 也是外面世界的,所以在 Clone 的时候不会遇到像国内下载代码很慢的情况。
!git clone https://github.com/WongKinYiu/PyTorch_YOLOv4

注意,在 Colab 中如果想要用 git clone命令的话需要前面加一个 ❗。下载好之后,切进去。

之后的 数据上传、配置环境不区别先后顺序,最好是提前就把你的数据按照 Coco 的数据格式组织一下,就是 PyTorch_YOLOv4 下新建一个 coco 文件夹,然后放两个文件,一个是 train, 另外一个是 val。 文件夹里面分别放 images 和 labels ,在 coco 文件夹下放上图片的路径,plus:这个版本的路径有点奇怪,反正坑死我了。

  1. 上传数据,组织数据。

  2. 配置环境,这个版本的环境是真的难受,由于 Yolov4 用到了 mish 函数,所以还得装 mish_cuda ,就很奇怪,很难装。

该步中需要装很多东西,需要两个文件,一个是 torch_vision = 0.7.0 还有一个是 T 版的 mish_cuda 。

  • 首先在 PyTorch_YOLOv4 的目录下输入 !pip install -r requirements.txt ,注意的是还是得加❗。然后由于作者在 txt 文件中要求的是 pytorch = 1.6.0 ,而 Colab 自带的现在是 Pytorch = 1.8.1 + cuda10.1 所以 Colab 会自动帮你卸载掉后者,只不过需要重启内核,当然,Colab 在下面也会告诉你。

后面会有一个 restart runtime 的按钮,重启之后,再挂载一次云盘,然后这时候你都已经安装完了。

  • 安装 PyYAML 模块,使用命令 !pip install -U PyYAML ,如果不装的话,之后 train 的时候你就会发现 module 'yaml' has no attribute 'FullLoader'这个报错,之前一直报错,偶然间 Google 找到了这个命令,然后今天很无所谓想再试一次的时候竟然被我试出来了!!

  • 重装一次 torch_vision,需要的是 0.7.0,由于作者在 requirements.txt 要求的 torch 版本为 1.6 根据 Pytorch 对应的版本,所以需要 torch_vision = 0.7.0,可以看下图的对应关系。

同时 Colab 自带的 Python 是 3.7.10 ,所以需要选择对应的 whl 下载 ,网址是下面那个,自己找到对应的版本

````

https://pypi.org/project/torchvision/0.7.0/#files
````
下载好之后,同样传到 PyTorch_YOLOv4 目录下,你放哪其实无所谓,只是后续方便一些罢了。放好之后切换到那个目录下,安装一下

!pip install torchvision-0.7.0-cp37-cp37m-manylinux1_x86_64.whl

装一下,就会把新版的 0.9.0 的卸载,把 0.7.0 的装上。

  • 安装 mish_cuda ,关于 mish_cuda 有两个版本,我后来安装了 T 版本的。随便在哪个文件夹下 git clone 一下,(我个人还是喜欢放PyTorch_YOLOv4),记得 cd 到 PyTorch_YOLOv4 这个目录下。然后运行下面的命令
!git clone https://github.com/thomasbrandon/mish-cuda
%cd mish-cuda
!python setup.py install

这个东西,只要你会点 Linux 的基础命令你都会装,讲道理。

  1. 这样就把环境都配完了,作者挖了好多坑,也可能是自己比较菜,今天才明白要把版本对应好。也是今天无意间才发现了 Colab 的各种环境的版本。

  2. 需要写一个 train2017.txtval2017.txt,这个路径,只要在 PyTorch_YOLOv4 目录下能找到路径即可,最好还是用 os模块确认一下路径是否正确,如果在训练的时候还发现找不到路径或者路径错误的话,就用代码再扫一扫。我个人的话用的代码是本地传云端的,代码在我以前的博客和公众号文章里面都有,路径大概是这样的。

# author: neverland
# 生活不过是 shit
import ostrain_path = '/home/neverland/桌面/yolov3/yolov3-master/coco/train/images'      # 本地放图片的位置
val_path =  '/home/neverland/桌面/yolov3/yolov3-master/coco/val/images'path = os.listdir(val_path)           #记得这里也得改 train 或者 val
out_file = open('val.txt','w')    #记得这里也得改 train 或者 val
out_path = 'coco/val/images'    # 记得ttrain 写 train,val的时候写 val# /content/drive/MyDrive/darknet/data/images/val2017
for i in range(len(path)):filenames = path.pop()true_path = os.path.join(out_path,filenames)  # trainpath 就写train ,val 的话就改成  val_pathout_file.write(true_path + '\n')

这串代码是我自己平常用的,不要问为啥报错,本地的图片保存路径不一样当然找不到,自己可以写代码就是一个 os.listdir 把所有的数据的路径拿出来,看不懂注释或者自己一点没基础就没办法了。

  1. 万事具备了,就差改一些参数了,首先是 coco.datacoco.names 或者coco.yaml(具体哪个不大清楚,我两个都改了)还有 cfg/yolov4.cfg,关于这个,只要会 yolov4-darknet 版本的都可以做的出来,首先就是 cfg/yolov4.cfg,由于我只有一个类别,所以在卷积层的时候我的 filters 只需要改成 (1*3 + 15)*1 ,这应该就是通道数吧,我猜。然后 class 改成 1就行(就是找到 [yolo]这个地方,然后把上面的 filters 改成 18,如果只有 1 类的话)。一共 有 3 处。

然后是 coco.datacoco.names,记得自己看指向的路径,coco.names要放在 data文件夹下,像我只有一类的话,就在coco.names下面写个 plane 即可,然后是 coco.yaml(我不清楚具体是改了哪个,作者的版本更新很奇怪,所以改了这两组地方)。

  1. 所有的步骤都完成了,就只要训练就行了,至于你要先改 train.py 里面的超参数还是用命令行就随便了,plus: colab 的显存低的 10G ,batch-size 只能改 4,如果运气好有 16 G显存可以调高点。

原谅我今天忘记把检测的图保存了,显卡用的时间上限了,只留了一个检测视频的结果。GPU 跑不了了。尴尬。

结尾

  这应该是鄙人凭着兴趣学习做深度学习的最后一次了,还是要自己多捣鼓捣鼓,多练习练习才能够高出点东西,先把代码跑通,有结果导向,会慢慢有信心,然后才能成功。

使用 Colab 训练 Pytorch-Yolov4 (WongKinYiu版)相关推荐

  1. 使用Google-Colab训练PyTorch神经网络

    Colaboratory 是免费的 Jupyter 笔记本环境,不需要进行任何设置就可以使用,并且完全在云端运行.关键是还有免费的GPU可以使用!用Colab训练PyTorch神经网络步骤如下: 1: ...

  2. yolov4用Google Colab训练自己的数据集

    yolov4训练数据 简介 运用google Colab训练自己的Yolov4数据集 google colab的使用 项目使用流程 1.设置GPU可用 2.clone项目构建Darknet git c ...

  3. 训练技巧 | 功守道:NLP中的对抗训练 + PyTorch实现

    本文分享一个"万物皆可盘"的 NLP 对抗训练实现,只需要四行代码即可调用.盘他. 作者丨Nicolas 单位丨追一科技AI Lab研究员 研究方向丨信息抽取.机器阅读理解 最近, ...

  4. pytorch 对抗样本_【炼丹技巧】功守道:NLP中的对抗训练 + PyTorch实现

    本文分享一个"万物皆可盘"的NLP对抗训练实现,只需要四行代码即可调用.盘他. 最近,微软的FreeLB-Roberta [1] 靠着对抗训练 (Adversarial Train ...

  5. 使用colab训练faster-rcnn pytorch版(代码来源:霹雳吧啦Wz)

    纯小白使用colab跑通霹雳吧啦Wz这位老师的GitHub代码: 链接: https://github.com/WZMIAOMIAO/deep-learning-for-image-processin ...

  6. Step by Step演示如何训练Pytorch版的EfficientDet

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx Paper:https://arxiv.org/abs/1911.09070 Base Git ...

  7. 结构化数据建模——titanic数据集的模型建立和训练(Pytorch版)

    本文参考<20天吃透Pytorch>来实现titanic数据集的模型建立和训练 在书中理论的同时加入自己的理解. 一,准备数据 数据加载 titanic数据集的目标是根据乘客信息预测他们在 ...

  8. (Pytorch) YOLOV4 : 训练自己的数据集【左侧有码】

    项目地址:https://github.com/argusswift/YOLOv4-pytorch 这份代码实现的逻辑非常清楚,主要一些数据集处理的代码需要相应的改动: 这里的数据集label格式: ...

  9. 利用 PyTorch 训练神经网络(详细版)

    点击关注我哦 欢迎关注 "小白玩转Python",发现更多 "有趣" "A little learning is a dangerous thing; ...

  10. 基于PyTorch+YOLOv4的口罩佩戴检测,附数据集

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 本项目是利用YOLOv4进行口罩佩戴检测,使用PyTorch实现.虽然现在国内疫情基本得到有效 ...

最新文章

  1. 在Cisco路由器中配置DHCP服务器
  2. HashMap之微代码解析-总结整理
  3. python_day2_数据格式
  4. 搜索引擎怎么收集的那么多内容?
  5. gridview行号
  6. George Fox谈Adobe开发者社区与HTML5内容建设
  7. android sim卡命令,Android常用命令
  8. canal与mysql高可用_canal 高可用介绍(4)
  9. unix下source的使用
  10. osgb转json_cesuim加载倾斜摄影OSGB三维数据
  11. 移动端服务器端身份证识别介绍
  12. VLAN-TAG超经典解释
  13. 计算机管理里找不到固态硬盘,教大家电脑插上固态硬盘提示找不到设备怎么办...
  14. ubuntu录制屏幕及视频处理
  15. 关于JavaScript学习,推荐博客及书籍
  16. C++中的peek()函数及其用法
  17. python3.7通过itchat方式登录微信给好友发送天气信息
  18. 7招,远离大数据杀熟!
  19. 工作两周年记------今晚和三个兄弟一起痛快地喝了一次, 在《祝你一路顺风》的旋律中!
  20. 下载百度排行榜音乐的程序(Perl)

热门文章

  1. python打开浏览器并截图_使用python实现网页截图的两种方式
  2. android仿微信浮窗的自动贴边可展开悬浮按钮
  3. 使用CSS3制作一个简单的导航栏
  4. 如何把kafka Log4j1.x升级到Log4j2.x ?
  5. Canvas 画直线
  6. 数采仪厂家_环保数采仪生产厂家
  7. android 时钟翻转,旋转时钟游戏
  8. 在VC中用CMenuXP使应用程序拥有Office XP风格的界面
  9. Java web项目中获取WebRoot目录下的文件
  10. 802.11 ------ Beacon帧、Beacon Interval、TBTT、Listen Interval、TIM、DTIM