YOLOV5代码理解——类权重系数和图像权重系数

  • 摘要 当训练图像的所有类个数不相同时,我们可以更改类权重, 即而达到更改图像权重的目的.然后根据图像权重新采集数据,这在图像类别不均衡的数据下尤其重要。
    使用yolov5训练自己的数据集时,各类别的标签数量难免存在不平衡的问题,在训练过程中为了就减小类别不平衡问题的影响,yolov5中引入了类别权重和图像权重的设置。

类别权重

若类别权重已经更改了,每张图像包含了多个类,因此对应图像的权重也会随之而变. 默认的图像权重都为1.
计算每个图像所有类权重之和,即为图像权重

model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device)
def labels_to_class_weights(labels, nc=80):# Get class weights (inverse frequency) from training labelsif labels[0] is None:  # no labels loadedreturn torch.Tensor()labels = np.concatenate(labels, 0)  # labels.shape = (866643, 5) for COCOclasses = labels[:, 0].astype(np.int)  # labels = [class xywh]weights = np.bincount(classes, minlength=nc)  # occurrences per class返回0-25每类出现的次数# Prepend gridpoint count (for uCE training)# gpi = ((320 / 32 * np.array([1, 2, 4])) ** 2 * 3).sum()  # gridpoints per image# weights = np.hstack([gpi * len(labels)  - weights.sum() * 9, weights * 9]) ** 0.5  # prepend gridpoints to startweights[weights == 0] = 1  # replace empty bins with 1,出现出现次数为0的类,将其设为1weights = 1 / weights  # number of targets per classweights /= weights.sum()  # normalizereturn torch.from_numpy(weights)

图像权重

在训练过程中,当设置参数–image_weights为True时,会计算图像采集的权重,若图像权重越大,那么该图像被采样的概率也越大。后面遍历图像时,则按照重新采集的索引dataset.indices进行计算。

parser.add_argument('--image-weights', action='store_true', default=True, help='use weighted image selection for training')  # 加载图像权重
        if opt.image_weights:# Generate indicesif rank in [-1, 0]:cw0 = model.class_weights.cpu().numpy()  # ([0.64486, 0.12426, 0.23088])cw = cw0*(1 - maps) ** 2  # class weightsiw = labels_to_image_weights(dataset.labels, nc=nc, class_weights=cw)  # image weights"""indices[7, 49, 44, 14, 29, 26, 38, 46, 5, 1, 48, 25, 44, 0, 26, 42, 13, 54, 52, 1, 1, 31, 54, 22, 12, 24, 1, 12, 25, 29, 13, 13, 12, 26, 17, 1, 48, 32, 37, 10, 57, 50, 6, 19, 42, 41, 54, 24, 48, 39, 17, 34, 51, 49, 29, 34, 1, 14]"""dataset.indices = random.choices(range(dataset.n), weights=iw, k=dataset.n)  # rand weighted idx

YOLOV5代码理解——类权重系数和图像权重系数相关推荐

  1. YOLOV5代码理解——损失函数的计算

    YOLOV5代码理解--损失函数的计算 摘要: 神经网络的训练的主要流程包括图像输入神经网络, 得到模型的输出结果,计算模型的输出与真实值的损失, 计算损失值的梯度,最后用梯度下降算法更新模型参数.损 ...

  2. 视觉学习笔记6——YOLOv5(v6.2)部署与代码理解

    文章目录 前言 一.YOLOv5是什么? 二.环境搭建 1.基本环境 2.特殊环境 三.自定义训练 模型训练 模型测试 四.源码个人理解 1.detect.py文件 2.yolo.py文件 3. tr ...

  3. python yolov5 脚本制作(第一部分:环境搭建、yolov5源码、权重文件获取、pycharm配置、pytorch下载、初次运行yolov5代码)

    开发前准备 在这里先梳理一下整个脚本开发用到的东西: python解释器 / 3.7.4版本 pycharm / 版本随意 pytorch / 最好10.2版本 / 11.3版本 yolov5代码文件 ...

  4. YoloV5代码详细解读

    本文重点描述开源YoloV5代码实现的细节,不会对YoloV5的整体思路进行介绍,整体思路可以参考江大白的博客 江大白:深入浅出Yolo系列之Yolov3&Yolov4&Yolov5& ...

  5. 【HSI】高光谱的数据集分类深度学习实战及代码理解

    [HSI]高光谱的数据集分类深度学习实战及代码理解 文章目录 [HSI]高光谱的数据集分类深度学习实战及代码理解 一.配置文件编写 二.高光谱图像的处理 2.1图像数据变换 2.2 数据整合 2.3 ...

  6. MTCNN算法与代码理解—人脸检测和人脸对齐联合学习

    MTCNN算法与代码理解-人脸检测和人脸对齐联合学习 写在前面 主页:https://kpzhang93.github.io/MTCNN_face_detection_alignment/index. ...

  7. 【Pytorch深度学习实践】B站up刘二大人之BasicCNN Advanced CNN -代码理解与实现(9/9)

    这是刘二大人系列课程笔记的 最后一个笔记了,介绍的是 BasicCNN 和 AdvancedCNN ,我做图像,所以后面的RNN我可能暂时不会花时间去了解了: 写在前面: 本节把基础个高级CNN放在一 ...

  8. Deep Learning论文笔记之(五)CNN卷积神经网络代码理解

    Deep Learning论文笔记之(五)CNN卷积神经网络代码理解 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文,但 ...

  9. 『TensorFlow』通过代码理解gan网络_中

    『cs231n』通过代码理解gan网络&tensorflow共享变量机制_上 上篇是一个尝试生成minist手写体数据的简单GAN网络,之前有介绍过,图片维度是28*28*1,生成器的上采样使 ...

最新文章

  1. 数学符号的读法和英文表示
  2. LeetCode_链表类
  3. mysql i o 高_经典案例:磁盘I/O巨高排查全过程
  4. Puppet 的部署与应用,看这一篇就够了
  5. MySQL数据处理之增删改,MySQL8新特性计算列,完整详细可收藏
  6. vue 生命周期_Vue生命周期小白看了都会的
  7. 七步从Angular.JS菜鸟到专家(2):Scopes
  8. 洛谷 [P1265] 公路修建
  9. OSPF报文分类与格式
  10. Python基础篇1
  11. python命令行清屏的简单办法_Python Shell 清屏方法
  12. MySQL ALTER语法
  13. 删除 srvinstw安装的服务
  14. 误ghost后手工修改分区表来恢复数据
  15. anvyiew java版_细说Anyview阅读器背后的故事
  16. ci定位 lac_LAC、CI、小区、扇区、基站都是什么
  17. 怎么在12306上选择上中下卧铺
  18. 计算机怎样设置开机音乐,电脑开机声音听腻了怎么办?一招教你搞定
  19. DockOne微信分享(六十四):基于Docker实现DevOps的一些探索
  20. java8常见的List转Map的方法

热门文章

  1. Unity3D模型重力感应
  2. 欢聚时代java面试面经_欢聚时代(YY)校园招聘一面面经-java开发工程师
  3. 用“Whitespace”编程语言编写无字天书
  4. Clion使用Socket报错undefined reference to `__imp_WSAStartup‘(解决办法)
  5. Solidworks装配中的常见问题解决
  6. 研招网官方公布 考研分数查询汇总!
  7. er图转关系模式规则_将ER模型转换为关系模型的规则
  8. Windows 10 不能访问Samba共享
  9. 一文学会编写用户故事 (User Stories)
  10. MySql学习系列(一)