yolov5的首次colab运行

运行train.py

下载的是yolov5-v5版本

1、把模型文件的压缩文件上传到colab
2、!unzip /content/yolov5-5.0.zip解压缩
3、%cd /content/yolov5-5.0转移到当前文件夹
4、!pip install -r requirements.txt安装所有需要的库
5、打开画学习曲线的tensorboard工具
所有的训练loss等结果都会记录在tuns/train的文件夹中

%reload_ext tensorboard
%tensorboard --logdir=runs/train

6、运行!python train.py --rect,再刷新tensorboard,就可以看到训练过程了
(服务器训练模型的速度是真滴快!)

期间遇到的问题

  1. AttributeError: Can‘t get attribute ‘SPPF‘ on <module ‘models.common‘ from ‘/yolov5-5.0/models/commo
  2. RuntimeError: result type Float can‘t be cast to the desired output type long int解决方法
  3. RuntimeError: Given groups=1, weight of size [512, 1024, 1, 1], expected input[1, 512, 8, 8] to have

运行detect.py文件

!python detect.py

遇到的问题

  1. ‘AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor
  2. RuntimeError: The size of tensor a (80) must match the size of tensor b (56) at non-singleton dimens

运行成功,结果如下:
yolov5的首次colab运行_第1张图片

模型文件说明

  1. data文件夹下的各种yaml文件是对不同数据集的初始化参数
    yolov5的首次colab运行_第2张图片
  2. models文件夹中的各种yaml文件,是对yolov5模型在不同大小的前提下的模型架构文件,smlx的类别表示从小到大的模型架构
    yolov5的首次colab运行_第3张图片
  3. train.py/test.py/detect.py分别是训练文件、测试文件、实际检测的应用文件
  4. 模型训练、检测的结果文件全都保存在runs文件夹中(这个文件夹只有在运行后才会生成)
    yolov5的首次colab运行_第4张图片

detect.py的执行说明

  1. 如何执行(包括第一个参数source)
