当前位置: 首页 > 开发杂谈 >

DAY16:Pytorch transforms(上)

torchvision.transforms

transforms可以用来改变样本的多样性,例如:旋转、平移等等,训练图像辨识时,一定会用到的工具,现在来跟大家介绍他有哪些用法!我拿还未处理过的资料来当示范。这里我把图片都转换成400*400的大小。

    from torchvision import transforms
    from PIL import Image

    def img_loader(img_path):
        image = Image.open(img_path)
        img = image.resize((400, 400),Image.ANTIALIAS)
        return img.convert('RGB')

  • 中心裁剪:transforms.CenterCrop
    • 中心裁剪是从中心算你给他的size多大,他就裁多大。我们设置剪下200*200的图片大小。下面是比较图。
      • 参数size:你要裁剪的大小。
      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      img.show()
      tranform = transforms.Compose([transforms.CenterCrop(size=((200,200)))])
      img = tranform(img)
      img.show()    
      
    • 若裁剪的比原图还大时,多出来的部分会用黑色填补。
      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      img.show()
      tranform = transforms.Compose([transforms.CenterCrop(size=((750,500)))])
      img = tranform(img)
      img.show() 
      

  • 随机裁剪:transforms.RandomCrop

    • 将图档随机裁剪你设定的size。

      • size:要剪裁下来的大小。
      • padding:将原图先填补你给的值的像素,会在随机裁剪前填补。
      • pad_if_need:当图片小於设置的size时,是否填补。
      • fill:填补的颜色,预设黑色,例如可改为红色(255,0,0)。
      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      img.show()
      tranform =         transforms.Compose([transforms.RandomCrop(size=((200,200)),padding=100)])
      img = tranform(img)
      img.show()
      

      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      img.show()
      tranform =         transforms.Compose([transforms.RandomCrop(size=((200,200)),padding=100,fill = (255,0,0))])
      img = tranform(img)
      img.show()
      


  • 随机长宽比裁剪:transforms.RandomResizedCrop
    • 随机大小及随机长宽比裁剪原始图片,最後再resize到设定好的size。

      • size:要剪裁的图片大小。
      • scale:例如scale=(0.2, 1.0),则会随机从0.2到1.0中,选一个倍数裁剪,如0.2则裁剪原图的0.2倍。
      • ratio:长宽比区间,随机选取。
      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      img.show()
      tranform = transforms.Compose([transforms.RandomResizedCrop(size = (200,200),scale=(0.2, 1.0), ratio=(0.5, 1.1))])
      img = tranform(img)
      img.show()
      


  • 水平翻转:transforms.RandomHorizontalFlip
    • 依照P的机率,资料集的P倍图片会被水平翻转。

      • p:为水平翻转的机率,若为1则所有图片都被水平翻转。
      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      img.show()
      tranform = transforms.Compose([transforms.RandomVerticalFlip(p = 0.9)])
      img = tranform(img)
      img.show()
      


  • 垂直翻转:RandomHorizontalFlip

    • 依照P的机率,资料集的P倍图片会被垂直翻转。

      • p:为垂直翻转的机率,若为1则所有图片都被垂直翻转。
      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      tranform = transforms.Compose([transforms.RandomHorizontalFlip(p = 0.9)])
      img = tranform(img)
      img.show()
      


  • 随机旋转:RandomRotation

    • 依照设置的degrees,随机旋转图片。

      • degrees:若设为d值,则在(-d,d)之间旋转;若设为(a,b),则在a到b之间旋转。
      • center:旋转中心的座标。预设为中心点。(0,0)为左上角。
      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      tranform = transforms.Compose([transforms.RandomRotation(degrees = 30,center=(0,0))])
      img = tranform(img)
      img.show()
      


  • 填补:Pad

    • 依照设置的值为像素,由外而内填补。
      • padding:将原图填补你给的值的像素。
      • fill:填补的颜色,预设黑色,例如可改为红色(255,0,0)。
      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      tranform = transforms.Compose([transforms.Pad(padding = 30,fill=(255,200,0))])
      img = tranform(img)
      img.show()
      

今日小结

  • 还没有介绍完,目前都是剪裁跟旋转的部分,後面还有会调整图片的函数。
  • 做这些转换可以增加图片的多样性,提高模型的泛化程度。

相关文章:

  • 亚马逊CPC广告注意事项
  • [Day16] CSS Text Shadow Mouse Move Effec
  • Day10 - 基础篇总结 ,CI/CD 的功用为何 ?
  • 跨境电商图片优化,抓住客户第一视觉
  • wish商户平台产品参加降价赋能活动状态
  • 【从零开始的Swift开发心路历程-Day26】将起始画面设为XIB
  • 为什么用亚马逊FBA物流出现库存审核中待审核团队结果
  • 亚马逊仓储常见问题及解答
  • 30天程序语言研究
  • 创建App-注册系统
  • 第二十八日-MYSQL预存程序 STORED PROCEDURE:来写一个BMI小程序(1)
  • D3JsDay05Bar拉BarBarBar,作伙来画吧—画个bar chart长条图
  • NetSuite Reporting - Saved Search
  • 成为工具人应有的工具包-07 IEHistoryView
  • Day20 Android - Retrofit(Get)
  • 微信小程序搭建教程:怎么用CentOS搭建小程序服务器
  • 阿里云需要实名认证吗?阿里云个人可以做企业认证吗
  • 搬瓦工VPS注册购买教程 – 支付宝BandwagonHost购买方法教程
  • WordPress SEO怎么做?如何优化WordPress提升流量
  • WordPress主题开发基础:Body 类指南
  • 正规社交寻海外cps、网盟合作
  • 新的 Web.com 电子商务平台帮助中小企业接触数百万潜在买家
  • Yandex Money虚拟卡申请:俄罗斯银行卡预付卡申请教程
  • 洛杉矶CN2服务器推荐:PCCW线路VPS,服务器服务商layerhost
  • 阿里云国际版怎么注册绑卡购买香港美国新加坡云主机【2020年最新教程】
  • 以太坊是什么?以太坊原理和以太坊入门教程
  • 站点迁移问题:流量下降的 11 个潜在原因
  • 国内出海企业用哪家公司的短信比较多?
  • 性价比最高的国外VPS服务器推荐:便宜好用的美国VPS大全
  • Windows服务器推荐:便宜好用稳定靠谱的国外Windows服务器推荐