Grid数据增强算法

  • 算法原理
    在这里插入图片描述
    在这里插入图片描述
class Grid(object):def __init__(self, d1, d2, rotate=1, ratio=0.5, mode=0, prob=0.8):self.d1 = d1self.d2 = d2self.rotate = rotateself.ratio = ratioself.mode = modeself.st_prob = self.prob = probdef set_prob(self, epoch, max_epoch):self.prob = self.st_prob * min(1, epoch / max_epoch)def __call__(self, img):if np.random.rand() > self.prob:return imgh = img.size(1)w = img.size(2)# 1.5 * h, 1.5 * w works fine with the squared images# But with rectangular input, the mask might not be able to recover back to the input image shape# A square mask with edge length equal to the diagnoal of the input image# will be able to cover all the image spot after the rotation. This is also the minimum square.hh = math.ceil((math.sqrt(h * h + w * w)))d = np.random.randint(self.d1, self.d2)# d = self.d# maybe use ceil? but i guess no big differenceself.l = math.ceil(d * self.ratio)mask = np.ones((hh, hh), np.float32)st_h = np.random.randint(d)st_w = np.random.randint(d)for i in range(-1, hh // d + 1):s = d * i + st_ht = s + self.ls = max(min(s, hh), 0)t = max(min(t, hh), 0)mask[s:t, :] *= 0for i in range(-1, hh // d + 1):s = d * i + st_wt = s + self.ls = max(min(s, hh), 0)t = max(min(t, hh), 0)mask[:, s:t] *= 0r = np.random.randint(self.rotate)mask = Image.fromarray(np.uint8(mask))mask = mask.rotate(r)mask = np.asarray(mask)mask = mask[(hh - h) // 2:(hh - h) // 2 + h, (hh - w) // 2:(hh - w) // 2 + w]mask = torch.from_numpy(mask)if self.mode == 1:mask = 1 - maskmask = mask.expand_as(img)img = img * maskreturn imgclass GridMask(nn.Module):def __init__(self, d1= 56, d2=128, rotate=360, ratio=0.4, mode=1, prob=0.8):super(GridMask, self).__init__()self.rotate = rotateself.ratio = ratioself.mode = modeself.st_prob = probself.grid = Grid(d1, d2, rotate, ratio, mode, prob)def set_prob(self, epoch, max_epoch):self.grid.set_prob(epoch, max_epoch)def forward(self, x):if not self.training:return x# n, c, h, w = x.size()# y = []# for i in range(n):#     y.append(self.grid(x[i]))## y = torch.cat(y).view(n, c, h, w)return self.grid(x)
  • 调用
        img = transforms.ToTensor()(img)grid_mask = GridMask()img = grid_mask(img)img = img.mul(255).byte()img = img.numpy().transpose((1, 2, 0))cv2.imshow("img", img)cv2.waitKey(0)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于深度学习的场景文本检测

CTPN 简介: 基于目标检测方法的文本检测模型,在Faster RCNN的基础上进行了改进,并结合双向LSTM增强了序列提取特征,通过anchor和gt的设计将文本检测任务转化为一连串小尺度文本框的检测。 解决问题: 文本长短不一&…

全球首位AI程序员是否会抢走程序员饭碗

目录 1.概述 2.AI程序员的优势分析 2.1.减少人为错误 2.2.提高开发效率 2.3.代码质量提高 ​​​​​​​2.4.智能调试和测试 ​​​​​​​2.5.需求理解和管理 ​​​​​​​2.6.优化项目管理 ​​​​​​​2.7.知识共享与复用 ​​​​​​​2.8.小结 3.AI程序…

ubuntu 20.04 Kimera semantic 运行记录

Ubuntu20.04 Kimera Semantic运行记录 Kimera VIO ROS 配置 MIT Kimera-VIO-ROS 安装 mkdir -p Kimera_ws/src cd Kimera_ws catkin init catkin config --cmake-args -DCMAKE_BUILD_TYPERelease -DGTSAM_TANGENT_PREINTEGRATIONOFF catkin config --merge-develcd src git…

【蓝桥杯】RMQ(Range Minimum/Maximum Query)

一.概述 RMQ问题,是求区间最大值或最小值,即范围最值问题。 暴力解法是对每个询问区间循环求解,设区间长度n,询问次数m,则复杂度是O ( nm )。 一般还可以使用线段树求解,复杂度是O(mlogn)。 但还有一种…

论文解读—— 基于边缘梯度方向插值和 Zernike 矩的亚像素边缘检测

论文:《 Subpixel edge detection based on edge gradient directional interpolation and Zernike moment》 地址: http://www.dpi-proceedings.com/index.php/dtcse/article/view/24488 摘要 在本文中,我们提出了一种基于边缘梯度方向插值…

PowerShell 一键更改远程桌面端口

前言 提高工作效率,安全性和规范化,最终实现一键更改Windows 远程桌面端口 前提条件 开启wmi,配置网卡,参考 一键更改远程桌面端口自动化脚本 默认端口3389变更后的端口3390win+r mstsc YOU_ip常规更改的连接方式win+r mstsc YOU_ip:3390需要恢复到原来的端口3390更改成3…

阿里云2025届春招实习生招聘

投递时间:2024年2月1日-2026年3月1日 岗位职责 负责大型客户“上云”,"用云"技术平台开发。 开发云迁移运维技术工具,帮助阿里云服务团队&&企业客户和服务商自主、高效的完成云迁移。 开发云运维技术工具,帮助…

