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

详解数据增强中的平移shft操作

Shift 平移是指在数据增强(data augmentation)过程中,通过对输入图像或目标进行位置偏移(平移),让目标在图像中呈现出不同的位置。Shift 平移的目的是增加训练数据的多样性,从而提高模型对目标在不同位置上的泛化能力。

1、Shift 平移的实现方式及步骤

1.1、平移的定义

  • 平移是将目标或图像内容在水平或垂直方向上移动。
  • 平移范围(shift range):定义平移的最大像素数,例如 ±16 像素表示目标可以随机移动 -16 到 +16 像素。

1.2、操作步骤

以图像为例:

  • 输入:目标所在的图像(即“搜索区域”)和目标框(目标的坐标)。
  • 平移操作
    • 选择一个随机平移的值:从范围 [−r,r](如 -16 到 +16 像素)中随机生成一个水平平移值 Δx和一个垂直平移值 Δy。
    • 移动目标框:将目标框的位置平移为(x+Δx,y+Δy)。
    • 对整个图像应用相应的平移:图像的内容会被相应地向左、右、上或下移动,边界位置的空白部分可以用填充值(如 0、均值或镜像填充)补充。

具体示例:假设我们有一张 255×255像素的图像,目标位于中心位置。

  1. 未平移(0-shift)
    • 目标始终在图像中心。
    • 输出的目标框位置不变,例如:(128,128)。
  2. 16-shift
    • 随机生成 Δx=10和 Δy=−12,目标向右移动 10 像素,向上移动 12 像素。
    • 输出的目标框位置为 (138,116)。
  3. 32-shift
    • 假设 Δx=−20,Δy=25,目标向左移动 20 像素,向下移动 25 像素。
    • 输出的目标框位置为 (108,153)。

2、平移后会产生的问题

如果目标进行了平移,那么目标离开了原位置,原位置就会出现一个空缺处,这个空缺处的像素是如何处理的?当目标进行平移后,原位置和新位置可能会出现空缺或溢出区域,这些区域需要用一定的策略进行填充处理,以保证图像的尺寸一致。

2.1、常见填充方法

(1)零填充(Zero Padding)

  • 用值为0的像素填充空缺区域。
  • 优点:实现简单,计算高效。
  • 缺点:容易引入与图像内容差异较大的边缘区域,可能对模型学习带来干扰。

(2)常数填充(Constant Padding)

  • 用一个固定的常数(如图像的平均值或中值)填充。
  • 优点:相对于零填充更平滑,可以减少填充值对模型的影响。
  • 缺点:可能无法完全匹配图像内容。

(3)镜像填充(Reflection Padding)

  • 用靠近空缺区域的像素的镜像值填充。
  • 优点:较自然,与图像内容保持一致性。
  • 缺点:实现稍微复杂。

(4)边缘复制填充(Replication Padding)

  • 将图像边界的像素值重复填充到空缺区域。
  • 优点:简单且保留了一定的内容一致性。
  • 缺点:可能引入边缘效应。

(5)随机填充(Random Padding)

  • 用随机生成的像素值填充空缺区域。
  • 优点:增加数据的多样性。
  • 缺点:可能引入噪声,干扰模型学习。

2.2、具体处理方式

(1)对空缺区域的填充

  • 当目标平移后,在目标原位置的空缺区域可以采用上述填充方式填补,确保图像尺寸一致。

(2)对目标超出边界的处理

  • 如果目标的平移导致部分内容超出图像边界,通常采取以下策略:
    • 裁剪(Clipping):将目标超出边界的部分直接裁剪掉。
    • 周期填充(Cyclic Padding):将图像视为环形空间,超出部分从对侧补充。
    • 延展(Extrapolation):用边界内容延展补充超出部分。

(3)背景填充

  • 如果目标是从目标框(bounding box)裁剪出的,则其背景部分可以直接用原图的背景填充。

2.3、实现中的常见选择

在许多深度学习框架中,常用以下组合处理:

  • 输入图像的填充:对于整个图像(如搜索区域),常用镜像填充或边缘复制填充。
  • 目标框的裁剪:将目标框平移到新的位置,如果部分超出边界,裁剪掉超出部分。

3、案例分析:以目标跟踪为例

当目标在平移时超出了图像边界,会导致目标的一部分“溢出”图像范围。

3.1、假设场景

  • 原图大小: 255×255像素。
  • 目标框大小: 127×127像素,初始位于图像中心。
  • 初始目标框位置:中心点为 (128,128),左上角为 (65,65),右下角为 (192,192)。
  • 平移操作
    • 水平平移 +80像素(向右)。
    • 垂直平移 +30像素(向下)。
    • 平移后,目标框的新位置为:
      • 左上角:(65+80,65+30)=(145,95)。
      • 右下角:(192+80,192+30)=(272,222)。

在此情况下,目标框的右底部超出了图像边界。

3.2、处理方法

