当前位置:网站首页>7.paddlepaddle之图像数据处理
7.paddlepaddle之图像数据处理
2022-07-22 23:53:00 【kakaccys】
前言
数据处理是ai算法工程师的基本功,一般数据可以分图片,语音,文本,以及结构化数据等等,数据的修改,清洗、增强以及不同采样都能直接影响模型的最终结果。
本章主要讲解paddlepaddle在图像数据处理方面的知识。
paddlepaddle图像处理
在paddle中有很好的图像处理,虽然其底层封装基本也是PIL库或者opencv。
其主要函数为paddle.vision.transforms,具体的处理方法如下:
import paddle
print('图像数据处理方法:', paddle.vision.transforms.__all__)
"""
['BaseTransform', 'Compose', 'Resize', 'RandomResizedCrop', 'CenterCrop',
'RandomHorizontalFlip', 'RandomVerticalFlip', 'Transpose', 'Normalize',
'BrightnessTransform', 'SaturationTransform', 'ContrastTransform', 'HueTransform',
'ColorJitter', 'RandomCrop', 'Pad', 'RandomRotation', 'Grayscale', 'ToTensor',
'to_tensor', 'hflip', 'vflip', 'resize', 'pad', 'rotate', 'to_grayscale', 'crop',
'center_crop', 'adjust_brightness', 'adjust_contrast', 'adjust_hue', 'normalize']
"""可以看到paddle里支持的图像数据处理方法相当的多,下面介绍几个经常使用的。
1.resize函数
import numpy as np
from PIL import Image
from paddle.vision.transforms import functional as F
img = (np.random.rand(256, 300, 3) * 255.).astype('uint8')
img = Image.fromarray(img)
converted_img = F.resize(img, 224)
print(converted_img.size)# (262, 224)可以看到resize对图片进行了缩放,当高大于宽时,则被缩放到了300*(256/224)的大小即(262,224的大小)。
2.normalize函数
import numpy as np
from PIL import Image
from paddle.vision.transforms import functional as F
img = (np.random.rand(256, 300, 3) * 255.).astype('uint8')
img = Image.fromarray(img)
mean = [127.5, 127.5, 127.5]
std = [127.5, 127.5, 127.5]
normalized_img = F.normalize(fake_img, mean, std, data_format='HWC')
print(normalized_img.max(), normalized_img.min())
# 0.99215686 -1.0normalize函数是对图片进行归一化的函数,可以看到,上述值被归一到[-1,1]的一个区间。
3.transpose函数
import numpy as np
from PIL import Image
from paddle.vision.transforms import Transpose
transform = Transpose()
img = Image.fromarray((np.random.rand(300, 320, 3) * 255.).astype(np.uint8))
img = transform(img)
print(img.shape)#(3,300,320)transpose函数主要是将图片矩阵数据进行转置,如上述代码,将(300,320,3)的矩阵转置到(3,300,320)大小。
4.pad函数
import numpy as np
from PIL import Image
from paddle.vision.transforms import functional as F
img = (np.random.rand(256, 300, 3) * 255.).astype('uint8')
img = Image.fromarray(img)
padded_img = F.pad(img, padding=1)
print(padded_img.size)#(302, 258)可以看到pad函数虽然设置的padding为1,但是其对图片上下左右两端均进行填充,所以最终大小变为了(302,258)。
5.center_crop函数
import numpy as np
from PIL import Image
from paddle.vision.transforms import functional as F
img = (np.random.rand(256, 300, 3) * 255.).astype('uint8')
img = Image.fromarray(img)
cropped_img = F.center_crop(img, (150, 100))
print(cropped_img.size)
# out: (100, 150) width,heightcenter_crop是中间裁剪,可以看到图片按我们所需的大小进行了裁剪。
6.to_tensor函数
import numpy as np
from PIL import Image
from paddle.vision.transforms import functional as F
img = (np.random.rand(256, 300, 3) * 255.).astype('uint8')
img = Image.fromarray(img)
tensor = F.to_tensor(img)
print(tensor.shape)#[3, 256, 300]to_tensor就是将numpy或其他格式的向量转换为paddle的向量,可以看到paddle会自动将其转换为CHW的格式。
7.compose函数
from paddle.vision.datasets import Flowers
from paddle.vision.transforms import Normalize,Compose,Transpose,Resize
transform = Compose([Resize(227),Normalize(mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], data_format='HWC'),Transpose()])用之前的举例,compose函数实际上就是将一系列图片处理的方法按顺序组合执行。
总结
在paddlepaddle里有相当多实用的图像处理方法,可供使用,可以说相当方便,简单,也能快速解决问题,当然具体情况还需具体分析,有时候手写图像处理也是必要的。
边栏推荐
猜你喜欢

Camera IQ:76%消费者曾体验AR,49%愿意分享AR广告

程序员可能还是程序员,码农可能只能是码农了

Redis速成

Program environment and pretreatment

工控人,你真的了解你的五险一金吗?

babylon.js炫酷canvas背景动画js特效
![[GNN report] Li Jia, Hong Kong University of science and technology: Rethinking graph anomaly detection - what kind of graph neural network do we need?](/img/c8/756bac41ed04e128ff543de84928e8.png)
[GNN report] Li Jia, Hong Kong University of science and technology: Rethinking graph anomaly detection - what kind of graph neural network do we need?

这是一个笑话

"Weilai Cup" 2022 Niuke summer multi school training camp 1

实现 FinClip 微信授权登录的三种方案
随机推荐
svg+js鼠标悬浮视差js特效
Download and installation of mongodb
30行自己写并发工具类(Semaphore, CyclicBarrier, CountDownLatch)是什么体验?
【WinSock】TCP UDP Boardcast Multicast
【WinSock】TCP UDP Boardcast Multicast
BufferedInputStream缓冲区填充问题
PKS Secretary & brother | review the past and know the new
工控人,你真的了解你的五险一金吗?
odbc excel--2022-07-21
【OPENVX】对象基本使用之vx_graph
Shell变量、系统预定义变量$HOME、$PWD、$SHELL、$USER、自定义变量、特殊变量$n、$#、$*、[email protected]、$?、env看所有的全局变量值、set看所有变量
outlook客户端 outlook.com邮箱设置方法
【OPENVX】对象基本使用之vx_node
UE5分屏(小地图)的解决方案
二叉树遍历
什么是NFT?你不会还不知道吧!
图的存储 ~
What is the value of the new meta universe layout "primitive Cube" of "crazy diners"?
MySQL 分库分表及其平滑扩容方案
Implementation of website Icon