在谷歌colab运行YOLO系列(重要比在云服务器搭建运行快)
- 一、谷歌云硬盘
- 二、克隆 YOLOV5进行运行测试
- 1,修改prepare文件中的参数
- 2,修改voc.yaml
- 3,修改yolov5s.yaml
- 4,防止colab自动断开的方式(必须要做的)
- 5,断点续训
一、谷歌云硬盘
BS 10 EPOCH 200 WORKER 16
https://drive.google.com/drive/my-drive
https://colab.research.google.com/drive/1GUyOrIBdNKRn0kzUPoydMZ17mC008Exn
此处类似notebook,可以修改名称
视频演示的是在darknet下运行如下
二、克隆 YOLOV5进行运行测试
cd /content/drive/MyDrive
前面进入了当前文件夹下了
然后克隆(这里建议不要克隆,直接上传文件到云端硬盘,上传YOLOV5,克隆的与本地不太一样)
!git clone https://github.com/ultralytics/yolov5
命令输错如下
克隆失败应该是没有git这个程序,那么直接上传YOLOV5的文件夹即可
直接克隆的YOLOV5太精简,安照上面格式添加weights权重文件夹,上传权重文件,传一个使用的即可s
视频中的修改配置等
!/usr/local/cuda/bin/nvcc --version
剩下的修改配置文件等就看YOLOV5的训练自己的数据集中的操作了
如何将我的数据集传到对应文件夹下,直接在云端硬盘界面上传数据集
如下:
这里上传已经预处理好的数据集
或者上传数据集然后 在线预处理等
执行python命令也要加感叹号
修改配置文件等可以直接在上面操作
上传权重文件先
直接克隆的YOLOV5太精简,安照上面格式添加weights权重文件夹,上传权重文件,传一个使用的即可s
上传数据集
这里将本地已经加压好的VOC原始数据集上传,还没有预处理的
预处理文件要根据自己的类别进行更改
1,修改prepare文件中的参数
修改配置文件
注意链接时要选择GPU这里的CPU感觉处理太慢
运行个CPU处理文件都这么慢
!python prepare_data.py
需要注意的是此处在线执行预处理,是比较慢一些的(下次直接在本地预处理,然后将预处理好的文件上传即可)
2,修改voc.yaml
修改配置文件
#download: bash data/scripts/get_voc.sh
上方注释掉,不需要在网络上下载数据集
注意还要将其重命名为voc_ball.yaml 或者不用
# download command/URL (optional)
#download: bash data/scripts/get_voc.sh
# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or
3) list: [path1/images/, path2/images/]
train: ./VOCdevkit/images/train/
val: ./VOCdevkit/images/val/
# number of classes
nc: 1
# class names
names: ['ball']
3,修改yolov5s.yaml
这里的训练集路径,验证集路径
Nc为分类标签的个数,这里只有一个类别1
下面names是类别名称
在notebook中更换配置为GPU
!python train.py --data data/voc_ball.yaml --cfg models/yolov5s_ball.yaml --weights weights/yolov5s.pt --batch-size 16 --epochs 50 --workers 4
这里发现使用其TPU也是运行很快,比自己的云服务器还要快一些
缺点就是必须保持网站的在线状态,这样的话我自己在云服务器登录此谷歌云盘,然后链接点击运行测试岂不就可以一直运行了(离线好像只能保存到1个小时?)
!python train.py --data data/voc_ball.yaml --cfg models/yolov5s_ball.yaml --weights weights/yolov5s.pt --batch-size 16 --epochs 50 --workers 8
现在测试workers为8即默认状态 会不会溢出内存
在2核2G下是溢出失败了,直接谷歌实验室的话不知道多久可以
再次重新运行发现可以了,此时即便是workers为8也是可以的,不会超出内存,并且运行速度也很快(比自己的云服务器2核2G的快多了)差不多10分钟能训练一轮,那50轮是500分钟大概(8,9个小时)
https://blog.csdn.net/bornfree5511/article/details/106980379
4,防止colab自动断开的方式(必须要做的)
方法一
在Firefox和Chrome中,在colab页面,按Ctrl+Shit+i,打开检查页面(也可以右击鼠标,选择“检查”),并切换到控制台或terminal标签,chrome中为Console。
粘贴以下代码:
function ConnectButton(){
console.log("Connect pushed");
document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click()
}
setInterval(ConnectButton,60000);
执行了代码后,记下弹出的数字,那是intervalId,当想停止这段代码的执行时,只需要执行
clearInterval(intervalId)
就可以了,比如Id是340,那么就是clearInterval(340)。
浏览器打开状态最长运行时间是12小时
当浏览器关闭,最长运行使用则是90分钟
所以一个解决方案是在手机浏览器打开此实例运行(并且训练时长不要超过12小时)
在云服务器上使用还比较慢来,是国内服务器即便搭建小火箭访问国外也是慢,那么直接使用国外的云服务器访问怎样
半个小时才训练1轮bs16 workers8 谷歌实验室 TPU
如果连接上GPU呢?
还是无法连接到GPU
那么CPU也是可以的,那么就试试吧
算了等2C2G的训练完成了用它上面的网络测试
在海外云服务器上登陆谷歌实验室,链接如下,发现点击链接时链接的是GPU
https://colab.research.google.com/drive/1GUyOrIBdNKRn0kzUPoydMZ17mC008Exn
先进入到项目路径下
然后执行训练的代码如下
!python train.py --data data/voc_ball.yaml --cfg models/yolov5s_ball.yaml --weights weights/yolov5s.pt --batch-size 16 --epochs 50 --workers 8
第一次运行错误,得再次运行播放
如上已经可以调用GPU了,训练速度及其快
5,断点续训
https://blog.csdn.net/weixin_38346042/article/details/119778080
当遭遇停电等不可预料的状态时,可以如上根据最新的pt文件再继续训练
注意断点续传,是需要前面后面环境相同的
即前面GPU后面还要GPU,否则训练报错
先关闭远程服务器,让其自己在那训练,浏览器先不关闭了
14:55开始,
15:11 已经到第8个轮次了,平均2分钟1个轮次,太快了太爽了
15:28 运行到18轮次
估计100分钟就训练完成了,之前使用云服务器2核2G训练了3天的。
也就一个小时40分钟
正好1个小时就完成了
这个算是跑通了
那么训练的服务器及方式不用担心了,那么此时需要管什么了
!/usr/local/cuda/bin/nvcc --version
我们可以查看GPU的版本
torch.cuda.is_available()
cuda是否可用;
torch.cuda.device_count()
返回gpu数量;
torch.cuda.get_device_name(0)
返回gpu名字,设备索引默认从0开始;
torch.cuda.current_device()
返回当前设备索引;
查看显卡信息如下
https://www.cnblogs.com/ggjucheng/archive/2013/01/14/2859613.html
查看谷歌实验室的硬件环境信息
!nvidia-smi
!lscpu
查看内存
!free -m
总内存 12991MB,也就是12G的内存
!uname -a
!cat /etc/issue
谷歌实验室是Ubuntu 18.04.5 LTS \n \l,
NVIDIA-SMI 470.57.02 Driver Version: 460.32.03 CUDA Version: 11.2
Intel® Xeon® CPU @ 2.30GHz
1CPU 1核12G 的
使用的python版本为3.7.11的版本
1核16G的
方法登录云服务器,安装chrome浏览器(登录谷歌云端硬盘及实验室进行测试)
发现每天有限制使用谷歌免费的GPU
那么尝试其他的云服务器的免费的GPU资源
腾讯云
https://cloud.tencent.com/act/pro/freegpu
7天免费试用
先等等吧,准备一下自己的数据集
数据集如何准备(只准备一个零件的还是多个零件都准备,然后全部的定位)
那么进行两个目标检测(一个零件的类别)
一个(缺陷的类别)
https://www.zhihu.com/question/271520755
发现很多的GPU服务器厂商,一周的话48元钱
那么直接租借一周如何
https://featurize.cn/?s=db3893519c0f42f0a047494763888c3f
https://matpool.com/edu
报错如上
原因找到,通过prepare转换的标签文件全部是空的,所以在本地转换为标签文件再进行上传
先在本地运行将数据集分类好,再进行上传分类好的数据集
Prepare预处理之后的文件是空的这怎么办
终于找到问题了(prepare准备数据集的时候也是需要改参数的)
936 882 正好找到54个了,下面将其一一删除即可
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__09-47-35-21.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__09-51-26-3.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__09-51-26-5.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__09-53-29-10.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__09-53-29-17.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-01-16-10.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-02-42-11.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-02-42-4.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-07-29-13.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-07-29-2.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-07-29-3.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-12-15-19.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-12-15-20.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-16-02-10.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-16-02-11.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-16-02-12.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-16-02-2.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-16-02-4.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-16-02-8.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-16-02-9.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-17-41-14.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-17-41-16.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-17-41-17.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-17-41-18.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-17-41-19.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-17-41-2.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-17-41-20.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-17-41-21.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-17-41-22.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-17-41-23.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-17-41-3.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-17-41-5.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-17-41-6.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-17-41-7.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-01__10-17-41-8.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__10-42-52-24.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__10-44-12-2.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__10-44-12-20.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__10-51-21-3.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__10-55-37-15.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__10-55-37-19.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__10-55-37-5.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__10-55-37-6.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__10-55-37-7.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__10-57-26-4.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__11-17-10-18.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__11-17-10-22.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__11-17-10-8.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__11-18-41-22.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__11-18-41-23.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__11-24-50-19.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__11-26-06-10.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__11-26-06-8.jpg
E:\工业零件数据集\LZC_Data\VOCdevkit_mobian\VOCdevkit\VOC2007\JPEGImages\Image__2021-09-02__11-26-06-9.jpg