西瓜玲子5.23打卡日记

西瓜玲子5.23打卡日记

1.数据读取

(1)图片数据读取

选择用opencv进行图片的读取,首先需要安装cv2库(pip install opencv-python),调用代码及结果如下所示。

import cv2
img = cv2.imread('./mchar_train/000000.png')
cv2.imshow('000000.png',img)
cv2.waitKey(0)

西瓜玲子5.23打卡日记_第1张图片

(2)标签数据读取

标签数据通过json文件存储,因此选用json库调用

import json
train_json = json.load(open('./train.json'))
train_label = [train_json[x]['label'] for x in train_json]

2.数据扩增

数据扩增可以增加训练集的样本,同时也可以有效缓解模型过拟合的情况,也可以给模型带来的更强的泛化能力。
常见的数据扩增方法中,一般会从图像颜色、尺寸、形态、空间和像素等角度进行变换。当然不同的数据扩增方法可以自由进行组合,得到更加丰富的数据扩增方法。

以torchvision为例,常见的数据扩增方法包括:

Function名称 作用 效果图
transforms.CenterCrop 对图片中心进行裁剪 西瓜玲子5.23打卡日记_第2张图片
transforms.ColorJitter 对图像颜色的对比度、饱和度和零度进行变换 西瓜玲子5.23打卡日记_第3张图片
transforms.FiveCrop 对图像四个角和中心进行裁剪得到五分图像 西瓜玲子5.23打卡日记_第4张图片西瓜玲子5.23打卡日记_第5张图片西瓜玲子5.23打卡日记_第6张图片西瓜玲子5.23打卡日记_第7张图片西瓜玲子5.23打卡日记_第8张图片西瓜玲子5.23打卡日记_第9张图片
transforms.Grayscale 对图像进行灰度变换 西瓜玲子5.23打卡日记_第10张图片
transforms.Pad 使用固定值进行像素填充 西瓜玲子5.23打卡日记_第11张图片
transforms.RandomAffine 随机仿射变换 西瓜玲子5.23打卡日记_第12张图片
transforms.RandomCrop 随机区域裁剪 西瓜玲子5.23打卡日记_第13张图片
transforms.RandomHorizontalFlip 随机水平翻转 西瓜玲子5.23打卡日记_第14张图片
transforms.RandomRotation 随机旋转 西瓜玲子5.23打卡日记_第15张图片
transforms.RandomVerticalFlip 随机垂直翻转 西瓜玲子5.23打卡日记_第16张图片

代码如下:

import cv2
# img = cv2.imread('./mchar_train/000000.png')
# cv2.imshow('000000.png',img)
# cv2.waitKey(0)
from PIL import Image
import numpy as np

import torch
from torch.utils.data.dataset import Dataset
import torchvision.transforms as transforms
img = Image.open('./mchar_train/000000.png').convert('RGB')
T = transforms.CenterCrop((100,100))
T = transforms.ColorJitter(0.2, 0.8, 0.2)

T = transforms.RandomRotation(45)
T = transforms.RandomHorizontalFlip(p=1)
T = transforms.RandomVerticalFlip(p=1)

T = transforms.RandomAffine(20)
T = transforms.Pad(100)
T = transforms.RandomCrop(200)

T = transforms.Grayscale(1)

img_ = T(img)
img_.save('sample.jpg', 'jpeg')

img__ = cv2.imread('./sample.jpg')
cv2.imshow('000000.png',img__)
cv2.waitKey(0)

exit()
T = transforms.FiveCrop(300)
img_ = T(img)
for im in img_:
    im.save('sample.jpg', 'jpeg')
    img__ = cv2.imread('./sample.jpg')
    cv2.imshow('000000.png',img__)
    cv2.waitKey(0)

你可能感兴趣的:(深度学习,计算机视觉,深度学习,python)