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

数据预处理:随机裁剪放缩

随机裁剪放缩是一种数据增强技术,可以在训练神经网络时增加数据的多样性,提高模型的泛化能力。具体来说,随机裁剪放缩可以通过随机裁剪和缩放原始图片来生成多个不同的训练样本,从而增加数据集的大小和多样性。这种技术在图像分类、目标检测和语义分割等任务中都有广泛的应用。

输入:

输出:

下面是一个随机裁剪放缩的Python实现示例,其中包括了随机裁剪和缩放的代码:

import cv2
import numpy as npdef random_crop_resize(img, crop_size, resize_size):'''随机裁剪放缩:param img: 原始图片:param crop_size: 裁剪尺寸:param resize_size: 缩放尺寸:return: 裁剪放缩后的图片'''height, width = img.shape[:2]x = np.random.randint(0, width - crop_size[1] + 1)y = np.random.randint(0, height - crop_size[0] + 1)crop_img = img[y:y+crop_size[0], x:x+crop_size[1]]result_img = cv2.resize(crop_img, resize_size)return result_imgif __name__ == '__main__':img = cv2.imread('test.jpg')crop_size = (200, 200)resize_size = (100, 100)result_img = random_crop_resize(img, crop_size, resize_size)cv2.imshow('origin', img)cv2.imshow('result', result_img)cv2.waitKey(0)cv2.destroyAllWindows()

更进一步来说,使用RandomResizedCrop实现上述功能。
RandomResizedCrop是PyTorch中的一个数据增强函数,用于对图像进行随机裁剪和缩放。具体来说,它会从原始图像中随机裁剪出一块面积为原始图像面积的一定比例的区域,然后将这块区域缩放到指定的大小。其中,scale参数指定了裁剪区域相对于原始图像面积的比例范围,ratio参数指定了裁剪区域的宽高比范围。

示例:

from PIL import Image
import torchvision.transforms as transforms# 定义一个RandomResizedCrop变换
transform = transforms.RandomResizedCrop(224, scale=(0.08, 1.0), ratio=(3. / 4., 4. / 3.))# 加载一张示例图片
img = Image.open(r'D:\papercode\experiment\1\mmclassification-master\tests\data\color.jpg')# 对图片进行变换
img_transformed = transform(img)# 显示变换后的图片
img_transformed.show()

输入不变:

scale=(0.08, 1.0), ratio=(3. / 4., 4. / 3.)时,

输出:

可以看到放缩剪切后的图像中,是原图像中不同比例内容重新缩放的,而这个比例在0.08:1.0之间

scale=(0.88, 1.0), ratio=(4. / 3., 3. / 4.)时, 

输出:

可以看到放缩后的图像中,三张图像相差不大,与原图像相差也不大,因为这里比例设置为0.88:1.0 

http://www.lryc.cn/news/249213.html

相关文章:

  • RabbitMQ 搭建和工作模式
  • 一起学docker系列之七docker容器卷技术
  • Loki安装部署
  • php如何实现文件上传
  • 实验8配置工具
  • 论文笔记:详解NEUPSL DSI
  • shared_ptr子类指针转换成父类指针
  • 五、cookie、session、token、localstroage、sessionStroage区别
  • 基于SpringBoot的在线视频教育平台的设计与实现
  • Vue 2.0源码分析-渲染函数render
  • 阿里云国际短信业务网络超时排障指南
  • 浅用tensorflow天气预测
  • 基于SpringBoot学生读书笔记共享
  • 设计模式之装饰模式(2)--有意思的想法
  • 深入了解 Pinia:现代 Vue 应用的状态管理利器
  • TTS声音合成:paddlespeech、sherpa-onnx、coqui-ai
  • Android frameworks 开发总结之十一
  • 抑制过拟合——Dropout原理
  • 开发板启动进入系统以后再挂载 NFS 文件系统, 这里的NFS文件系统是根据正点原子教程制作的ubuntu_rootfs
  • Ubuntu系统执行“docker ps“出现“permission denied“
  • Python与设计模式--桥梁模式
  • Linux下查看目录大小
  • 鸿蒙原生应用/元服务开发-AGC分发如何下载管理Profile
  • 解决warning: #188-D: enumerated type mixed with another type问题
  • docker的知识点,以及使用
  • WTM(基于Blazor)问题处理记录
  • ubuntu 安装 towhee
  • ERP软件对Oracle安全产品的支持
  • Linux 基础-常用的命令和搭建 Java 部署环境
  • c语言总结(解题方法)