「这是我参与2022首次更文挑战的第25天,活动详情查看:2022首次更文挑战」。
宝石识别数据增强举例
1.解压缩
!unzip data/data55032/archive_train.zip -d dataset
inflating: dataset/__MACOSX/Zircon/._zircon_17.jpg
!rm dataset/__MACOSX
2.初始化分类
#导入需要的包
import os
import zipfile
import random
import json
import cv2
import numpy as np
from PIL import Image
import paddle
import matplotlib.pyplot as plt
from paddle.io import Dataset
## 转换4通道为3通道
def proc_img(src):
for root, dirs, files in os.walk(src):
if '__MACOSX' in root:continue
for file in files:
src=os.path.join(root,file)
img=Image.open(src)
## 转换4通道为3通道
if img.mode != 'RGB':
img = img.convert('RGB')
img.save(src)
if __name__=='__main__':
proc_img("dataset")
3.旋转举例
import numpy as np
from PIL import Image
from paddle.vision.transforms import functional as F
for (root , dirs, files ) in os.walk("dataset", topdown=False):
for name in files:
abs_name=os.path.join(root, name)
print(absname)
img = Image.open(abs_name)
rotated_img = F.rotate(img, 90)
print(rotated_img.size)
fake_name=os.path.join(root,"fake_"+ name)
print(fake_name)
rotated_img.save(fake_name)
import numpy as np
from PIL import Image
from paddle.vision.transforms import ColorJitter
# brightness(float) - 亮度调整范围大小,会从给定参数后的均匀分布[max(0,1 - brightness), 1 + brightness]中随机选择进行实际调整,不能是负数。
# contrast(float) - 对比度调整范围大小,,会从给定参数后的均匀分布[max(0,1 - contrast), 1 + contrast]中随机选择进行实际调整,不能是负数。
# saturation(float) - 饱和度调整范围大小,,会从给定参数后的均匀分布[max(0,1 - saturation), 1 + saturation]中随机选择进行实际调整,不能是负数。
# hue(float) - 色调调整范围大小,,会从给定参数后的均匀分布[-hue, hue]中随机选择进行实际调整,参数值需要在0到0.5之间。
# keys (list[str]|tuple[str], optional) - 与 BaseTransform 定义一致。默认值: None。
# ColorJitter随机调整图像的亮度,对比度,饱和度和色调。
transform = ColorJitter(0.4, 0.4, 0.4, 0.4)
for (root , dirs, files ) in os.walk("dataset", topdown=False):
for name in files:
abs_name=os.path.join(root, name)
print(absname)
img = Image.open(abs_name)
rotated_img = transform(img, 90)
print(rotated_img.size)
fake_name=os.path.join(root,"fake_"+ name)
print(fake_name)
rotated_img.save(fake_name)
## 组合增强法
.. code-block:: python
from paddle.vision.datasets import Flowers
from paddle.vision.transforms import Compose, ColorJitter, Resize
transform = Compose([ColorJitter(), Resize(size=608)])
flowers = Flowers(mode='test', transform=transform)
for i in range(10):
sample = flowers[i]
print(sample[0].shape, sample[1])
4.你可以加其他自己喜欢的
www.paddlepaddle.org.cn/documentati…