资讯专栏INFORMATION COLUMN

pytorch深度神经元网络新手入门提前准备自己拍的照片数据信息

89542767 / 456人阅读

  本文关键给大家介绍了pytorch深度神经元网络新手入门提前准备自己拍的照片数据信息实例全过程,感兴趣的小伙伴可以参考借鉴一下,希望可以可以参考,祝愿大家多多的发展,尽早涨薪


  文章正文


  图片数据主要有两种状况:


  1、全部图片放到一个文件夹内,此外有个txt文件表明标识。


  2、不一样类型照片放到不同类型的文件夹内,文件夹便是图形的类型。


  对于这两个不同的状况,数据的准备工作也有所不同,第一类状况能够定制1个Dataset,第二类状况立即调用torchvision.datasets.ImageFolder去处理。下边各自做出说明:


  一、全部图片放到一个文件夹内


  这儿以mnist数据的10000个test为例子,我就把test集的10000个图片保存出去,并生着相对应的txt标签文档。

01.png

  先往文件列表构建一个空文件夹mnist_test,用以储存10000张照片,然后运行代码:


  import torch
  import torchvision
  import matplotlib.pyplot as plt
  from skimage import io
  mnist_test=torchvision.datasets.MNIST(
  './mnist',train=False,download=True
  )
  print('test set:',len(mnist_test))
  f=open('mnist_test.txt','w')
  for i,(img,label)in enumerate(mnist_test):
  img_path="./mnist_test/"+str(i)+".jpg"
  io.imsave(img_path,img)
  f.write(img_path+''+str(label)+'n')
  f.close()
  经过上面的操作,10000张图片就保存在mnist_test文件夹里了,并在当前目录下生成了一个mnist_test.txt的文件,大致如下:
  前期工作就装备好了,接着就进入正题了:
  from torchvision import transforms,utils
  from torch.utils.data import Dataset,DataLoader
  import matplotlib.pyplot as plt
  from PIL import Image
  def default_loader(path):
  return Image.open(path).convert('RGB')
  class MyDataset(Dataset):
  def __init__(self,txt,transform=None,target_transform=None,loader=default_loader):
  fh=open(txt,'r')
  imgs=[]
  for line in fh:
  line=line.strip('n')
  line=line.rstrip()
  words=line.split()
  imgs.append((words[0],int(words[1])))
  self.imgs=imgs
  self.transform=transform
  self.target_transform=target_transform
  self.loader=loader
  def __getitem__(self,index):
  fn,label=self.imgs[index]
  img=self.loader(fn)
  if self.transform is not None:
  img=self.transform(img)
  return img,label
  def __len__(self):
  return len(self.imgs)
  train_data=MyDataset(txt='mnist_test.txt',transform=transforms.ToTensor())
  data_loader=DataLoader(train_data,batch_size=100,shuffle=True)
  print(len(data_loader))
  def show_batch(imgs):
  grid=utils.make_grid(imgs)
  plt.imshow(grid.numpy().transpose((1,2,0)))
  plt.title('Batch from dataloader')
  for i,(batch_x,batch_y)in enumerate(data_loader):
  if(i<4):
  print(i,batch_x.size(),batch_y.size())
  show_batch(batch_x)
  plt.axis('off')
  plt.show()


  自定义了一个MyDataset,继承自torch.utils.data.Dataset。然后利用torch.utils.data.DataLoader将整个数据集分成多个批次。


  二、不同类别的图片放在不同的文件夹内


  同样先准备数据,这里以flowers数据集为例


  提取链接:https://pan.baidu.com/s/1dcAsOOZpUfWNYR77JGXPHA?pwd=mwg6


  花总共有五类,分别放在5个文件夹下。大致如下图:

03.png

  我的路径是d:/flowers/.


  数据准备好了,就开始准备Dataset吧,这里直接调用torchvision里面的ImageFolder


  import torch
  import torchvision
  from torchvision import transforms,utils
  import matplotlib.pyplot as plt
  img_data=torchvision.datasets.ImageFolder('D:/bnu/database/flower',
  transform=transforms.Compose([
  transforms.Scale(256),
  transforms.CenterCrop(224),
  transforms.ToTensor()])
  )
  print(len(img_data))
  data_loader=torch.utils.data.DataLoader(img_data,batch_size=20,shuffle=True)
  print(len(data_loader))
  def show_batch(imgs):
  grid=utils.make_grid(imgs,nrow=5)
  plt.imshow(grid.numpy().transpose((1,2,0)))
  plt.title('Batch from dataloader')
  for i,(batch_x,batch_y)in enumerate(data_loader):
  if(i<4):
  print(i,batch_x.size(),batch_y.size())
  show_batch(batch_x)
  plt.axis('off')
  plt.show()

  综上所述,这篇文章就给大家介绍完毕了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128738.html

相关文章

  • 到底什么是生成式对抗网络GAN?

    摘要:很多人可能会问这个故事和生成式对抗网络有什么关系其实,只要你能理解这段故事,就可以了解生成式对抗网络的工作原理。 男:哎,你看我给你拍的好不好?女:这是什么鬼,你不能学学XXX的构图吗?男:哦……男:这次你看我拍的行不行?女:你看看你的后期,再看看YYY的后期吧,呵呵男:哦……男:这次好点了吧?女:呵呵,我看你这辈子是学不会摄影了……男:这次呢?女:嗯,我拿去当头像了上面这段对话讲述了一位男...

    GitCafe 评论0 收藏0
  • 分享AI有道干货 | 126 篇 AI 原创文章精选(ML、DL、资源、教程)

    摘要:值得一提的是每篇文章都是我用心整理的,编者一贯坚持使用通俗形象的语言给我的读者朋友们讲解机器学习深度学习的各个知识点。今天,红色石头特此将以前所有的原创文章整理出来,组成一个比较合理完整的机器学习深度学习的学习路线图,希望能够帮助到大家。 一年多来,公众号【AI有道】已经发布了 140+ 的原创文章了。内容涉及林轩田机器学习课程笔记、吴恩达 deeplearning.ai 课程笔记、机...

    jimhs 评论0 收藏0
  • Keras vs PyTorch:谁是「第一」深度学习框架?

    摘要:第一个深度学习框架该怎么选对于初学者而言一直是个头疼的问题。简介和是颇受数据科学家欢迎的深度学习开源框架。就训练速度而言,胜过对比总结和都是深度学习框架初学者非常棒的选择。 「第一个深度学习框架该怎么选」对于初学者而言一直是个头疼的问题。本文中,来自 deepsense.ai 的研究员给出了他们在高级框架上的答案。在 Keras 与 PyTorch 的对比中,作者还给出了相同神经网络在不同框...

    _DangJin 评论0 收藏0
  • PyTorch一周年战绩总结:是否比TensorFlow来势凶猛?

    摘要:截止到今天,已公开发行一周年。一年以来,社区中的用户不断做出贡献和优化,在此深表感谢。所以与衡量它的指标包括在机器学习研究论文中的使用。来自香港科技大学的在上推出了面向普通观众的在线课程。 Yann LeCun Twitter截止到今天,PyTorch 已公开发行一周年。一年以来,我们致力于打造一个灵活的深度学习研究平台。一年以来,PyTorch 社区中的用户不断做出贡献和优化,在此深表感谢...

    ymyang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<