iT邦幫忙

2024 iThome 鐵人賽

DAY 8
0
AI/ ML & Data

輕鬆上手AI專案-影像分類到部署模型系列 第 8

[Day 8] 資料增強的方法 (2):以新增 Layer 實現

  • 分享至 

  • xImage
  •  

前言

昨天介紹使用 ImageDataGenerator() 做資料增強,是以資料生成器來執行,今天要介紹的是資料增強也可以是模型的一部分,使用 tf.keras.layers 新增層的方式來完成。

使用方法

回顧昨天使用 ImageDataGenerator() 的方式:

trdata = ImageDataGenerator(rescale = 1./255,
                            rotation_range=45,
                            width_shift_range=0.2,
                            height_shift_range=0.2,
                            zoom_range=0.2,
                            horizontal_flip=True
          )

若改成以 tf.keras.layers 去新增資料增強層的方式,在建立模型時可以使用:

from tensorflow.keras import layers
from tensorflow.keras.models import Sequential

data_augmentation = tf.keras.Sequential(
    [   layers.Rescaling(1./255),
        layers.RandomRotation(0.25), # 對應 rotation_range=45 (0.25 為 45 度的比例)
        layers.RandomTranslation(0.2, 0.2), # 對應 height_shift_range=0.2 及 width_shift_range=0.2
        layers.RandomZoom(0.2),
        layers.RandomFlip('horizontal'),
    ]
)

使用生成器 ImageDataGenerator() 和新增資料增強層這兩種方法差別,前者為將資料集輸入模型前,設定好生成器的參數,以批量生成的方式來實現資料增強,後者的資料增強是在模型內進行,為模型的一部分。

例如模型程式碼:

# 先定義好資料增強層
data_augmentation = tf.keras.Sequential(
    [
        layers.RandomFlip('horizontal'),
        layers.RandomRotation(0.1),
        layers.RandomZoom(0.2),
    ]
)
inputs = tf.keras.Input(shape=(256, 256, 3)) # 定義模型輸入
base_model = data_augmentation(inputs) # 接上資料增強層
base_model = VGG16(include_top=False, weights='imagenet', input_tensor=base_model) # 接上模型
...(略)
model.summary()

使用 model.summary() 可以查看模型內容:
https://ithelp.ithome.com.tw/upload/images/20240913/20166645sJqmayoQxz.png
可以看到第二行的 sequential (Sequential) 即資料增強層,為模型的一部分。

註:這裡主要是介紹此種資料增強方式,所以程式碼僅是簡單舉例,之後到模型實作的時候會有詳細的程式碼。

範例

使用下列程式碼中的資料增強層的方法:

data_augmentation = tf.keras.Sequential(
    [
        layers.RandomRotation(0.4),
        layers.RandomTranslation(0.2, 0.2),
        layers.RandomZoom(0.2),
        layers.RandomFlip('horizontal'),
    ]
)

顯示 10 張使用資料增強層的影像:
https://ithelp.ithome.com.tw/upload/images/20240914/201666457XcCR4unM1.png

之後實作可以試試看兩種方法,或是嘗試其他的資料增強方法。

明天就要開始介紹模型建構的方式了!

參考資料


上一篇
[Day 7] 資料增強的方法 (1):ImageDataGenerator
下一篇
[Day 9] 模型建構的方法 (1):序列式模型
系列文
輕鬆上手AI專案-影像分類到部署模型30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言