3.2.1、裁剪目标框(Clipping the Bounding Box)

  • 方法:直接将超出图像边界的部分裁剪掉。
  • 操作
    • 裁剪右侧,使得目标框的右下角保持在图像范围内。
    • 新目标框为:
      • 左上角:(145,95)。
      • 右下角:(255,222)(右侧被限制为图像宽度 255)。
  • 优点:简单直接。
  • 缺点:如果目标框超出部分较大,可能丢失重要信息。

3.2.2、填充图像边界(Padding the Image Border)

  • 方法:在图像边界外扩展额外的区域,用特定方式填充。
  • 操作
    • 在图像的右侧和底部各扩展 17像素(差值为 272−255=17),填充方式可选:
      • 零填充:扩展的区域填充0值。
      • 镜像填充:用图像边界的像素值镜像填充。
      • 常数填充:填充固定值,如图像平均值。
    • 新图像大小:272×272。
  • 优点:保留目标完整性。
  • 缺点:增加图像大小,可能引入非真实数据。

3.2.3、部分目标遮挡(Partial Occlusion Simulation)

  • 方法:保留目标框在图像中的部分,将超出边界部分认为是“不可见”或“遮挡”。
  • 操作
    • 保留目标框的可见区域:
      • 左上角:(145,95)。
      • 右下角:(255,222)。
    • 超出图像右侧和底部的区域不处理(保留空白或设置为背景)。
  • 优点:模拟实际场景中的遮挡情况。
  • 缺点:丢失目标信息。

3.2.4、缩小目标框(Rescaling the Bounding Box)

  • 方法:在平移时缩小目标框的尺寸以适应图像边界。
  • 操作
    • 将目标框缩小 17像素,使其完全位于图像内。
    • 新目标框为:
      • 左上角:(145,95)。
      • 右下角:(255,222)。
  • 优点:目标框始终保持在图像范围内。
  • 缺点:可能导致目标框尺寸与实际目标不匹配。

相关文章:

详解数据增强中的平移shft操作

Shift 平移是指在数据增强(data augmentation)过程中,通过对输入图像或目标进行位置偏移(平移),让目标在图像中呈现出不同的位置。Shift 平移的目的是增加训练数据的多样性,从而提高模型对目标在…...

CCLINKIE转ModbusTCP网关,助机器人“掀起”工业智能的“惊涛骇浪”

以下是一个稳联技术CCLINKIE转ModbusTCP网关(WL-CCL-MTCP)连接三菱PLC与机器人的配置案例:设备与软件准备设备:稳联技术WL-CCL-MTCP网关、三菱FX5UPLC、支持ModbusTCP协议的机器人、网线等。 稳联技术ModbusTCP转CCLINKIE网关&…...

类型安全与代码复用的C# 泛型

一、引言:泛型 ——C# 编程的神奇钥匙 在 C# 编程的广袤天地里,泛型宛如一把神奇钥匙,能够开启高效、灵活且安全的代码之门🚪。 想象一下,你是一位经验丰富的建筑师,要建造各种各样的房子🏠。…...

卷积神经05-GAN对抗神经网络

卷积神经05-GAN对抗神经网络 使用Python3.9CUDA11.8Pytorch实现一个CNN优化版的对抗神经网络 简单的GAN图片生成 CNN优化后的图片生成 优化模型代码对比 0-核心逻辑脉络 1)Anacanda使用CUDAPytorch2)使用本地MNIST进行手写图片训练3)…...

vscode使用Marscode编程助手

下载 vscode 在插件里下载Marscode编程助手 插件完成 在这里点击安装,点击后这里出现AI编程插件。...

网络分析仪测试S参数

S参数的测试 一:S参数的定义 S参数(Scattering Parameters,散射参数)是一个表征器件在射频信号激励下的电气行为的工具,它以输入信号、输出信号为元素的矩阵来表现DUT的“传输”和“散射”效应,输入、输出…...

docker mysql5.7如何设置不区分大小写

环境 docker部署,镜像是5.7,操作系统是centos 操作方式 mysql 配置文件是放在 /etc/mysql/mysql.conf.d/mysqld.cnf, vim /etc/mysql/mysql.conf.d/mysqld.cnf lower_case_table_names1 重启mysql容器 验证 SHOW VARIABLES LIKE low…...

【1】Word:邀请函

目录 题目 文字解析 流程 题目 文字解析 考生文件夹☞Word.docx☞一定要用ms打开,wps打开作答无效☞作答完毕,F12或者手动另存为(考生文件夹:路径文件名) 注意:一定要检查,很有可能你前面步…...

【gin】中间件使用之jwt身份认证和Cors跨域,go案例

Gin-3 中间件编程及 JWT 身份认证 1. Gin 中间件概述 中间件是处理 HTTP 请求的函数,可以在请求到达路由处理函数之前或之后对请求进行处理。 在 Gin 框架中,中间件常用于处理日志记录、身份验证、权限控制等功能。 router : gin.Default() router.Us…...

【JAVA实战】@FeignClient注解类通用请求封装

