图像交换部分区域或帧

生成一个boundingbox,或区间

  1. 给定矩形框占图像的面积比例,和图像的宽W高H,生成矩形框。
  2. 根据给定的矩形框,交换两张图像的部分区域。

这里为了方便展示,简化问题,给定一个图像数组mels,对第 i 和第 i+2 个图像交换矩形框区域的部分:
get_cutmix() 输入一个torch张量,输出一个torch张量。

import yaml
import math
import numpy as np
import random
import matplotlib.pyplot as plt
import torch
from PIL import Image

def get_boundingbox(W, H, lamb=0.25):
    rate = math.sqrt(lamb)
    rx, ry = (1 - rate) * W * random.random(), (1 - rate) * H * random.random()
    rw, rh = W * rate, H * rate
    return int(rx), int(ry), int(rw), int(rh)

def get_cutmix(mels, lamb=0.25):
    B, C, H, W = mels.shape
    new_mels = []
    for i in range(B):
        rx, ry, rw, rh = get_boundingbox(H, W, lamb=lamb)
        print(rx, ry, rw, rh)
        j = (i + 2) % B
        MB = mels[j, :, rx:rx + rw, ry:ry + rh]
        print(MB.shape)
        MA = mels[i, :, ...]
        MA[:, rx:rx + rw, ry:ry + rh] = MB
        new_mels.append(MA)
    return torch.stack(new_mels, dim=0)

下图就是CutMix的效果,出自论文 CutMix: Regularization Strategy to Train Strong Classifiers with Localizable Features 1905.04899v2。

另一个类似的,交换部分帧,对于序列型的数据比如LogMelSpectrogram:
get_rand_frame()输入一个numpy的数组[np.array],输出一个numpy的数组[np.array]。

def get_rand_frame(mels, frame_width):

    B = len(mels)
    new_mels = []
    for i in range(B):
        j = (i + 2) % B
        W = mels[j].shape[1]
        rx = (W - frame_width) * random.random()
        rx = int(rx)
        print("rx:", rx)
        MB = mels[j][:, rx:rx+frame_width]
        print("MB:", MB.shape)

        MA = mels[i]
        W = mels[i].shape[1]
        rx = int((W - frame_width) * random.random())
        print("rx:", rx)
        MA[:, rx:rx + frame_width] = MB
        print("MA:", MA.shape)
        new_mels.append(MA)
    return new_mels

def main():
    root = "D:/kingz/ucasFiles/paper1/"
    img_paths = ["spec_denoise", "spec_normal", "denoised_true_0", "addednoised_true_1", "denoised_1"]
    imgs = []
    h = 222

    for pa in img_paths:
        img_tmp = np.array(Image.open(root+pa+".png").convert("L"), np.float64)
        imgs.append(img_tmp[:h, :])
        print(img_tmp[:h, :].shape)
    new_imgs = get_rand_frame(imgs, frame_width=40)
    # plt.figure(0)
    for i in range(5):
        # plt.subplot(3, 2, i+1)
        plt.figure(i)
        plt.imshow(new_imgs[i].astype(np.uint8))
        plt.xticks([])
        plt.yticks([])
        plt.savefig(f"./cutframe_{i}.png", bbox_inches='tight', pad_inches=0.0, dpi=300)

效果如下:

在这里插入图片描述
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。

[1]: CutMix Regularization Strategy to Train Strong Classifiers with Localizable Features 1905.04899v2
[2]: Anomalous_Sound_Detection_Based_on_Interpolation_Deep_Neural_Network

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/668727.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于SSM框架的垃圾分类系统的设计与实现(含源码+sql+开题报告+论文+论文答辩模板)

图1 前台首页截图 首页展示:首页展示法律法规、公示公告、用户交流论坛、分类指南、垃圾站点、以及个人中心; 法律法规:展示我国《城市生活垃圾分类及其评价标准》以及《生活垃圾分类标志》等最新法律法规; 公示公告&#xff1…

【第1章】SpringBoot实战篇之注册接口

文章目录 前言一、代码部分1. User2.UserMapper13. UserSerivce4. UserController15. Result 二、测试1.注册2.再次注册 总结 前言 下面介绍用户注册接口。 一、代码部分 1. User package org.example.springboot3.bigevent.entity;import com.baomidou.mybatisplus.annotat…

【Vulhub】Fastjson 1.2.24_rce复现

文章目录 一,Fastjson是什么?二,fastjson漏洞原理三,判断是否有fastjson反序列化四,复现Fastjson 1.2.24_rce(vulhub)环境配置1.判断是否存在Fastjson反序列化2.反弹shell3.启动RMI服务器4.构造恶意POST请求 一&#x…

FineBi导出Excel后台版实现

就是不通过浏览器,在后台运行的导出 参考文档在:仪表板查看接口- FineBI帮助文档 FineBI帮助文档 我这里是将这个帮助文档中导出的excel文件写到服务器某个地方后,对excel进行其他操作后再下载。由于原有接口耦合了HttpServletRequest req, HttpServletResponse res对象,…

【代码随想录】【算法训练营】【第24天】 [77]组合

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 23,愉快的周五~ 题目详情 [77] 组合 题目描述 77 组合 解题思路 前提:组合求子集问题 思路:回溯算法三部曲:递归函数的返回值以及参数、回溯…

