<address id="xpn9n"></address>
<p id="xpn9n"></p>
      <dfn id="xpn9n"><nobr id="xpn9n"><menuitem id="xpn9n"></menuitem></nobr></dfn>

        <form id="xpn9n"></form>

        <address id="xpn9n"></address>

        <address id="xpn9n"><listing id="xpn9n"><meter id="xpn9n"></meter></listing></address>

            <dfn id="xpn9n"><listing id="xpn9n"><menuitem id="xpn9n"></menuitem></listing></dfn>

                教育行業A股IPO第一股(股票代碼 003032)

                全國咨詢/投訴熱線:400-618-4000

                大規模數據集常用的圖像增強方法有哪些?

                更新時間:2022年08月12日14時05分 來源:傳智教育 瀏覽次數:

                大規模數據集是成功應用深度神經網絡的前提。例如,我們可以對圖像進行不同方式的裁剪,使感興趣的物體出現在不同位置,從而減輕模型對物體出現位置的依賴性。我們也可以調整亮度、色彩等因素來降低模型對色彩的敏感度??梢哉f,在當年AlexNet的成功中,圖像增強技術功不可沒。

                常用的圖像增強方法

                圖像增強(image augmentation)指通過剪切、旋轉/反射/翻轉變換、縮放變換、平移變換、尺度變換、對比度變換、噪聲擾動、顏色變換等一種或多種組合數據增強變換的方式來增加數據集的大小。圖像增強的意義是通過對訓練圖像做一系列隨機改變,來產生相似但又不同的訓練樣本,從而擴大訓練數據集的規模,而且隨機改變訓練樣本可以降低模型對某些屬性的依賴,從而提高模型的泛化能力。

                常見的圖像增強方式可以分為兩類:幾何變換類和顏色變換類

                幾何變換類,主要是對圖像進行幾何變換操作,包括翻轉,旋轉,裁剪,變形,縮放等。

                幾何變換類圖像增強

                顏色變換類,指通過模糊、顏色變換、擦除、填充等方式對圖像進行處理。

                顏色變換類

                實現圖像增強可以通過tf.image來完成,也可以通過tf.keras.imageGenerator來完成。

                tf.image進行圖像增強

                導入所需的工具包并讀取要處理的圖像:

                # 導入工具包
                import tensorflow as tf
                import matplotlib.pyplot as plt
                import numpy as np
                # 讀取圖像并顯示
                cat = plt.imread('./cat.jpg')
                plt.imshow(cat)

                翻轉和裁剪

                左右翻轉圖像是最早也是最廣泛使用的一種圖像增廣方法??梢酝ㄟ^tf.image.random_flip_left_right來實現圖像左右翻轉。

                # 左右翻轉并顯示
                cat1 = tf.image.random_flip_left_right(cat)plt.imshow(cat1)
                正向

                創建tf.image.random_flip_up_down實例來實現圖像的上下翻轉,上下翻轉使用的較少。

                # 上下翻轉
                cat2 = tf.image.random_flip_up_down(cat)plt.imshow(cat2)
                上下翻轉

                隨機裁剪出一塊面積為原面積10%∼100%10%∼100%的區域,且該區域的寬和高之比隨機取自0.5∼20.5∼2,然后再將該區域的寬和高分別縮放到200像素。

                # 隨機裁剪
                cat3 = tf.image.random_crop(cat,(200,200,3))
                plt.imshow(cat3)
                隨機裁剪

                顏色變換

                另一類增廣方法是顏色變換。我們可以從4個方面改變圖像的顏色:亮度、對比度、飽和度和色調。接下來將圖像的亮度隨機變化為原圖亮度的50%50%(即1−0.51−0.5)∼150%∼150%(即1+0.51+0.5)。

                cat4=tf.image.random_brightness(cat,0.5) 
                plt.imshow(cat4)
                顏色變換

                類似地,我們也可以隨機變化圖像的色調:

                cat5 = tf.image.random_hue(cat,0.5)
                plt.imshow(cat5)
                隨機變化色調

                使用ImageDataGenerator()進行圖像增強

                ImageDataGenerator()是keras.preprocessing.image模塊中的圖片生成器,可以在batch中對數據進行增強,擴充數據集大小,增強模型的泛化能力。比如旋轉,變形等,如下所示:

                keras.preprocessing.image.ImageDataGenerator(
                               rotation_range=0, #整數。隨機旋轉的度數范圍。
                               width_shift_range=0.0, #浮點數、寬度平移
                               height_shift_range=0.0, #浮點數、高度平移
                               brightness_range=None, # 亮度調整
                               shear_range=0.0, # 裁剪
                               zoom_range=0.0, #浮點數 或 [lower, upper]。隨機縮放范圍
                               horizontal_flip=False, # 左右翻轉
                               vertical_flip=False, # 垂直翻轉
                               rescale=None # 尺度調整
                            )

                來看下水平翻轉的結果:

                # 獲取數據集
                (x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
                # 將數據轉換為4維的形式
                x_train = X_train.reshape(X_train.shape[0],28,28,1)
                x_test = X_test.reshape(X_test.shape[0],28,28,1)
                # 設置圖像增強方式:水平翻轉
                datagen = ImageDataGenerator(horizontal_flip=True)
                # 查看增強后的結果
                for X_batch,y_batch in datagen.flow(x_train,y_train,batch_size=9):
                    plt.figure(figsize=(8,8)) # 設定每個圖像顯示的大小
                    # 產生一個3*3網格的圖像
                    for i in range(0,9):
                        plt.subplot(330+1+i) 
                        plt.title(y_batch[i])
                        plt.axis('off')
                        plt.imshow(X_batch[i].reshape(28,28),cmap='gray')
                    plt.show()
                    break
                0 分享到:
                你有多久没被C过了

                <address id="xpn9n"></address>
                <p id="xpn9n"></p>
                    <dfn id="xpn9n"><nobr id="xpn9n"><menuitem id="xpn9n"></menuitem></nobr></dfn>

                      <form id="xpn9n"></form>

                      <address id="xpn9n"></address>

                      <address id="xpn9n"><listing id="xpn9n"><meter id="xpn9n"></meter></listing></address>

                          <dfn id="xpn9n"><listing id="xpn9n"><menuitem id="xpn9n"></menuitem></listing></dfn>