5.SVHN 数据集识别完整代码

SVHN 数据集识别

import os, sys, glob, shutil, json
os.environ["CUDA_VISIBLE_DEVICES"] = '0'
import cv2
from PIL import Image
import numpy as np
from tqdm import tqdm, tqdm_notebook
import torch
torch.manual_seed(0)
torch.backends.cudnn.deterministic = False
torch.backends.cudnn.benchmark = True
import torchvision.models as models
import torchvision.transforms as transforms
import torchvision.datasets as datasets
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
from torch.autograd import Variable
from torch.utils.data.dataset import Dataset
use_cuda=True

1.创建Dataset

# 添加高斯噪声
def gasuss_noise(image, mean=0, var=0.001):
    ''' 
        添加高斯噪声
        mean : 均值 
        var : 方差
    '''
    image = np.array(image, dtype=np.float32)
    image = image/255
    noise = np.random.normal(mean, var ** 0.5, image.shape)
    out = image + noise
    if out.min() < 0:
        low_clip = -1.
    else:
        low_clip = 0.
    out = np.clip(out, low_clip, 1.0)
    out = out*255
    out = out.astype(np.uint8)
    #cv.imshow("gasuss", out)
    return out
import random
class SVHN_Dataset(Dataset):
  def __init__(self,img_paths,img_labels,transform=None):
    super(SVHN_Dataset,self).__init__()
    self.img_paths = img_paths
    self.img_labels = img_labels
    if transform is not None:
      self.transform=transform
    else:
      self.transform = None
  
  # 必须定义
  def __getitem__(self,index):
    img = Image.open(self.img_paths[index]).convert('RGB')
    # 因为会出现过拟合的问题,所以为图片随机添加噪声
    is_add = random.random()
    if is_add < 0.5:
      img = gasuss_noise(img)
      # 把img转为PIL对象
      img = Image.fromarray(img).convert('RGB')

    if self.transform is not None:
      img = self.transform(img)

    label = np.array(self.img_labels[index],dtype=np.int)
    # 因为数字不定长,所以用标签10补齐至定长(5)
    label = list(label)+(5-len(label))*[10]
    return img,torch.from_numpy(np.array(label[:5]))
  
  # 必须定义
  def __len__(self
  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值