【java】java环境变量分类

测试代码&#xff1a; public class TestSys {public static void main(String[] args) {/*** 获取所有的系统环境变量*/Map<String, String> map System.getenv();map.forEach((key, value) -> System.out.printf("env&#xff1a;key:%s->value:%s%n"…

leetcode1969--数组元素的最小非零乘积

1. 题意 给定一个非零的二进制位排列&#xff1b; 允许交换其中两个数的二进制位任意次。 求交换后得到数组的最小非零乘积。 如: p 3 a [ 001 010 011 100 101 110 111 ] p3\\ a[001\ 010\ 011\ 100\ 101\ 110\ 111]\\ p3a[001 010 011 100 101 110 111] 将010与101交换…

CPU的Cache和MESI协议

前言 大家好我是jiantaoyab&#xff0c;这是我所总结作为学习的笔记第20篇&#xff0c;在这里分享给大家&#xff0c;这篇文章讲CPU的Cache和MESI协议。 为什么需要高速缓存&#xff1f; 通过图片可以清晰的看到&#xff0c;随着时间的发展CPU的性能差距和内存越来越大&#…

Js 原型和原型链

在 JavaScript 中&#xff0c;每个对象都有一个特殊的内部属性&#xff08;[[Prototype]]&#xff09;&#xff0c;它就是对于其他对象的引用。这个其他对象被称为该对象的“原型”。 原型链是由原型对象形成的链状结构。当试图访问一个对象的属性时&#xff0c;如果对象自身没…

使用光标精灵更换电脑鼠标光标样式,一键安装使用

想要让自己在使用电脑时更具个性化&#xff0c;让工作和娱乐更加愉快&#xff0c;改变你的电脑指针光标皮肤可能是一个简单而有效的方法。很多人或许并不清楚如何轻松地调整电脑光标样式&#xff0c;下面我就来分享一种简单的方法。 电脑光标在系统里通常只有几种默认图案&…

SpringBoot项目通过触发器调度实现定时任务

文章目录 前言一、quartz是什么&#xff1f;二、quartz中核心概念三、集成步骤1.引入依赖2.demo样例a.定义一个任务参数实体类b.定义操作触发器、定时任务接口及实现c.作业实现d.结果截图 四、其他1.QuartzJobBean和Job区别2.注意事项3.作业&#xff08;Job&#xff09;和触发器…

飞腾D2000+复旦微 ARM+FPGA+预装麒麟 全国产化COMe模块

产品概述 COMe-D2000核心模块满足PICMG COM Express Type-6 Rev2.1标准规范&#xff0c;遵从COMe BASIC尺寸标准&#xff0c;采用加固设计方案&#xff0c;内存和SSD存储均采用板贴方式&#xff0c;增强了可靠性&#xff0c;体积也得到良好控制。COMe-F662采用国产飞腾腾锐D200…

黑马程序员——javase进阶——day11——字符流,编码表,对象流,其他流

目录&#xff1a; 编码表 思考编码表介绍编码表小结字节流读中文出现码的原码字符输出流 字符流输出介绍FileWriter的成员FileWriter写数据的步骤字符输出流练习字符输入流 字节输入流介绍FileReader的成员字符缓冲流 字符缓冲流字符缓冲流特有的功能字符缓冲流练习转换流 转换…

IO多分复用

#include<myhead.h> #define SER_PORT 8888 //服务器端口号 #define SER_IP "192.168.65.131" //服务器IPint main(int argc, const char *argv[]) {//1、创建一个套接字int sfd -1;sfd socket(AF_INET, SOCK_STREAM, 0); //参数1&#xff1a;…

MyBatis是纸老虎吗?(四)

在《MyBatis是纸老虎吗&#xff1f;&#xff08;三&#xff09;》这篇文章中我们一起梳理了MyBatis配置文件的解析流程&#xff0c;并详细介绍了其中的一些常见节点的解析步骤。通过梳理&#xff0c;我们弄清楚了MyBatis配置文件中的一些常用配置项与Java Bean之间的对应关系&a…

敏捷项目管理到底有什么价值?一篇说清楚

敏捷方法是一种理念&#xff0c;采用基于人员、协作和共同价值观的组织模型。它作为新兴的项目管理模式&#xff0c;简化了传统项目管理的繁琐流程和文档。敏捷方法采用波浪式规划&#xff08;rolling wave&#xff09;&#xff1b;迭代递增式交付&#xff1b;对变化做出快速而…

交叉注意力融合时域、频域特征的FFT + CNN -BiLSTM-CrossAttention电能质量扰动识别模型

往期精彩内容&#xff1a; 电能质量扰动信号数据介绍与分类-Python实现-CSDN博客 Python电能质量扰动信号分类(一)基于LSTM模型的一维信号分类-CSDN博客 Python电能质量扰动信号分类(二)基于CNN模型的一维信号分类-CSDN博客 Python电能质量扰动信号分类(三)基于Transformer…

电商数据分析23——利用数据分析优化电商平台的搜索功能

目录 写在开头1. 电商搜索功能的重要性1.1 搜索功能对用户的购物体验的影响1.2 搜索功能对电商平台销售转化率的影响 2. 数据分析在搜索功能优化中的应用2.1 搜索查询日志分析2.2. 用户行为和偏好分析2.3. 搜索结果相关性和排序优化 3. 搜索功能优化的成功案例3.1 案例分享&…