【数据增强】 您所在的位置:网站首页 1080p图像有多大 【数据增强】

【数据增强】

2022-11-06 04:10| 来源: 网络整理| 查看: 265

文章目录 概述实现方式项目结构及代码输出结果补充对文件夹里的所有图片批量裁剪

概述

最近需要制作一个数据集,由于数据集的数量不够,而这些数据集中的单张照片很大,因此可以通过裁剪的方式进行数据增强,从而获取到更多的数据,扩充数据集。在这个过程中还要将裁剪得到的图片保存下来。

实现方式 使用 PIL.Image.open() 获取图片;将图片Resize(),这个不是必须,本人使用是因为原图像太大了(可能得20482048以上),而我要裁剪的是256256,这样区域太小了,因此用 Resize() 缩小图片,在不丢失重要信息的情况下,让裁剪到的图片所含的区域更大。遍历使用 torchvision 中的 transforms.RandomCrop() 对图像进行裁剪(代码中使用了3次for循环)将图片以给定格式的命名方式保存,一次裁剪多张的话,路径需要动态获取。 项目结构及代码

项目结构: 在这里插入图片描述 其中,lxh.png就是要裁剪的图片,crop_random.py 是代码。

代码 crop_random.py :

import PIL.Image as Image import os from torchvision import transforms as transforms # pytorch提供的torchvision主要使用PIL的Image类进行处理,所以它数据增强函数大多数都是以PIL作为输入,并且以PIL作为输出。 # 读取图片 def read_PIL(image_path): image = Image.open(image_path) return image # 获取读到图片的不带后缀的名称 def get_name(image): im_path = image.filename im_name = os.path.split(im_path) # 将路径分解为路径中的文件名+扩展名,获取到的是一个数组格式,最后一个是文件名 name = os.path.splitext(im_name[len(im_name) - 1]) # 获取不带扩展名的文件名,是数组的最后一个 return name[0] # arr[0]是不带扩展名的文件名,arr[1]是扩展名 # 将图片Reszie def resize_img(image): Resize = transforms.Resize(512) resize_img = Resize(image) return resize_img # 随机裁剪 def random_crop(image): RandomCrop = transforms.RandomCrop(size=(256, 256)) random_image = RandomCrop(image) return random_image ################################################################################################## # 读取图片 image = read_PIL('data/lxh.png') print(image.size) # 输出原图像的尺寸 name = get_name(image) # 获取读到图片的不带后缀的名称 # 创建输出目录 outDir = 'data_crop/' os.makedirs(outDir, exist_ok=True) resie_img = resize_img(image) # 将图片Resize print(resie_img.size) # 输Resie后的图像的尺寸 # 随机裁剪 3 次固定大小并保存 for i in range(3): random_cropped_image = random_crop(resie_img) # 随机裁剪 random_cropped_image.show() # 显示裁剪后的图片 out_name = name + '_crop_' + str(i) + '.png' print(out_name) random_cropped_image.save(os.path.join(outDir, out_name)) # 按照路径保存图片 输出结果

控制台输出:

(1280, 720) (910, 512) lxh_crop_0.png lxh_crop_1.png lxh_crop_2.png

项目结构: 在这里插入图片描述 输出了裁剪后的图片,并且文件名根据for循环中的参数,实现了动态变化。

结果对比:

原图像: 在这里插入图片描述获取的裁剪后的图像: 在这里插入图片描述 补充

pytorch 中 transforms 提供5种裁剪方式,如:

CenterCrop(size)FiveCrop(size)RandomCrop(size[, padding, pad_if_needed, …])RandomResizedCrop(size[, scale, ratio, …])TenCrop(size[, vertical_flip]) 本文使用的是随机裁剪的方式,对于其他的使用类似,具体参考官方文档:https://pytorch.org/vision/stable/transforms.html#transforms-on-pil-image-only 对文件夹里的所有图片批量裁剪

此处是后续对于本文的补充,请看补充的博文:

【数据增强】— 使用 Pytorch 批量裁剪文件夹里图片并保存



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有