国产无码免费,人妻口爆,国产V在线,99中文精品7,国产成人无码AA精品一,制度丝袜诱惑av,久久99免费麻辣视频,蜜臀久久99精品久久久久久酒店
        訂閱
        糾錯
        加入自媒體

        使用 3 個Python庫的圖像增強

        介紹

        本文中探索三個流行的 Python 圖像增強庫。

        圖像分類器通常在訓(xùn)練更多的圖像時表現(xiàn)得更好。在圖像分類模型中,一個常見的問題是,模型不能正確地對圖像進行分類,只是因為它沒有針對同一圖像的不同方向進行訓(xùn)練。這可以通過向模型提供多種可能的圖像方向和轉(zhuǎn)換來克服。

        然而,在現(xiàn)實中,收集這些不同的數(shù)據(jù)可能需要更多的時間、資源和專業(yè)知識,而且對公司來說成本可能很高。在這種情況下,圖像數(shù)據(jù)增強是一個流行的選擇,通過使用一個或多個增強技術(shù)來生成用于訓(xùn)練的各種圖像,從而為現(xiàn)有數(shù)據(jù)集增加多樣性。

        盡管一些Python庫支持多種增強技術(shù),但并不是所有的技術(shù)都適合訓(xùn)練模型。用戶需要知道哪些增強技術(shù)可以幫助生成用于訓(xùn)練模型的實際附加數(shù)據(jù)。

        我們可以使用各種技術(shù)來增強圖像數(shù)據(jù)。它可以包括:

        · 使用幾何變換(例如翻轉(zhuǎn)、裁剪、旋轉(zhuǎn)、縮放等)增強圖像數(shù)據(jù)。

        · 通過使用顏色轉(zhuǎn)換來增強圖像數(shù)據(jù),例如通過調(diào)整亮度、暗度、銳度、飽和度等。

        · 通過隨機擦除、混合圖像等來增強圖像數(shù)據(jù)。

        Imgaug

        Imgaug 是一個開源 python 包,可讓你在機器學(xué)習(xí)實驗中增強圖像。它適用于各種增強技術(shù)。它有一個簡單而強大的界面,可以增強圖像、地標(biāo)、邊界框、熱圖和分割圖。

        讓我們首先使用 pip 安裝這個庫。

        pip install imgaug

        接下來,我們將使用 pip 命令在命令提示符下安裝名為“IPyPlot”的 python 包:

        pip install ipyplot

        IPyPlot 是一個 Python 工具,允許在 Python Notebook 單元格中快速高效地顯示圖像。這個包將 IPython 與 HTML 相結(jié)合,以提供一種更快、更豐富、更具交互性的方式來顯示圖像。這個包的 'plot_images' 命令將用于以網(wǎng)格狀結(jié)構(gòu)繪制所有圖像。

        此外,我們將導(dǎo)入擴充數(shù)據(jù)所需的所有必要包。

        import imageio

        import imgaug as ia

        import imgaug.a(chǎn)ugmenters as iaa

        增強的圖像路徑在此處定義。我們將使用鳥類圖像作為示例。

        input_img = imageio.imread('../input/image-bird/bird.jpg')

        圖像翻轉(zhuǎn)

        我們可以使用下面的命令水平和垂直翻轉(zhuǎn)圖像。以下代碼中的“Fliplr”關(guān)鍵字水平翻轉(zhuǎn)圖像。同樣,關(guān)鍵字“Flipud”垂直翻轉(zhuǎn)圖像。

        #Horizontal Flip

        hflip= iaa.Fliplr(p=1.0)

        input_h(yuǎn)f= hflip.a(chǎn)ugment_image(input_img)


        #Vertical Flip

        vflip= iaa.Flipud(p=1.0)

        input_vf= vflip.a(chǎn)ugment_image(input_img)

        images_list=[input_img, input_h(yuǎn)f, input_vf]

        labels = ['Original', 'Horizontally flipped', 'Vertically flipped']

        ipyplot.plot_images(images_list,labels=labels,img_width=180)

        每個圖像被翻轉(zhuǎn)的概率由 p 表示。默認(rèn)情況下,概率設(shè)置為 0.0。要水平翻轉(zhuǎn)輸入圖像,請使用 Fliplr(1.0) 。同樣,當(dāng)垂直翻轉(zhuǎn)圖像時,使用 Flipud(1.0) 。

        圖像旋轉(zhuǎn)

        通過以度為單位定義旋轉(zhuǎn),我們可以旋轉(zhuǎn)圖像。

        rot1 = iaa.Affine(rotate=(-50,20))

        input_rot1 = rot1.a(chǎn)ugment_image(input_img)

        images_list=[input_img, input_rot1]

        labels = ['Original', 'Rotated Image']

        ipyplot.plot_images(images_list,labels=labels,img_width=180)

        圖像裁剪

        裁剪圖像包括從圖像的側(cè)面移除像素的列或行,可以從全尺寸輸入圖像中提取較小尺寸的子圖像。要刪除的像素數(shù)可以以絕對數(shù)或圖像大小的一部分指定。

        在這種情況下,我們使用從連續(xù)間隔 [0.0, 0.3] 中均勻獲取的隨機分?jǐn)?shù)裁剪圖像的每一側(cè),并在每個圖像和每側(cè)采樣一次。在這里,我們?yōu)轫敳咳?0.3 的采樣分?jǐn)?shù),這會將圖像裁剪 0.3*H,其中 H 是輸入圖像的高度。

        crop1 = iaa.Crop(percent=(0, 0.3))

        input_crop1 = crop1.a(chǎn)ugment_image(input_img)

        images_list=[input_img, input_crop1]

        labels = ['Original', 'Cropped Image']

        ipyplot.plot_images(images_list,labels=labels,img_width=180)

        為圖像添加噪點

        該增強器將高斯噪聲添加到輸入圖像。尺度值是產(chǎn)生噪聲的正態(tài)分布的標(biāo)準(zhǔn)偏差。

        noise=iaa.AdditiveGaussianNoise(10,40)

        input_noise=noise.a(chǎn)ugment_image(input_img)

        images_list=[input_img, input_noise]

        labels = ['Original', 'Gaussian Noise Image']

        ipyplot.plot_images(images_list,labels=labels,img_width=180)

        圖像剪切

        該增強器以 -40 到 40 度范圍內(nèi)的隨機量剪切圖像。

        shear = iaa.Affine(shear=(-40,40))

        input_shear=shear.a(chǎn)ugment_image(input_img)

        images_list=[input_img, input_shear]

        labels = ['Original', 'Image Shearing']

        ipyplot.plot_images(images_list,labels=labels,img_width=180)

        圖像對比度

        該增強器通過縮放像素值來調(diào)整圖像對比度。

        contrast=iaa.GammaContrast((0.5, 2.0))

        contrast_sig = iaa.SigmoidContrast(gain=(5, 10), cutoff=(0.4, 0.6))

        contrast_lin = iaa.LinearContrast((0.6, 0.4))

        input_contrast = contrast.a(chǎn)ugment_image(input_img)

        sigmoid_contrast = contrast_sig.a(chǎn)ugment_image(input_img)

        linear_contrast = contrast_lin.a(chǎn)ugment_image(input_img)

        images_list=[input_img, input_contrast,sigmoid_contrast,linear_contrast]

        labels = ['Original', 'Gamma Contrast','SigmoidContrast','LinearContrast']

        ipyplot.plot_images(images_list,labels=labels,img_width=180)

        GammaContrast 函數(shù)使用公式 255*((v/255)**gamma 調(diào)整圖像對比度,其中 v 是像素值,gamma 從范圍 [0.5, 2.0] 中均勻采樣。

        SigmoidContrast 使用公式 255*1/(1+exp(gain*(cutoff-v/255)) 調(diào)整圖像對比度 (其中v為像素值,gain 從區(qū)間[3, 10]開始均勻采樣(每張圖像一次),截斷采樣與區(qū)間 [0.4, 0.6] 一致。

        LinearContrast 使用公式 127 + alpha*(v-127) 改變圖像對比度,其中 v 是像素值,alpha 從 [0.4, 0.6] 范圍內(nèi)均勻采樣。

        圖像轉(zhuǎn)換

        “ElasticTransformation”增強器通過使用位移場在局部移動像素來變換圖像。增強器的參數(shù)是 alpha 和 sigma。位移的強度由 alpha 控制,其中較大的值表示像素移動得更遠(yuǎn)。位移的平滑度由 sigma 控制,其中較大的值會導(dǎo)致更平滑的圖案。

        elastic = iaa.ElasticTransformation(alpha=60.0, sigma=4.0)

        polar = iaa.WithPolarWarping(iaa.CropAndPad(percent=(-0.2, 0.7)))

        jigsaw = iaa.Jigsaw(nb_rows=20, nb_cols=15, max_steps=(3, 7))

        input_elastic = elastic.a(chǎn)ugment_image(input_img)

        input_polar = polar.a(chǎn)ugment_image(input_img)

        input_jigsaw = jigsaw.a(chǎn)ugment_image(input_img)

        images_list=[input_img, input_elastic,input_polar,input_jigsaw]

        labels = ['Original', 'elastic','polar','jigsaw']

        ipyplot.plot_images(images_list,labels=labels,img_width=180)

        在使用“Polar Warping”增強器時,首先在極坐標(biāo)表示中應(yīng)用裁剪和填充,然后再將其扭轉(zhuǎn)回笛卡爾表示。這個增強器可以為圖像添加額外的像素。這些將被黑色像素填充。此外,“Jigsaw”增強以類似于拼圖模式的方式移動圖片內(nèi)的單元格。

        圖像上的邊界框

        Imgaug 還為圖像提供邊界框支持。如果在增強期間旋轉(zhuǎn),該庫可以旋轉(zhuǎn)圖像上的所有邊界框。

        from imgaug.a(chǎn)ugmentables.bbs import BoundingBox, BoundingBoxesOnImage

        bbs = BoundingBoxesOnImage([

        BoundingBox(x1=40, x2=550, y1=40, y2=780)

        ], shape=input_img.shape)

        ia.imshow(bbs.draw_on_image(input_img))

        Albumentations

        Albumentations 是一個快速且知名的庫,它與流行的深度學(xué)習(xí)框架(如 PyTorch 和 TensorFlow)集成。它也是 PyTorch 生態(tài)系統(tǒng)的一部分。

        Albumentations 可以執(zhí)行所有典型的計算機視覺任務(wù),包括分類、語義分割、實例分割、對象識別和姿勢估計。該庫包含 70 多種不同的增強功能,用于從現(xiàn)有數(shù)據(jù)創(chuàng)建新的訓(xùn)練樣本。它通常用于工業(yè)、深度學(xué)習(xí)研究、機器學(xué)習(xí)競賽和開源項目。

        讓我們首先使用 pip 命令安裝庫。

        pip install Albumentations

        我們將導(dǎo)入使用 Albumentations 擴充數(shù)據(jù)所需的所有必要包:

        import albumentations as A

        import cv2

        除了 Albumentations 包之外,我們還使用 OpenCV 包,這是一個支持多種圖像格式的開源計算機視覺庫。Albumentations 依賴于 OpenCV;因此,你已經(jīng)安裝了它。

        圖像翻轉(zhuǎn)

        'A.HorizontalFlip' 和 'A.VerticalFlip' 函數(shù)用于水平和垂直翻轉(zhuǎn)圖像。p 是一個獨特的參數(shù),幾乎所有的擴充都支持。它控制使用增強的概率。

        #HorizontalFlip

        transform = A.HorizontalFlip(p=0.5)

        augmented_image = transform(image=input_img)['image']

        plt.figure(figsize=(4, 4))

        plt.a(chǎn)xis('off')

        plt.imshow(augmented_image)

        #VerticalFlip

        transform = A.VerticalFlip(p=1)

        augmented_image = transform(image=input_img)['image']

        plt.figure(figsize=(4, 4))

        plt.a(chǎn)xis('off')

        plt.imshow(augmented_image)

        圖像縮放和旋轉(zhuǎn)

        該增強器隨機使用仿射變換來平移、縮放和旋轉(zhuǎn)輸入圖像。

        transform = A.ShiftScaleRotate(p=0.5)

        random.seed(7)

        augmented_image = transform(image=input_img)['image']

        plt.figure(figsize=(4, 4))

        plt.a(chǎn)xis('off')

        plt.imshow(augmented_image)

        圖像 ChannelShuffle

        該增強器隨機重新排列輸入圖像的 RGB 通道。

        from albumentations.a(chǎn)ugmentations.transforms import ChannelShuffle

        transform = ChannelShuffle(p=1.0)

        random.seed(7)

        augmented_image = transform(image=input_img)['image']

        plt.figure(figsize=(4, 4))

        plt.a(chǎn)xis('off')

        plt.imshow(augmented_image)

        圖像曝光

        該增強器反轉(zhuǎn)輸入圖像中大于某個閾值的所有像素值。

        from albumentations.a(chǎn)ugmentations.transforms import Solarize

        transform = Solarize(threshold=200,  p=1.0)

        augmented_image = transform(image=input_img)['image']

        plt.figure(figsize=(4, 4))

        plt.a(chǎn)xis('off')

        plt.imshow(augmented_image)

        反轉(zhuǎn)圖像

        通過從 255 中減去像素值,此增強器反轉(zhuǎn)輸入圖像。

        from albumentations.a(chǎn)ugmentations.transforms import InvertImg

        transform = InvertImg(p=1.0)

        augmented_image = transform(image=input_img)['image']

        plt.figure(figsize=(4, 4))

        plt.a(chǎn)xis('off')

        plt.imshow(augmented_image)

        使用 Compose 增強管道

        要定義一個擴展管道,首先,創(chuàng)建一個 Compose 實例。你必須提供擴充列表作為 Compose 類的參數(shù)。在此示例中,我們將使用各種增強功能,例如轉(zhuǎn)置、模糊、失真等。

        調(diào)用 Compose 將導(dǎo)致返回一個將進行圖像增強的轉(zhuǎn)換函數(shù)。

        transform = A.Compose([

           A.RandomRotate90(),

           A.Transpose(),

           A.ShiftScaleRotate(shift_limit=0.08, scale_limit=0.5, rotate_limit=5, p=.8),

           A.Blur(blur_limit=7),

           A.GridDistortion(),

        ])

        random.seed(2)

        augmented_image = transform(image=input_img)['image']

        plt.figure(figsize=(4, 4))

        plt.a(chǎn)xis('off')

        plt.imshow(augmented_image)

        SOLT

        SOLT 是一個深度學(xué)習(xí)數(shù)據(jù)增強庫,支持圖像、分割掩碼、標(biāo)簽和關(guān)鍵點。SOLT 也很快,并且在其后端有 OpenCV。

        我們將從使用 pip 命令安裝 SOLT 開始

        pip install solt

        然后我們將導(dǎo)入增強圖像數(shù)據(jù)所需的所有必要的 SOLT 包。

        import solt

        import solt.transforms as slt

        h, w, c = input_img.shape

        img = input_img[:w]

        在這里,我們將為擴充管道創(chuàng)建一個 Stream 實例。你必須提供擴充列表作為流類的參數(shù)。

        stream = solt.Stream([

           slt.Rotate(angle_range=(-90, 90), p=1, padding='r'),

           slt.Flip(axis=1, p=0.5),

           slt.Flip(axis=0, p=0.5),

           slt.Shear(range_x=0.3, range_y=0.8, p=0.5, padding='r'),

           slt.Scale(range_x=(0.8, 1.3), padding='r', range_y=(0.8, 1.3), same=False, p=0.5),

           slt.Pad((w, h), 'r'),

           slt.Crop((w, w), 'r'),

           slt.Blur(k_size=7, blur_type='m'),

           solt.SelectiveStream([

               slt.CutOut(40, p=1),

               slt.CutOut(50, p=1),

               slt.CutOut(10, p=1),

               solt.Stream(),

               solt.Stream(),

           ], n=3),

        ], ignore_fast_mode=True)

        fig = plt.figure(figsize=(17,17))

        n_augs = 10

        random.seed(2)

        for i in range(n_augs):

           img_aug = stream({'image': img}, return_torch=False, ).data[0].squeeze()

           ax = fig.a(chǎn)dd_subplot(1,n_augs,i+1)

           if i == 0:

               ax.imshow(img)

           else:

               ax.imshow(img_aug)

           ax.set_xticks([])

           ax.set_yticks([])

        plt.show()

        結(jié)論

        圖像增強可以幫助增加現(xiàn)有數(shù)據(jù)集。目前有幾個 Python 庫可用于圖像增強。在本文中,我們使用三個 Python 庫——Imgaug、Albalentations和Solt探索了不同的圖像增強技術(shù)。


               原文標(biāo)題 : 使用 3 個Python庫的圖像增強

        聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

        發(fā)表評論

        0條評論,0人參與

        請輸入評論內(nèi)容...

        請輸入評論/評論長度6~500個字

        您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

        暫無評論

        暫無評論

          掃碼關(guān)注公眾號
          OFweek人工智能網(wǎng)
          獲取更多精彩內(nèi)容
          文章糾錯
          x
          *文字標(biāo)題:
          *糾錯內(nèi)容:
          聯(lián)系郵箱:
          *驗 證 碼:

          粵公網(wǎng)安備 44030502002758號

          主站蜘蛛池模板: 精品人妻伦九区久久AAA片| 久久第九九| 亚洲熟女无码在线| 在线天堂中文字幕| 伊人网狼人| 蜜臂AV| 安塞县| 国产盗摄人妻精品一区| 久久99精品国产麻豆婷婷洗澡| 志丹县| 国产ts在线观看| 18禁久久久久久久| 招远市| 91视频日本| 欧美顶级metart祼体全部自慰| 眉山市| 撸色网| 熟女精品| 91色| 91sese| 激情婷婷五月天| 91成人社区| 超碰人人在线| 宁化县| 国产xxx| 国内a片| 国产精品a久久久久| 美女黄色网| 嫩呦囯产一区二区三区| 国产九九在线| 黄色影站| 丝袜精品字幕| 禹城市| 青青草99| 黄色国产在线| 2020日韩无码| 人妻精品久久久久中文字幕69| 外汇| 玉溪市| JIZZ亚洲| 91网站免费在线观看|