背景 最近在编写多个系统数据集成过程中,经常会使用到FeignClient注解标记一个类,类里面编写很多请求方法,如果第三方系统有非常多的URL请求,每个方法对应一个URL请求,那么这个类就会非常的庞大,是否有一种…...

[c语言日寄]精英怪:三子棋(tic-tac-toe)3命慢通[附免费源码]

哈喽盆友们,今天带来《c语言》游戏中[三子棋boss]速通教程!我们的目标是一边编写博文,一边快速用c语言实现三子棋游戏。准备好瓜子,我们计时开始! 前期规划 在速通中,我们必须要有清晰的前期规划&#xf…...

GORM(Go语言数据交互库)

GORM(Go ORM,即对象关系映射)是Go语言中非常流行且功能强大的数据库交互库。它简化了与关系型数据库的交互过程,提供了丰富的API来处理各种数据库操作。下面将详细介绍GORM的功能、使用方法和一些高级特性。 1. 安装 首先&#…...

Redis主从同步是怎么实现的?

Redis主从同步是怎么实现的? 主从节点建立连接后,从节点会进行判断: 1.如果这是从节点之前没有同步过数据 属于初次复制,会进行全量重同步,那么从节点会向主节点发送PSYNC?-1 命令,请求主节点进行全量重…...

Flutter中Get.snackbar避免重复显示的实现

在pubspec.yaml中引入依赖框架。 #GetX依赖注解get: ^4.6.5创建一个SnackBarManager管理类去管理每个提示框。 import package:get/get.dart; import package:flutter/material.dart;class SnackBarManager {factory SnackBarManager() > instance;static final SnackBarMa…...

[Qt]常用控件介绍-多元素控件-QListWidget、QTableWidget、QQTreeWidget

目录 1.多元素控件介绍 2.ListWidget控件 属性 核心方法 核心信号 细节 Demo:编辑日程 3.TableWidget控件 核心方法 QTableWidgetItem核心信号 QTableWidgetItem核心方法 细节 Demo:编辑学生信息 4.TreeWidget控件 核心方法 核心信号…...

深入Android架构(从线程到AIDL)_32 JNI架构原理_Java与C的对接05

1、EIT造形观点 基于熟悉的EIT造形&#xff0c;很容易理解重要的架构设计决策议题。 前言 2、混合式EIT造形 一般EIT造形是同语言的。也就是<E>、 <I>和<T>都使用同一种语言撰写的&#xff0c;例如上述的Java、 C/C等。于此&#xff0c;将介绍一个EIT造…...

【gRPC】clientPool 客户端连接池简单实现与go案例

什么是 gRPC 客户端连接池&#xff1f; 在 gRPC 中&#xff0c;创建和维护一个到服务器的连接是非常消耗资源的&#xff08;比如 TCP 连接建立和 TLS 握手&#xff09;。 而在高并发场景下&#xff0c;如果每次请求都创建新的连接&#xff0c;不仅会导致性能下降&#xff0c;还…...

Android 15应用适配指南:所有应用的行为变更

Android系统版本适配&#xff0c;一直是影响App上架Google Play非常重要的因素。 当前Google Play政策规定 新应用和应用更新 必须以 Android 14&#xff08;API 级别 34&#xff09;为目标平台&#xff0c;才能提交到Google Play。现有应用 必须以 Android 13&#xff08;AP…...

24-25-1-单片机开卷部分习题和评分标准

依据相关规定试卷必须按评分标准进行批改。 给分一定是宽松的&#xff0c;能给分一定给&#xff0c;如有疑问也可以向学院教务办申请查卷。 一部分学生期末成绩由于紧张或其他原因导致分数过低&#xff0c;也是非常非常遗憾的。 个人也是非常抱歉的。 开卷考试 简答题 第一…...

STM32第6章、WWDG

一、简介 WWDG&#xff1a;全称Window watchdog&#xff0c;即窗口看门狗&#xff0c;本质上是一个能产生系统复位信号和提前唤醒中断的计数器。 特性&#xff1a; 是一个递减计数器。 看门狗被激活后&#xff0c; 当递减计数器值从 0x40减到0x3F时会产生复位&#xff08;即T6位…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

使用SSE解决获取状态不一致问题

使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件&#xff0c;这个上传文件是整体功能的一部分&#xff0c;文件在上传的过程中…...

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版

1.题目描述 2.思路 当前的元素可以重复使用。 &#xff08;1&#xff09;确定回溯算法函数的参数和返回值&#xff08;一般是void类型&#xff09; &#xff08;2&#xff09;因为是用递归实现的&#xff0c;所以我们要确定终止条件 &#xff08;3&#xff09;单层搜索逻辑 二…...

【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验

2024年初&#xff0c;人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目&#xff08;一款融合大型语言模型能力的云端AI编程IDE&#xff09;时&#xff0c;技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力&#xff0c;TRAE在WayToAGI等…...

MeshGPT 笔记

[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭&#xff01;_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...

表单设计器拖拽对象时添加属性

背景&#xff1a;因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...