最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PyTorch?使用torchvision進(jìn)行圖片數(shù)據(jù)增廣

 更新時(shí)間:2022年05月06日 11:48:08   作者:峽谷的小魚(yú)  
本文主要介紹了PyTorch?使用torchvision進(jìn)行圖片數(shù)據(jù)增廣,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

使用torchvision來(lái)進(jìn)行圖片的數(shù)據(jù)增廣

數(shù)據(jù)增強(qiáng)就是增強(qiáng)一個(gè)已有數(shù)據(jù)集,使得有更多的多樣性。對(duì)于圖片數(shù)據(jù)來(lái)說(shuō),就是改變圖片的顏色和形狀等等。比如常見(jiàn)的:

左右翻轉(zhuǎn),對(duì)于大多數(shù)數(shù)據(jù)集都可以使用;
上下翻轉(zhuǎn):部分?jǐn)?shù)據(jù)集不適合使用;
圖片切割:從圖片中切割出一個(gè)固定的形狀,

  • 隨機(jī)高寬比(e.g. [3/4, 4/3)
  • 隨機(jī)大?。╡.g. [8%, 100%])
  • 隨機(jī)位置

改變圖片的顏色

  • 改變色調(diào),飽和度,明亮度(e.g. [0.5, 1.5])

1. 讀取圖片

加載相關(guān)包。

import torch
import torchvision
import matplotlib

from torch import nn
from torchvision import transforms
from PIL import Image
from IPython import display
from matplotlib import pyplot as plt

選取一個(gè)狗的圖片作為示例:

def set_figsize(figsize=(3.5, 2.5)):
    
    display.set_matplotlib_formats('svg')
    plt.rcParams['figure.figsize'] = figsize    

def show_images(imgs, num_rows, num_cols, titles=None, scale=1.5):
    r"""
    展示一列圖片
    img: Image對(duì)象的列表
    """
    figsize = (num_cols * scale, num_rows * scale)
    fig, axes = plt.subplots(num_rows, num_cols, figsize=figsize)

    axes = axes.flatten()
    
    for i, (ax, img) in enumerate(zip(axes, imgs)):
        if torch.is_tensor(img):
            ax.imshow(img.numpy())
        else:
            ax.imshow(img)
            
        ax.get_xaxis().set_visible(False)
        ax.get_yaxis().set_visible(False)
        ax.get_xaxis().set_label('x')
        if titles:
            ax.set_title(titles[i])
    
    return axes

set_figsize()
img = Image.open('img/dog1.jpg')
plt.imshow(img);

2. 圖片增廣

def apply(img, aug, num_rows=2, num_clos=4, scale=1.5):
    # 對(duì)圖片應(yīng)用圖片增廣
    # img: Image object
    # aug: 增廣操作
    Y = [aug(img) for _ in range(num_clos * num_rows)]
    d2l.show_images(Y, num_rows, num_clos, scale=scale)

2.1 圖片水平翻轉(zhuǎn)

class RandomHorizontalFlip(torch.nn.modules.module.Module):
	r'''
	RandomHorizontalFlip(p=0.5)
	給圖片一個(gè)一定概率的水平翻轉(zhuǎn)操作,如果是Tensor,要求形狀為[..., H, W]
	Args:
		p: float, 圖片翻轉(zhuǎn)的概率,默認(rèn)值0.5
	'''
	def __init__(self, p=0.5):
		pass

示例??梢钥吹剑幸话愕膸茁蕦?duì)圖片進(jìn)行了水平翻轉(zhuǎn)。

aug = transforms.RandomHorizontalFlip(0.5)
apply(img, aug)

2.2 圖片上下翻轉(zhuǎn)

class RandomVerticalFlip(torch.nn.modules.module.Module):
	r'''
	RandomVerticalFlip(p=0.5)
	給圖片一個(gè)一定概率的上下翻轉(zhuǎn)操作,如果是Tensor,要求形狀為[..., H, W]
	Args:
		p: float, 圖片翻轉(zhuǎn)的概率,默認(rèn)值0.5
	'''
	def __init__(self, p=0.5):
		pass

示例??梢钥吹剑幸话愕膸茁蕦?duì)圖片進(jìn)行了上下翻轉(zhuǎn)。

aug = transforms.RandomHorizontalFlip(0.5)
apply(img, aug)

2.3 圖片旋轉(zhuǎn)

