yolov5使用笔记

  1. 利用gen_head_helmet.py文件生成yolo格式的标签新的.txt文件,每一行都是一个目标,类别序号是从零索引开始(因为我们的分类是[‘person’,‘head’,‘helmet’]),每行坐标是x_center,y_center,width,height,同时框坐标采用归一化的(数值都是在0~1之间),通过比例计算得

  2. feature map:在每个卷积层,数据都是以三维形式存在的。你可以把它看成许多个二维图片叠在一起,其中每一个称为一个feature map。在输入层,如果是灰度图片,那就只有一个feature map;如果是彩色图片,一般就是3个feature map(红绿蓝)。层与层之间会有若干个卷积核(kernel),上一层和每个feature map跟每个卷积核做卷积,都会产生下一层的一个feature map。该层卷积核的个数,有多少个卷积核,经过卷积就会产生多少个feature map一般网络越深的地方这个值**(卷积核的个数)**越大,因为随着网络的加深,feature map的长宽尺寸缩小,本卷积层的每个map提取的特征越具有代表性(精华部分),所以后一层卷积层需要增加feature map的数量,才能更充分的提取出前一层的特征,一般是成倍增加

  3. 读取xml文件

    root是一个指向Element对象

    Element.findall()只查找直接的孩子

    Element.iter()用来寻找所有符合要求的Tag,注意,这里查找的范围是所有孩子和孩子的孩子

    直接用Element.text来得到这个Element的值

    import xml.etree.ElementTree as ET
    # 第一种读入方式:文件读入
    tree = ET.parse('sample.xml') 
    root = tree.getroot()
    # 第二种读入方式:字符串读入
    root = ET.fromstring(sample_as_string)
    
  4. k-means(使用聚类分析求最佳先验框):计算样本之间的距离(相似程度)将较近的样本聚为同一类别(簇)

    需要注意两点:a.如何表达样本与样本之间的距离(欧氏距离或者IOU交并比,目标检测通常是IOU,左上角对齐计算交并比);b.分为几类,根据场景选择

  5. 总共提供四种yolov5的版本,s/m/l/x,逐渐增大(随着架构的增大,训练的时间也同时逐渐增大),yolov5s是网络深度和宽度最小但检测速度最快的模型,四个版本的区别仅在于depth_multiplewidth_multiple这两个参数不同。

  6. 生成best_anchors:

    为什么同一组数据每次算得都不一样呢,因为kmeans的种子(初始点)是随机生成的;三种不同尺寸的特征图,一种对应三种大小的锚框所以是9个

  7. yolov5s.ymal:

    • yolov5s的anchors的分配规则是:尺度越大的feature map越靠前,相对原图的下采样率越小,感受野越小,则相对可以预测一些尺度比较小的物体,所有分配到定anchor越小;尺度越小的feature map越靠后,相对原图的下采样率越大,感受野越大,则相对可以预测一些尺寸比较大的物体,所有分配到的anchor也越大。

    • yolov5s的backbone:

      [from]表示当前模块的输入来自哪一层的输出,-1表示来自上一层的输出,层编号从0开始

      [number]表示当前模块的理论重复次数,实际的理论重复次数还要来自上面的参数depth_multiple共同决定,该参数影响整体网络模型的深度

      [model]模块类名(模块的功能)

  8. os.sep:根据你所处的平台,自动采用相应的分隔符号

  9. line47:def train(hyp, tb_writer, opt, device):

    logger模块:是python内置的标准模块,在release版本中只输出重要信息,而不必显示大量的调试信息;print将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看他的数据,logger则以由开发者决定将信息输出到什么地方,以及怎么输出。logger从来不直接实例化

  10. main()

  • scikit-opt:是一个封装了7种启发式算法的python代码库(差分进化算法、遗传算法、粒子群算法、模拟退火算法、蚁群算法、鱼群算法、免疫优化算法)

  • opt.resume断点续训主要保存的是网络模型的参数以及优化器optimizer的状态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ouUZIVVN-1692241193066)(yolov5.assets/image-20230401131306825.png)]

  1. # parameters
    nc: 3  # number of classes类别数量
    depth_multiple: 0.67  # model depth multiple控制模型深度(BottleneckCSP个数)
    width_multiple: 0.75  # layer channel multiple控制卷积通道channelge'shu
    
    # anchors
    anchors:
      - [7,15, 9,20, 11,23]
      - [13,28, 18,35, 25,44]
      - [36,61, 52,89, 85,147]
    
    # YOLOv5 backbone
    backbone:
      # [from, number, module, args]
      [[-1, 1, Focus, [64, 3]],  # 0-P1/2
       [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
       [-1, 3, BottleneckCSP, [128]],
       [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
       [-1, 9, BottleneckCSP, [256]],
       [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
       [-1, 9, BottleneckCSP, [512]],
       [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
       [-1, 1, SPP, [1024, [5, 9, 13]]],
       [-1, 3, BottleneckCSP, [1024, False]],  # 9
      ]
    
    # YOLOv5 head
    head:
      [[-1, 1, Conv, [512, 1, 1]],
       [-1, 1, nn.Upsample, [None, 2, 'nearest']],
       [[-1, 6], 1, Concat, [1]],  # cat backbone P4拼接
       [-1, 3, BottleneckCSP, [512, False]],  # 13
    
       [-1, 1, Conv, [256, 1, 1]],
       [-1, 1, nn.Upsample, [None, 2, 'nearest']],
       [[-1, 4], 1, Concat, [1]],  # cat backbone P3
       [-1, 3, BottleneckCSP, [256, False]],  # 17
    
       [-1, 1, Conv, [256, 3, 2]],
       [[-1, 14], 1, Concat, [1]],  # cat head P4
       [-1, 3, BottleneckCSP, [512, False]],  # 20
    
       [-1, 1, Conv, [512, 3, 2]],
       [[-1, 10], 1, Concat, [1]],  # cat head P5
       [-1, 3, BottleneckCSP, [1024, False]],  # 23
    
       [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
      ]
    
    
  2. 以yolov5算法为核心技术,采用基于目标检测的佩戴安全帽的识别方法,一步到位,把安全帽类别直接当作多个目标检测的类别进行训练,该方案的特点:一是采用one-stage的方法直接端到端训练,任务简单,速度较快,二是部署简单,三是新增类别或数据的话需要人工拉框标注
    标检测的佩戴安全帽的识别方法,一步到位,把安全帽类别直接当作多个目标检测的类别进行训练,该方案的特点:一是采用one-stage的方法直接端到端训练,任务简单,速度较快,二是部署简单,三是新增类别或数据的话需要人工拉框标注

Yolov5是一个目标检测算法,它采用了和Yolov4一样的Mosaic数据增强方式,该方式由Yolov5团队的成员提出。Mosaic数据增强使用了随机缩放、随机裁剪和随机排布的方式进行拼接,对于小目标的检测效果很不错。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [YOLOv5 学习笔记](https://blog.csdn.net/W1995S/article/details/118114221)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [YOLOv5学习笔记](https://blog.csdn.net/qq_54809548/article/details/125403163)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [YOLOv5 自学笔记(持续更新)](https://blog.csdn.net/Mr_wjjianyan/article/details/128475887)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值