91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

pytorch?transforms圖像增強怎么實現

發布時間:2023-04-06 12:00:23 來源:億速云 閱讀:130 作者:iii 欄目:開發技術

這篇文章主要介紹“pytorch transforms圖像增強怎么實現”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“pytorch transforms圖像增強怎么實現”文章能幫助大家解決問題。

    一、前言

    本文基于的是pytorch3.7.1

    二、圖像處理

    深度學習是由數據驅動的,而數據的數量和分布對于模型的優劣具有決定性作用,所以我們需要對數據進行一定的預處理以及數據增強,用于提升模型的泛化能力。

    一般來說深度學習神經網絡訓練前都需要做數據增強 (Data Augmentation) 又稱為數據增廣、數據擴增,它是對 訓練集 進行變換,使訓練集更豐富,從而讓模型更具 泛化能力

    下面為常見的圖像變換

    1.原始圖片

    顯示圖片,并讀取圖片大小

    from torchvision import transforms
    
    from PIL import Image # 用于讀取圖片
    
    import  matplotlib.pyplot as plt # 用于顯示圖片
    
    image_path = './dog.jpg'
    
    image = Image.open(image_path)
    
    plt.imshow(image)
    
    print(image.size)
    
    plt.show()

    2.調整圖片大小transforms.Resize

    2.1.transforms.Resize(x)

    主要用于調整PILImage對象的尺寸大小,圖片短邊縮放至x,長寬比保持不變

    將圖片短邊縮放至x,長寬比保持不變,上述圖片執行transforms.Resize(300)

    from torchvision import transforms
    
    from PIL import Image # 用于讀取圖片
    
    import  matplotlib.pyplot as plt # 用于顯示圖片
    
    # 圖片顯示,打印圖片大小
    
    image_path = './dog.jpg'
    
    image = Image.open(image_path)
    
    resize = transforms.Resize(300)
    
    image1 = resize(image)
    
    plt.imshow(image1)
    
    print(image1.size)
    
    plt.show()
    2.2.transforms.Resize([x, y])

    同時指定圖片長寬,這樣會改變長寬比例但是不是裁剪,可以恢復

    from torchvision import transforms
    
    from PIL import Image # 用于讀取圖片
    
    import  matplotlib.pyplot as plt # 用于顯示圖片
    
    # 圖片顯示,打印圖片大小
    
    image_path = './dog.jpg'
    
    image = Image.open(image_path)
    
    resize = transforms.Resize([512, 300])
    
    image1 = resize(image)
    
    plt.imshow(image1)
    
    print(image1.size)
    
    plt.show()
    2.3關于圖片的恢復

    測試代碼

    from torchvision import transforms
    
    from PIL import Image # 用于讀取圖片
    
    import  matplotlib.pyplot as plt # 用于顯示圖片
    
    # 圖片顯示,打印圖片大小
    
    image_path = './dog.jpg'
    
    image = Image.open(image_path)
    
    w, h = image.size
    
    resize = transforms.Resize([512, 300])
    
    image1 = resize(image)
    
    resize2 = transforms.Resize([h, w])
    
    image2 = resize2(image1)
    
    plt.imshow(image2)
    
    print(image2.size)
    
    plt.show()

    注意這里要使用transforms.Resize([h, w])

    3.圖片裁剪

    3.1中心裁剪transforms.CenterCrop

    作用:中心裁剪圖片

    主要參數:size,表示需要裁剪的圖片大小

    代碼示例:

    from torchvision import transforms
    
    from PIL import Image
    
    import matplotlib.pyplot as plt
    
    transform = transforms.CenterCrop(512)
    
    image_path= "./dog.jpg"
    
    image = Image.open(image_path)
    
    image1 = transform(image)
    
    plt.imshow(image1)
    
    print(image1.size)
    
    plt.show()
    
    image1.save('./dog_clipping.jpg')
    3.2隨機裁剪transforms.RandomCrop(size,padding=None,pad_if_needed=False,fill=0,padding_mode='constant')

    主要參數:

    size:為需要裁剪的圖片大小

    padding:設置填充大小

    大小為a:表示上下左右都填充a個元素

    大小為(a, b):表示左右填充a個元素,上下填充b個元素

    大小為(a, b, c, d):表示左上右下填充a, b, c, d個元素

    pad_if_needed:若圖像小于設定 size,則填充,此時該項需要設置為 True

    padding_mode:填充模式,主要有四種

    • constant:像素值由 fill 設定。

    • edge:像素值由圖像邊緣像素決定。

    • reflect:鏡像填充,最后一個像素不鏡像,例如 [1, 2, 3, 4] → [3, 2, 1, 2, 3, 4, 3, 2]。

    • symmetric:鏡像填充,最后一個像素鏡像,例如 [1, 2, 3, 4] → [2, 1, 1, 2, 3, 4, 4, 3]。

    fill:當填充模式為padding_mode的填充值

    代碼示例:

     from torchvision import transforms
    
    import matplotlib.pyplot as plt
    
    from PIL import Image
    
    transform = transforms.RandomCrop(size=(512, 512), padding=50, pad_if_needed=True, fill=0,padding_mode="constant")
    
    image_path = "./dog.jpg"
    
    image = Image.open(image_path)
    
    random_crop_image = transform(image)
    
    print(random_crop_image.size)
    
    plt.imshow(random_crop_image)
    
    plt.show()
    
    random_crop_image.save("./random_crop_image.jpg")
    3.3transforms.RandomResizedCrop

    RandomResizedCrop(size,scale=(0.08,1.0),ratio=(3/4,4/3),interpolation)

    將給定圖像隨機裁剪為不同的大小和寬高比,然后縮放所裁剪得到的圖像為制定的大小;

    主要參數:

    size:為最終圖片要resize的大小

    scale:為隨機采樣最少要覆蓋原圖的比例,在resize前

    ratio:為隨機采樣寬高的比例,也在resize前

    interpolation:插值方法

    代碼示例:

    from torchvision import transforms
    
    import matplotlib.pyplot as plt
    
    from PIL import Image
    
    transform = transforms.RandomResizedCrop(size=(256, 256),
    
                                             scale=(0.08, 1),
    
                                             ratio=(3/ 4, 4/3),
    
                                             interpolation=Image.NEAREST)
    
    image_path = "./dog.jpg"
    
    image = Image.open(image_path)
    
    random_resize_crop_image = transform(image)
    
    print(random_resize_crop_image.size)
    
    plt.imshow(random_resize_crop_image)
    
    plt.show()
    
    random_resize_crop_image.save("./dog_random_resize_crop.jpg")

    4.圖片翻轉與旋轉

    4.1.transforms.RandomHorizontalFlip(p=0.5)水平翻轉

    p為旋轉的概率

    代碼示例:

    from torchvision import transforms
    
    import matplotlib.pyplot as plt
    
    from PIL import Image
    
    transform = transforms.RandomHorizontalFlip(p=0.7)
    
    image_path = "./dog.jpg"
    
    image = Image.open(image_path)
    
    RandomHorizontalFlip_image = transform(image)
    
    print(RandomHorizontalFlip_image.size)
    
    plt.imshow(RandomHorizontalFlip_image)
    
    plt.show()
    
    RandomHorizontalFlip_image.save("./RandomHorizontalFlip_image.jpg")
    4.2transforms.RandomVerticalFlip垂直翻轉

    代碼示例

    from torchvision import transforms
    
    import matplotlib.pyplot as plt
    
    from PIL import Image
    
    transform = transforms.RandomVerticalFlip(p=0.8)
    
    image_path = "./dog.jpg"
    
    image = Image.open(image_path)
    
    RandomVerticalFlip_image = transform(image)
    
    print(RandomVerticalFlip_image.size)
    
    plt.imshow(RandomVerticalFlip_image)
    
    plt.show()
    
    RandomVerticalFlip_image.save("./RandomVerticalFlip_image.jpg")
    4.3旋轉transforms.RandomRotation
    RandomRotation(degrees,resample=False,expand=False,center=None)

    主要參數:

    • degrees:旋轉角度。

            當為 a 時,在 (-a, a) 之間隨機選擇旋轉角度。

            當為 (a, b) 時,在 (a, b) 之間隨機選擇旋轉角度。

    • resample:重采樣方法。

    • expand:是否擴大圖片,以保持原圖信息。

    • center:旋轉點設置,默認中心旋轉

    代碼示例:

    from torchvision import transforms
    
    import matplotlib.pyplot as plt
    
    from PIL import Image
    
    transform = transforms.RandomRotation(degrees=90,resample=False, expand=True, center=None, fill=0)
    
    image_path = "./dog.jpg"
    
    image = Image.open(image_path)
    
    RandomRotation_image = transform(image)
    
    print(RandomRotation_image.size)
    
    plt.imshow(RandomRotation_image)
    
    plt.show()
    
    RandomRotation_image.save("./RandomRotation_image.jpg")

    關于“pytorch transforms圖像增強怎么實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    湘西| 涡阳县| 东丽区| 泾源县| 建平县| 沛县| 华宁县| 乐安县| 龙井市| 三门县| 中方县| 岫岩| 根河市| 洞口县| 昭觉县| 东光县| 阜城县| 满洲里市| 隆回县| 重庆市| 伊吾县| 西昌市| 洛隆县| 青川县| 阳新县| 民县| 昌图县| 宁蒗| 黑水县| 庆云县| 旅游| 新野县| 柏乡县| 益阳市| 遂昌县| 太白县| 松溪县| 普安县| 方正县| 广州市| 府谷县|