当前位置: 首页 > article >正文

YOLO系列代码

Test-Time Augmentation

  • TTA (Test Time Augmentation)是指在test过程中进行数据增强。
  • 其思想非常简单,就是在评测阶段,给每个输入进行多种数据增广变换将一个输入变成多个输入,然后再merge起来一起输出,形成一种ensemble的效果,可以用来提点。
  • 参考:https://zhuanlan.zhihu.com/p/131539596

YOLOX是旷视科技在2021年发表的一篇文章,当时主要对标的网络就是很火的YOLO v5,对比简单总结主要有三点,decoupled head、anchor-free以及advanced label assigning strategy(SimOTA)。

yolov5yolox

# Basic size of multi-scale prior box

anchors = [

[(10, 13), (16, 30), (33, 23)], # P3/8

[(30, 61), (62, 45), (59, 119)], # P4/16

[(116, 90), (156, 198), (373, 326)] # P5/32

]

# Config of batch shapes. Only on val.

# It means not used if batch_shapes_cfg is None.

batch_shapes_cfg = dict(

type='BatchShapePolicy',

batch_size=val_batch_size_per_gpu,

img_size=img_scale[0],

# The image scale of padding should be divided by pad_size_divisor

size_divisor=32,

# Additional paddings for pixel scale

extra_pad_ratio=0.5)

init_cfg

data_preprocessor

都有相比yolov3提出的是SPPF,更快,级连池化

backbone:

spp_kernal_sizes=(5, 9, 13),

YOLOv5HeadModule

YOLOAnchorGenerator

YOLOXHeadModule

SimOTAAssigner

  • Classes loss:使用的是 BCE loss

  • Objectness loss:使用的是 BCE loss

  • Location loss:使用的是 CIoU loss

L1 loss

decoupled detection head中对于预测Cls.Reg.以及IoU参数分别使用三个不同的分支,这样就将三者进行了解耦。这里需要注意一点,在YOLOX中对于不同的预测特征图采用不同的head,即参数不共享。以下为yolox:

以下为yolov5

YOLOv5 Head 结构和 YOLOv3 完全一样,为 非解耦 Head。Head 模块只包括 3 个不共享权重的卷积,用于将输入特征图进行变换而已。

前面的 PAFPN 依然是输出 3 个不同尺度的特征图,shape 为 (B,256,80,80)、 (B,512,40,40) 和 (B,1024,20,20)。 由于 YOLOv5 是非解耦输出,即分类和 bbox 检测等都是在同一个卷积的不同通道中完成。以 COCO 80 类为例:

  • P5 模型在输入为 640x640 分辨率情况下,其 Head 模块输出的 shape 分别为 (B, 3x(4+1+80),80,80)(B, 3x(4+1+80),40,40) 和 (B, 3x(4+1+80),20,20)

  • P6 模型在输入为 1280x1280 分辨率情况下,其 Head 模块输出的 shape 分别为 (B, 3x(4+1+80),160,160)(B, 3x(4+1+80),80,80)(B, 3x(4+1+80),40,40) 和 (B, 3x(4+1+80),20,20)。 其中 3 表示 3 个 anchor,4 表示 bbox 预测分支,1 表示 obj 预测分支,80 表示 COCO 数据集类别预测分支。


http://www.kler.cn/a/508255.html

相关文章:

  • 嵌入式杂谈——什么是DMA?有什么用?
  • wireshark抓路由器上的包 抓包路由器数据
  • PyTorch使用教程(6)一文讲清楚torch.nn和torch.nn.functional的区别
  • Spring框架 了解
  • 从AI原理到模型演进及代码实践 的学习二
  • 动态路由vue-router
  • 英文单词remix的意思:二创,改编,混剪
  • 3DDFA-V2 :Towards fast, accurate and stable 3d dense face alignment
  • vue2配置跨域后请求的是本机
  • 【python因果库实战20】causallib 评估图表概述3
  • Ant Design Vue --- select组件静态实现模糊搜索
  • 运维作业二
  • 【王树森推荐系统】概要03:推荐系统的AB测试
  • Starrocks 开启 Ranger 权限认证支持
  • 《机器学习》——K-means聚类
  • Java中 try-with-resources 自动关闭资源的使用
  • 【Uniapp-Vue3】showActionSheet从底部向上弹出操作菜单
  • http转化为https生成自签名证书
  • 高级编程语言的基本语法在CPU的眼中是什么样的呢?
  • javaEE初阶————多线程初阶(2)
  • 混淆矩阵 confusion matrix 怎么看 -- 识别涉黄图片的二分类为例 - 识别毒品的多分类案例解释
  • Freeswitch使用media_bug能力实现回铃音检测
  • [创业之路-249]:《华为流程变革:责权利梳理与流程体系建设》核心内容
  • 【GIS系列】打造3维GIS数字孪生效果系统:Cesium+Mapbox+SpringBoot完美实现解析
  • Spring Boot--@PathVariable、@RequestParam、@RequestBody
  • 如何使用 Go语言操作亚马逊 S3 对象云存储