colab 跑YOLOV5 训练模型--记录

使用谷歌colab显卡资源训练模型。白嫖计算资源,主要是自己没有显卡

目录

1、登录谷歌云盘:https://drive.google.com/

2、关联colab应用

3、创建colab笔记本,并装载谷歌云盘,装载完成后,刷新下就出来了

4、下载yolov5代码、coco128

5、上传labelimg标注的图片和标注信息

6、修改训练文件

7、设置显卡T4,显卡训练更快

8、开始训练

9、验证,测试下效

10、后续计划

1、登录谷歌云盘:https://drive.google.com/

2、关联colab应用

3、创建colab笔记本,并装载谷歌云盘,装载完成后,刷新下就出来了

4、下载yolov5代码、coco128

先右键MyDrive 复制路径

点击左上角的+代码
在文本输入框中输入:cd /content/drive/MyDrive 表示进入该目录下

下载代码
!git clone https://github.com/ultralytics/yolov5
cd yolov5/
在yolov5下面创建datasets文件夹,并进入,下载coco128.zip并解压

删除coco128里面原先的图片和标注信息

5、上传labelimg标注的图片和标注信息

去谷歌云盘,进入yolov5/datasets/coco128/labels/train2017目录下,将标注的txt文件拖进来。
同样的方法把图片也上传到yolov5/datasets/coco128/imgages/train2017目录下

在这里说下,labelimg一开始不会用直接在默认的类别下新建的,导致我要训练的class标号是15了(yolo是0-15,classes.txt中是第16行)。标注完成后才发现这个问题,就写了python 脚本:

import os

# 设置目录路径
dir_path = 'D:\\work\\svn\\ai\\yolov5-6.0\\coco128\\labels\\train2017'

# 遍历目录下的所有文件
for filename in os.listdir(dir_path):
    if filename.endswith('.txt'):  # 只处理 txt 文件
        file_path = os.path.join(dir_path, filename)  # 获取完整的文件路径
        with open(file_path, 'r') as file:
            lines = file.readlines()  # 读取所有行

        with open(file_path, 'w') as file:
            # 遍历每一行,并替换 '15 ' 为 '0 '
            for line in lines:
                file.write(line.replace('15 ', '0 ', 1))  # 只替换行的第一个匹配项

6、修改训练文件

修改/yolov5/data/coco128.yaml
    path改成绝对路径,默认的是相对路径,但是训练时拼接起来的路径少了yolov5,所有改成了绝对路径
    names 原先有79类,但是此次我只训练一个类别,就把之前的都删除了,只留下了我标注的ciercai

修改/yolov5/models/yolov5s.yaml
    由于此次只训练一个class,所以把nc值改成1

修改/yolov5/train.py
    --weights:默认就是yolov5s所以不用动
    --cfg: 修改default路径./models/yolov5s.yaml
    --data: 默认不动
    --epochs: 改为100。batch_size和epoch这两个参数可以这么理解,比如我们有1万张图片用来训练,然后batch_size假如等于128,然后epoch=50,那batch_size相当于每次处理128张,然后处理(10000/128)次就把这10000张全处理一遍了,全处理一遍就是一个epoch了,50个epoch就是相当于把10000张图片反复训练了50遍,就像小学生背诵课文他读一遍印象不深,反复读50遍记忆更深刻,算法效果更好。(摘自陈大佬的解释)
    --save-period: 设置为0
    --device:设置为0,colab只给了一个T4只有一个显卡,所以只能设置为0,如果有其他的显卡可设置为0,1,2,3...

parser.add_argument("--weights", type=str, default=ROOT / "yolov5s.pt", help="initial weights path")
parser.add_argument("--cfg", type=str, default="./models/yolov5s.yaml", help="model.yaml path")
parser.add_argument("--data", type=str, default=ROOT / "data/coco128.yaml", help="dataset.yaml path")
parser.add_argument("--epochs", type=int, default=100, help="total training epochs")
parser.add_argument("--batch-size", type=int, default=16, help="total batch size for all GPUs, -1 for autobatch")
parser.add_argument("--device", default="0", help="cuda device, i.e. 0 or 0,1,2,3 or cpu")
parser.add_argument("--save-period", type=int, default=10, help="Save checkpoint every x epochs (disabled if < 1)")

7、设置显卡T4,显卡训练更快

8、开始训练

!python train.py --img 640 --batch 128 --epochs 100 --data coco128.yaml --cfg ./models/yolov5s.yaml --weights yolov5s.pt --device 0

由于之前没执行pip install -r requirements.txt,执行这个命令时会自动去下载需要的包,那样会耽误一些时间。本来训练就很耗时,去下载包的时间可以忽略不计。
我这次训练标注了50张图片,训练时间不算长。

训练完成后,打开/yolov5/runs/train/exp3 看下各个图片

9、验证,测试下效

在yolov5目录下创建test_val文件夹,上传一些验证的图片
执行如下命令进行验证测试:!python detect.py --weights /content/drive/MyDrive/yolov5/runs/train/exp3/weights/best.pt  --data coco128.yaml --source /content/drive/MyDrive/yolov5/test_val

如果效果不好,就去修改阈值。打开/content/drive/MyDrive/yolov5/detect.py
修改阈值为0.7,具体改成多少可通过查看结果确认。识别错误的都是低于多少阈值的
parser.add_argument("--conf-thres", type=float, default=0.7, help="confidence threshold")
修改后重新执行下即可,结果会在runs/detect/exp+目录下,依次递增
也可以直接在命令里面设置阈值
!python detect.py --weights /content/drive/MyDrive/yolov5/runs/train/exp3/weights/best.pt  --data coco128.yaml --conf-thres 0.6 --source /content/drive/MyDrive/yolov5/test_val 

10、后续计划

1、继续标注数据,重新训练
2、增加训练种类,业务逻辑使用的时候只用我们需要的类别ciercai

如果训练多种模型,使用的环境不一样,则使用conda
安装conda
!wget https://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_64.sh
!chmod +x Anaconda3-5.2.0-Linux-x86_64.sh
!bash ./Anaconda3-5.2.0-Linux-x86_64.sh -b -f -p /usr/local

!conda config --set ssl_verify no                       配置参数
!conda create --name yxqyolov5 python=3.8   创建虚拟环境
!conda activate yxqyolov5                                激活环境

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值