class RandomRotation(torch.nn.modules.module.Module):
    r'''
    將圖片旋轉(zhuǎn)一定角度。
    '''
    def __init__(self, 
                 degrees, 
                 interpolation=<InterpolationMode.NEAREST: 'nearest'>, 
                 expand=False, 
                 center=None, 
                 fill=0):
        r"""
        Args:
            degrees: number or sequence, 可選擇的角度范圍(min, max),
                        如果是一個(gè)數(shù)字,則范圍是(-degrees, +degrees)
            interpolation: Default is ``InterpolationMode.NEAREST``.
            expand: bool, 如果為True,則擴(kuò)展輸出,使其足夠大來(lái)容納整個(gè)旋轉(zhuǎn)的圖像
                          如果為False, 將輸出圖像與輸入圖像的大小相同。
            center: sequence, 以左上角為原點(diǎn)的旋轉(zhuǎn)中心,默認(rèn)是圖片中心。
            fill: sequence or number: 旋轉(zhuǎn)圖像外部區(qū)域的像素填充值,默認(rèn)0。
        """
        pass
    
    def forward(self, input):
        r"""
        Args:
            img: PIL Image or Tensor, 被旋轉(zhuǎn)的圖片。
        Return:
            PIL Image or Tensor: 旋轉(zhuǎn)后的圖片。
        """
        pass

使用實(shí)例:

aug = transforms.RandomRotation(degrees=(-90, 90), fill=128)
apply(img, aug)

2.4 中心裁切

class CenterCrop(torch.nn.modules.module.Module):
    r'''
    中心裁切。
    
    '''
    def __init__(self, size):
        r"""
        Args:
           size: sequence or int, 裁切尺寸(H, W), 如果是int,尺寸為(size, size)
        """
        pass
    
    def forward(self, input):
        r"""
        Args:
            img: PIL Image or Tensor, 被裁切的圖片。
        Return:
            PIL Image or Tensor: 裁切后的圖片。
        """
        pass

實(shí)例:

aug = transforms.CenterCrop((200, 300))
apply(img, aug)

2.5 隨機(jī)裁切

class RandomCrop(torch.nn.modules.module.Module):
    r'''
    隨機(jī)裁切。
    
    '''
    def __init__(self, size):
        r"""
        Args:
           size: sequence or int, 裁切尺寸(H, W), 如果是int,尺寸為(size, size)
           padding: sequence or int, 填充大小,
                如果值為 a , 四周填充a個(gè)像素
                如果值為 (a, b), 左右填充a,上下填充b
                如果值為 (a, b, c, d), 左上右下依次填充
           pad_if_need: bool, 如果裁切尺寸大于原圖片,則填充
           fill: number or str or tuple: 填充像素的值
           padding_mode: str, 填充類型。
                   `constant`: 使用 fill 填充
                   `edge`: 使用邊緣的最后一個(gè)值填充在圖像邊緣。
                   `reflect`: 鏡像填充
        """
        pass
    
    def forward(self, input):
        r"""
        Args:
            img: PIL Image or Tensor, 被裁切的圖片。
        Return:
            PIL Image or Tensor: 裁切后的圖片。
        """
        pass

示例:

aug = transforms.RandomCrop((200, 300))
apply(img, aug)

輸出:

2.6 隨機(jī)裁切并修改尺寸

class RandomResizedCrop(torch.nn.modules.module.Module):
    r'''
    隨機(jī)裁切, 并重設(shè)尺寸。
    
    '''
    def __init__(self, size, scale=(0.08, 1.0), ratio=(0.75, 1.3333333333333333)):
        r"""
        Args:
           size: sequence or int, 需要輸出的尺寸(H, W), 如果是int,尺寸為(size, size)
           scale: tuple of float, 原始圖片中裁切大小,百分比
           ratio: tuple of float, resize前的裁切的縱橫比范圍
        """
        pass
    
    def forward(self, input):
        r"""
        Args:
            img: PIL Image or Tensor, 被裁切的圖片。
        Return:
            PIL Image or Tensor: 輸出的圖片。
        """
        pass

示例:

aug = transforms.RandomResizedCrop((200, 200), scale=(0.2, 1))
apply(img, aug)

2. 7 修改圖片顏色

class ColorJitter(torch.nn.modules.module.Module):
    r'''
    修改顏色。
    
    '''
    def __init__(self, brightness=0, contrast=0, saturation=0, hue=0):
        r"""
        Args:
           brightness: float or tuple of float (min, max), 亮度的偏移幅度,范圍[max(0, 1 - brightness), 1 + brightness]
           contrast: float or tuple of float (min, max), 對(duì)比度偏移幅度,范圍[max(0, 1 - contrast), 1 + contrast]
           saturation: float or tuple of float (min, max), 飽和度偏移幅度,范圍[max(0, 1 - saturation), 1 + saturation]
           hue: float or tuple of float (min, max), 色相偏移幅度,范圍[-hue, hue]
        """
        pass
    
    def forward(self, input):
        r"""
        Args:
            img: PIL Image or Tensor, 輸入的圖片。
        Return:
            PIL Image or Tensor: 輸出的圖片。
        """
        pass

示例:

aug = transforms.ColorJitter(brightness=0.5, contrast=0.5, saturation=0.5, hue=0.5)
apply(img, aug)