$ python detect.py --source 0  # webcam
                            file.jpg  # image 可以只检测一张图片(此时图片必须和py文件同一目录下)
                            file.mp4  # video 可以直接检测一段mp4视频(也必须在同一目录下)
                            path/  # directory 指定某一个装满了图片的文件夹目录,模型就会自动依次检测文件夹中的图片
                            path/*.jpg  # glob 检测某一个文件夹中的特定图片
                            'https://youtu.be/NUsoVlDFqZg'  # YouTube video 可以直接解析YouTube的视频连接(本质上还是先把视频下载下来,然后检测)
                            'rtsp://example.com/media.mp4'  # RTSP, RTMP, HTTP stream  根据各种摄像头的执行协议,进行实时检测
  1. 第二个参数weights
    就是指定你要检测时用的预训练好的模型(具体而言就是一个预训练好的模型参数,即一个checkpoint文件)
    官方的yolov5s.pt和yolov5s6.pt的区别:
    就是不同的预训练模型对应不同的数据集的图片大小(img_size=640就用前者,=1280就用后者)
    yolov5的首次colab运行_第5张图片
    默认是yolov5s.pt文件,这个文件的下载方法要会!

    1. 在github上选择yolov5的5.0分支
    2. 点击右边的release链接
      yolov5的首次colab运行_第6张图片
    3. 在新的网页最底部,选择你想要的预训练好的checkpoint文件
      yolov5的首次colab运行_第7张图片
    4. 将下载好的pt文件放在项目文件夹中(与detect.py文件同路径)
  2. 第三个参数conf-thres(可以缩写为conf)
    就是置信度,展示出所有信心》=conf的标记,小于的不标记
    当conf = 1,没有任何标记;conf = 0,全图都是标记(默认为0.25)

在这里插入图片描述

  1. img_size参数,就是在实际运行模型之前,对图片的resize成统一的固定大小格式,默认为640(不影响输出的图片大小,因为检测完后又会变回去)
  2. iou-thres(可以简化为iou?)参数,交并比,顾名思义就是交集占并集的比值,如果目标检测的两个框大于阈值,就选择一个合适的留下,其他的删去;如果交并比小于阈值,则把两个都保留
    举例说明:
    yolov5的首次colab运行_第8张图片
    iou_thres较大时,下图中的两个框分别识别2个人,而如果设置的很小,就会导致只有一个框识别2个人
    yolov5的首次colab运行_第9张图片
    yolov5的首次colab运行_第10张图片
  3. view-img参数,
    含有action选项,说明这个参数要么为true要么为false,当设置action="store_true"时表示默认为false,只有当调用时有这个参数时,这个参数值才为true。
    它的作用是:在检测完一张图片时,直接在电脑上显示出结果来
    这个功能对于视频检测的实时观察很有用!
  4. save-txt,是否把训练结果作为txt文件保存下来(也是action类型的参数)
    保存路径为runs/detected/exp05/label文件夹中(和结果图片在一起)
    txt文件中的信息格式是这样子的,包括每一个标签的识别类型、中心点的xy坐标,中心点上下的长度和宽度
    yolov5的首次colab运行_第11张图片
  5. nosave参数,action类型的参数,表示不要保存标注出来的图片
  6. classes参数,表示指定要显示识别出来的哪一类,默认是要把所有置信度合格的标注都显示出来,如果设置了这个参数,比如设置classes 0,那就只会显示出置信度合格的人的标注
    yolov5的首次colab运行_第12张图片
  7. update参数,action类型(不重要),如果选了,表示在训练的时候,无关的参数统统删掉,以加快运算
  8. project参数,就是指定检测结果到哪个文件目录中(包括txt结果文件,图片文件等等)默认为runs/detect/
  9. name参数,就是这一次检测过程产生的结果文件的名称,(默认为exp)
  10. exist-ok参数,action类型,如果选了这个参数,检测生成的exp文件会覆盖掉上一次检测产生的exp文件。如果没选这个参数,默认是递加进去,比如exp1,exp2,exp3等等

小技巧:如何查看我当前设置了哪些参数的状态呢?——在下图的位置设置断点即可
yolov5的首次colab运行_第13张图片

train.py参数说明

  1. workers参数,default为8,指默认并行数量为8,可以加快运算,但是会出bug,建议改成0
  2. weight参数,用于初始化模型的参数(设置pt文件),是否在训练模型之前先继承一个预训练模型的参数,这里默认会继承yolov5s.pt文件的参数(迁移学习);如果不需要迁移学习,那就把default设置为空
    在这里插入图片描述
  3. cfg参数,用于初始化模型的架构(设置yaml文件),可以指定models文件夹中的某一个yaml文件,进行初始化
    yolov5的首次colab运行_第14张图片
  4. data参数,用于指定初始化的数据集,这里不直接指向数据集,而是指向初始化数据集的yaml文件
    yolov5的首次colab运行_第15张图片
  5. hyp参数,用于设置模型训练有关的超参数,比如学习率之类的,这里默认使用data中的hyp.scratch.yaml文件,最适合训练coco数据集的超参数;也可以使用hyp.finetune.yaml文件,这是适合对模型进行微调的超参数,适合于VOC数据集
    yolov5的首次colab运行_第16张图片
  6. epoch、batch_size、img_size都是学过的
  7. rect参数,一种action类型的参数,如果不设置,会默认裁剪图片为固定尺寸,空白处会填充(左图);如果设置了,不会可以裁剪成固定尺寸,不会添加额外的空白,因此可以加速运算(右图)
    yolov5的首次colab运行_第17张图片
  8. resume参数,用于指定runs/train/某一个exp文件训练后的pt文件,然后从那个文件开始继续训练,默认为空
  9. nosave,action类型参数,训练过程不保存checkpoint文件
  10. notest ,action类型参数,训练过程中,每一个epoch不进行验证训练,只有最后一个epoch进行验证训练
  11. noautoanchor,action类型参数,默认用锚点方式进行目标检测(效率高),如果选择了这个参数,就会用滑动窗口的形式寻找目标(效率低)
  12. device参数,指定cpu或者coda
  13. multi-scale参数,action类型参数,如果选了,就对图片进行一个尺度变换
  14. adam参数,action类型参数,选了就用adam的梯度下降法;否则默认用SGD
  15. project参数,当前epoch训练的训练结果(包括txt文件、pt文件等等打包成exp文件夹)的存放位置(默认在runs/train/)
  16. name参数,就是当前epoch训练的训练结果(包括txt文件、pt文件等等打包成exp文件夹)的名称,默认是exp,你可以设置为别的
  17. exist-ok,同detected中的,选了就覆盖,不选就默认exp1,exp2。。
  18. 其余参数,有需要,百度

制作自己的训练数据集

  1. 官网已经告诉我们如何自己建一个数据集了yolov5的首次colab运行_第18张图片

  2. 首先要自己设置一个和自定义数据集有关的yaml文件
    yolov5的首次colab运行_第19张图片
    yolov5的首次colab运行_第20张图片
    同时修改train.py的data参数:
    yolov5的首次colab运行_第21张图片

  3. 收集图片

  4. 把收集好的图片,在指定网站上传,然后手动/自动标注(具体做法看视频)
    手动标注网站
    最后导出的数据格式示例:
    每个图片对应一个同名的txt文件,txt文件里面存放了每个标签的类别、中心点坐标、长宽
    yolov5的首次colab运行_第22张图片
    yolov5的首次colab运行_第23张图片

  5. 把收集到的图片、标签txt文件放到指定的文件夹中去
    yolov5的首次colab运行_第24张图片
    yolov5的首次colab运行_第25张图片

你可能感兴趣的:(python,深度学习,机器学习)