MySQL 自定义函数(实验报告)

一、实验名称: 自定义函数 二、实验日期: 2024年 6 月 1 日 三、实验目的: 掌握MySQL自定义函数的创建及调用; 四、实验用的仪器和材料: 硬件:PC电脑一台; 配置:内存&#…

数据结构——图论详细笔记

一 图论基本概念 Directed Acyclic Graph (DAG) 二 图的存储 ①邻接矩阵(适用于稠密图) ②邻接表(适用于稀疏图) 三、图的遍历 ①深度优先搜索 //(基于邻接表实现,以有向图为例) //DFS:Depth First Search 深度优先搜索 //1、访问起始顶点 …

STM32学习和实践笔记(33):待机唤醒实验

1.STM32待机模式介绍 很多单片机具有低功耗模式,比如MSP430、STM8L等,我们的STM32也不例外。默认情况下,系统复位或上电复位后,微控制器进入运行模式。在运行模式下,HCLK 为CPU提供时钟,并执行程序代码。这…

【GPU原理】1.线程和缓存的关系

一、GPU如何做并行计算 1.简单的串行计算 对于如上的运算AXY,每次运算我们需要从内存读取两个数据,一个是x[i],一个是y[i],最后存回y[i]。这里面有一个FMA的操作(融合乘加(FMA)指令是RISC处理器…

基于Qt GraphicView 解析 CIM/G 电力接线图文件

本文讲述了如何使用Qt的框架来渲染展示标准的CIM/G格式的图形文件,也就是公用信息模型(common information model,CIM)中的G文件部分的内容。这是一种电力系统图形的交换规则,用于电网图形交换。 [by amjieker] CIM/G …

Ai晚班车531

1.中央网信办等三部门:加快推进大模型、生成式人工智能标准研制。 2.中国石油与中国移动、华为、科大讯飞签署合作协议。 3.Opera浏览器与谷歌云合作,接入 Gemini 大模型。 4.谷歌 Gemini 加持Chromebook Plus。 5.英飞凌:开发 8kW和12kW…

《技术人求职之道》:从入职到离职,全方位解析求职艺术

一、引言二、内容:该求职专栏包含什么三、结果:通过该专栏你将收获什么四、说明:关于该专栏的一些问题解答五、后记 一、引言 求职,这是每个人职业生涯中必经的阶段,技术人亦不例外。上一个冬天的寒风已过&#xff0c…

获取 Bean 对象更加简单的方式

获取 bean 对象也叫做对象装配,是把对象取出来放到某个类中,有时候也叫对象注⼊。 对象装配(对象注⼊)即DI 实现依赖注入的方式有 3 种: 1. 属性注⼊ 2. 构造⽅法注⼊ 3. Setter 注⼊ 属性注入 属性注⼊是使⽤ Auto…

MySQL性能分析工具——EXPLAIN

性能分析工具——EXPLAIN 1、概述 定位了查询慢的SQL之后,我们就可以使用EXPLAIN或DESCRIBE工具做针对性的分析查询语句 。 DESCRIBE语句的使用方法与EXPLAIN语句是一样的,并且分析结果也是一样的。 MySQL中有专门负责优化SELECT语句的优化器模块&…

报表工具DataEase技术方案(二)

一、DataEase报表功能开发流程 1. 创建数据源 2. 创建数据集 可以创建多种来源的数据集,这里以SQL数据集为例。 数据集SQL中可以添加参数,仪表板展示数据时可以根据参数来筛选数据。 数据集添加计算字段 3. 创建仪表板 (1)组合…

关于Posix标准接口和Nuttx操作系统

基本介绍 主要参考: Linux 系统中的 POSIX 接口详细介绍_linux posix-CSDN博客 POSIX(Portable Operating System Interface,可移植操作系统接口)是由 IEEE(Institute of Electrical and Electronics Engineers&#x…

LLVM入门教学——SanitizerCoverage插桩(Linux)

1、介绍 LLVM 的 SanitizerCoverage 是一种代码覆盖工具,设计用于支持基于 fuzzing 的测试和其他安全相关工具。SanitizerCoverage 在编译时插桩代码,以在运行时收集覆盖信息,从而帮助识别未覆盖的代码路径,提高测试的有效性和全…

详细介绍运算符重载函数,清晰明了

祝各位六一快乐~ 前言 1.为什么要进行运算符重载? C中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C中重新定义这些运算符&#xff…

摄影后期照片编辑工具:LrC2024 for Mac/win 中文激活版

LrC2024(Lightroom Classic 2024)是 Adobe 公司推出的一款专业级别的照片编辑和管理软件。它是 Lightroom Classic CC 的升级版,具有更多的功能和改进。 这款软件主要用于数字摄影师和摄影爱好者处理、编辑和管理他们的照片。它提供了一套强大…

锅炉智能制造工厂工业物联数字孪生平台,推进制造业数字化转型

在制造业快速发展的今天,数字化转型已经成为企业提升竞争力的关键途径。锅炉智能制造工厂工业物联数字孪生平台,作为一种创新的技术解决方案,正以其独特的优势,为制造业的数字化转型提供强大动力。锅炉智能制造工厂工业物联数字孪…