【multi_scale】多尺度训练——目标检测训练trick

article/2025/9/29 22:26:12

文章目录

  • 1 多尺度训练的介绍
  • 2 代码解析
  • 3 感谢链接

1 多尺度训练的介绍

  • 多尺度训练对全卷积网络有效,在训练时,每隔一定的 iterations,在一定尺寸范围内,随机选取一种 img_size 进行训练。
  • 通过对不同尺度的图像进行训练,在一定程度上提高检测模型对物体大小的鲁棒性。
  • 使用尺度小的图片测试速度快些,但准确度低,用尺度大的图片测试速度慢,但准确度高。

2 代码解析

可以根据代码注释以及最下方的YOLOv3 spp的网络结构图进行理解。

  • 获取一些基础信息:
    # ----------------------------------------------------------------------------------## accumulate n times before optimizer update (bs 64)# 每训练64张图片更新一次权重,当batchsize较小时,比如batchsize为4时,每迭代16步更新一次权重# ----------------------------------------------------------------------------------#accumulate = max(round(64 / batch_size), 1)  # ----------------------------------------------------------------------------------## Image sizes# 输入图像经过yolo spp网络生成的最小特征图尺寸会变为原来的 1/32,因此图像尺寸要设置成32的倍数# ----------------------------------------------------------------------------------#gs = 32  # (pixels) grid size# math.fmod(a,b):返回给定数字a,b的余数assert math.fmod(imgsz_test, gs) == 0, "--img-size %g must be a %g-multiple" % (imgsz_test, gs)grid_min, grid_max = imgsz_test // gs, imgsz_test // gs# --------------------------------------# #   多尺度训练# --------------------------------------#if multi_scale:imgsz_min = opt.img_size // 1.5		# 这儿的1.5和0.667是自己设置的,表示尺度范围imgsz_max = opt.img_size // 0.667# 将给定的最大,最小输入尺寸向下调整到32的整数倍grid_min, grid_max = imgsz_min // gs, imgsz_max // gsimgsz_min, imgsz_max = int(grid_min * gs), int(grid_max * gs)imgsz_train = imgsz_max  # initialize with max sizeprint("Using multi_scale training, image range[{}, {}]".format(imgsz_min, imgsz_max))
  • 在把图片送入模型训练前进行尺度变换:
    # imgs: [batch_size, 3, img_size, img_size]# targets: [num_obj, 6] , that number 6 means -> (img_index, obj_index, x, y, w, h)# paths: list of img pathfor i, (imgs, targets, paths, _, _) in enumerate(metric_logger.log_every(data_loader, print_freq, header)):# ni 统计从epoch0开始的所有batch数ni = i + nb * epoch  # number integrated batches (since train start)imgs = imgs.to(device).float() / 255.0  # uint8 to float32, 0 - 255 to 0.0 - 1.0targets = targets.to(device)# Multi-Scaleif multi_scale:# 每训练64张图片,就随机修改一次输入图片大小,# 由于label已转为相对坐标,故缩放图片不影响label的值#	结合accumulate,每次更新权重时,换一个img_sizeif ni % accumulate == 0:  # adjust img_size (67% - 150%) every 1 batch# 在给定最大最小输入尺寸范围内随机选取一个size(size为32的整数倍)img_size = random.randrange(grid_min, grid_max + 1) * gssf = img_size / max(imgs.shape[2:])  # scale factor# 如果图片最大边长不等于img_size, 则缩放图片,并将长和宽调整到32的整数倍if sf != 1:# gs: (pixels) grid size# new shape (stretched to 32-multiple)# math.ceil(x)返回大于等于参数x的最小整数,即对浮点数向上取整.ns = [math.ceil(x * sf / gs) * gs for x in imgs.shape[2:]]  # 利用插值方法,对输入imgs进行上\下采样操作,也就是合理改变img尺寸大小imgs = F.interpolate(imgs, size=ns, mode='bilinear', align_corners=False)

注:图来自 太阳花的小绿豆。
在这里插入图片描述

3 感谢链接

https://www.bilibili.com/video/BV1t54y1C7ra/?spm_id_from=trigger_reload
https://blog.csdn.net/qq_37541097?type=blog

http://chatgpt.dhexx.cn/article/NOQj99LK.shtml

相关文章

“多尺度”目标检测问题

一、“多尺度”目标检测问题简介 在目标检测任务中,被测目标的大小经常是不固定的,自动驾驶相关检测任务可能要同时检测大卡车与小狗;工业质检相关检测任务可能要同时检测布料的大面积撕裂与小穿孔;医疗病灶检测任务可能要同时检测大小不一的病灶。在被测物体尺度相差极大…

图像多尺度技术

1197 多尺度图像技术也叫做多分辨率技术(MRA),指对图像采用多尺度的表达,并且在不同尺度下分别进行处理。这样做的理由是很多情况下在一种尺度中不容易看清的或者获取的特性在另外的某种尺度下就很容易发现或者是提取。所以多尺度…

目标检测中多尺度:特征金字塔FPN_Feature Pyramid Networks for Object Detection

原始内容来源于: https://blog.csdn.net/cdknight_happy/article/details/100528127 https://blog.csdn.net/WZZ18191171661/article/details/79494534 包含理解! 参考文献:https://arxiv.org/abs/1612.03144 代码实现:http://ww…

MViTv2 多尺度视觉Transformer

虽然VIT(vision transformer)模型提出后,Transformer在CV领域一路攻城拔寨,不断刷新由自己创下的记录,但VIT文章中所说明的视觉领域transformer很大程度上受transformer模型平方复杂度的限制而在大尺度图像上表现不佳的…