3. 訓(xùn)練數(shù)據(jù)集加載

train_augs = transforms.Compose([transforms.RandomHorizontalFlip(), 
                                 torchvision.transforms.ToTensor()])
dataset = torchvision.datasets.CIFAR10(root="../data", train=is_train,
                                           transform=augs, download=True)

到此這篇關(guān)于PyTorch 使用torchvision進(jìn)行圖片數(shù)據(jù)增廣的文章就介紹到這了,更多相關(guān)PyTorch torchvision 圖片增廣內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)Logger打印功能的方法詳解

    Python實(shí)現(xiàn)Logger打印功能的方法詳解

    最近工作中遇到了打印的需求,通過(guò)查找相關(guān)的資料發(fā)現(xiàn)Python中Logger可以很好的實(shí)現(xiàn)打印,所以下面這篇文章主要給大家介紹了關(guān)于Python如何實(shí)現(xiàn)Logger打印功能的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-09-09
  • python 實(shí)現(xiàn)存儲(chǔ)數(shù)據(jù)到txt和pdf文檔及亂碼問(wèn)題的解決

    python 實(shí)現(xiàn)存儲(chǔ)數(shù)據(jù)到txt和pdf文檔及亂碼問(wèn)題的解決

    這篇文章主要介紹了python 實(shí)現(xiàn)存儲(chǔ)數(shù)據(jù)到txt和pdf文檔及亂碼問(wèn)題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • python基于plotly實(shí)現(xiàn)畫(huà)餅狀圖代碼實(shí)例

    python基于plotly實(shí)現(xiàn)畫(huà)餅狀圖代碼實(shí)例

    這篇文章主要介紹了python基于plotly實(shí)現(xiàn)畫(huà)餅狀圖代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • python學(xué)生信息管理系統(tǒng)(初級(jí)版)

    python學(xué)生信息管理系統(tǒng)(初級(jí)版)

    這篇文章主要為大家詳細(xì)介紹了python學(xué)生信息管理系統(tǒng)的初級(jí)版本代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 初探TensorFLow從文件讀取圖片的四種方式

    初探TensorFLow從文件讀取圖片的四種方式

    本篇文章主要介紹了初探TensorFLow從文件讀取圖片的四種方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • Python設(shè)計(jì)模式結(jié)構(gòu)型享元模式

    Python設(shè)計(jì)模式結(jié)構(gòu)型享元模式

    這篇文章主要介紹了Python享元模式,享元模式即Flyweight Pattern,指運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象,下面和小編一起進(jìn)入文章了解更多詳細(xì)內(nèi)容吧
    2022-02-02
  • python實(shí)現(xiàn)學(xué)生通訊錄管理系統(tǒng)

    python實(shí)現(xiàn)學(xué)生通訊錄管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)學(xué)生通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • Pandas中KeyError: 'Column_Name' not in index”的報(bào)錯(cuò)分析

    Pandas中KeyError: 'Column_Name' not 

    在使用Pandas進(jìn)行數(shù)據(jù)處理時(shí),KeyError: 'Column_Name' not in index是一種常見(jiàn)的錯(cuò)誤,它通常發(fā)生在嘗試訪問(wèn)DataFrame中不存在的列名時(shí),本文將深入分析這一錯(cuò)誤的原因、提供解決辦法,需要的朋友可以參考下
    2024-07-07
  • Python類型注解必備利器typing模塊全面解讀

    Python類型注解必備利器typing模塊全面解讀

    在Python 3.5版本后引入的typing模塊為Python的靜態(tài)類型注解提供了支持,這個(gè)模塊在增強(qiáng)代碼可讀性和維護(hù)性方面提供了幫助,本文將深入探討typing模塊,介紹其基本概念、常用類型注解以及使用示例,以幫助讀者更全面地了解和應(yīng)用靜態(tài)類型注解
    2024-01-01
  • 解決python升級(jí)引起的pip執(zhí)行錯(cuò)誤的問(wèn)題

    解決python升級(jí)引起的pip執(zhí)行錯(cuò)誤的問(wèn)題

    今天小編就為大家分享一篇解決python升級(jí)引起的pip執(zhí)行錯(cuò)誤的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06

最新評(píng)論

林芝县| 赫章县| 蓬莱市| 连城县| 墨脱县| 拉孜县| 潼关县| 八宿县| 应用必备| 油尖旺区| 游戏| 泽普县| 高雄市| 新兴县| 慈利县| 漳平市| 洪江市| 庐江县| 永丰县| 昌吉市| 宣威市| 南通市| 夏河县| 璧山县| 广河县| 吉安市| 永清县| 安阳县| 内丘县| 浦城县| 安龙县| 山西省| 固始县| 高清| 铁力市| 澄迈县| 阿坝| 滁州市| 潮州市| 拉萨市| 特克斯县|