综述:目标检测中的多尺度检测方法

传统卷积网络通常采用从上到下的单行结构。对于大物体而言,其语义信息将出现在较深的特征图中;而对于小物体,其语义信息出现在较浅的特征图中,随着网络的加深,其细节信息可能会完全消失。 多尺度检测也是当今物体检测领…

【笔记】多尺度方法

1.定义 2.常用架构 2.1多尺度输入网络 2.2 多尺度特征融合网络 (1) 并行多分支结构 (2) 串行多分支结构 2.3 多尺度特征预测融合 2.4 多尺度特征和预测融合 3.具体方法 3.1 SNIP 3.2 SNIPER(SNIP的改进) 3.3 SSD 3.4 TridentNet(…

多尺度多目标检测之金字塔

在日常学习工作中,经常会碰到一个概念,那就是金字塔(pyramid),本文就该概念进行一定的阐述,具体如下: (1)图像金字塔 图像金字塔结构,即对图像进行一定比例…

多尺度结构元素形态学边缘检测算法的研究-含Matlab代码

目录 一、引言二、数学形态学理论概述三、实验验证四、参考文献五、Matlab代码获取 一、引言 使用数字图像处理技术来解决计算机视觉、人工智能、生物遥感器视觉等领域所涉及到的图像问题时,最重要、最关键的一步是提取出图像中最有效、最有用的特征信息。而图像边…

多尺度熵---Understanding Multiscale Entropy

目录 导言计算多尺度熵多尺度熵在脑电分析中的应用参考文献 导言 多尺度熵(Multiscale entropy, MSE)将样本熵扩展到多个时间尺度,以便在时间尺度不确定时提供额外的观察视角。样本熵的问题在于它没有很好地考虑到时间序列中可能存在的不同时…

多尺度排列熵

文章目录 前言一、什么是多尺度排列熵?二、实验平台照片三、MATLAB代码3.1 多尺度排列熵3.2 排列熵 参考文献 前言 齿轮及齿轮箱作为机械设备常用的调节转速和传递转矩的旋转机械设备,不仅能够传递较大的功率和载荷,而且具有较好的可靠性。但…

多尺度是什么计算机视觉中 multi_SCALE

先给出定义吓死你们哈哈 多尺度,实际上就是对信号的 不同粒度 的采样 别急哈哈 粒度小,说明是一个很密集的采样,能看到更多更多的细节 而粒度粗 大 说明是一个很稀疏的采样,但是点与点之间隔得远了,就容易看到趋势了…

多尺度(multi-scale)目标检测方法

文章目录 1、多尺度图像预测2、金字塔特征预测2.1 FPN2.2 SSD 3、bounding box设计 1、多尺度图像预测 将图片进行不同尺度的缩放,得到图像金字塔,然后对每层图片提取不同尺度的特征,得到特征图。最后对每个尺度的特征都进行单独的预测。 特…

多尺度与多分辨率的理解

我一开始以为 多尺度与多分辨率 是一样的意思。后来看到了xiaowei_cqu博客的一篇文章“【OpenCV】SIFT原理与源码分析:DoG尺度空间构造”(以下简称,xiaowei一文),才发现我的理解有误。 尺度空间(scale space)理论 …

多尺度深度特征(上):多尺度特征学习才是目标检测精髓(干货满满,建议收藏)...

计算机视觉研究院专栏 作者:Edison_G 深度特征学习方案将重点从具有细节的具体特征转移到具有语义信息的抽象特征。它通过构建多尺度深度特征学习网络 (MDFN) 不仅考虑单个对象和局部上下文,还考虑它们之间的关系。 公众号ID|ComputerVisionG…

计算机视觉CV领域中多尺度特征的概念

知乎:深度学习中的多尺度模型设计 知乎:计算机视觉中的多尺度模型都有哪些设计? CSDN:多尺度理解 什么是多尺度? 所谓多尺度,实际就是对信号的不同粒度的采样。 通常在不同的尺度下我们可以观察到不同…

收藏吧 少年

程序员珍藏的东西会是什么?呵呵,除了平时写的代码,就是那些百看不厌的电子书了。 昨天很郁闷,我用了5年的移动硬盘,莫名奇妙的坏掉了。里面40G的资料全部报销了。 为了不再重蹈覆辙,我决定把重要的电子书…

一个程序员的多年珍藏--收藏

2010 - 01 - 15 [置顶] 一个程序员的多年珍藏(1月23日最新更新) 文章分类:Java编程 程序员珍藏的东西会是什么?呵呵,除了平时写的代码,就是那些百看不厌的电子书了。 昨天很郁闷,我用了5年的移动硬盘,莫名奇妙的坏掉了…

一个程序员多年的收藏

程序员珍藏的东西会是什么?呵呵,除了平时写的代码,就是那些百看不厌的电子书了。 昨天很郁闷,我用了5年的移动硬盘,莫名奇妙的坏掉了。里面40G的资料全部报销了。 为了不再重蹈覆辙,我决定把重要的电子书都…

转的一杂谈

网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析 文章分类:综合技术 1、HTML静态化其实大家都知道,效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现&…

PHP面试题(一)

1.用php打印前一天的时间,格式是2018-01-01 08:00:00? $adate("Y-m-d H:i:s",strtotime("-1 day"));print_r($a) 2.echo、print_r、print、var_dump的区别? echo、print是php语句,var_dump和print_r是函数…