簡體   English   中英

keras/tensorflow中圖像分類的神經網絡優化

[英]Neural Network optimization for image classification in keras/tensorflow

我正在編寫一個程序,用於將圖像分為兩類:“電線”和“非電線”。 我手工標記了大約 5000 張顯微鏡圖像,例如:

非電線

在此處輸入圖像描述

金屬絲

在此處輸入圖像描述

我使用的神經網絡改編自“Deep Learning with Python”,關於卷積網絡的章節(我不認為卷積網絡在這里是必要的,因為沒有明顯的層次結構;密集網絡應該更合適):

model = models.Sequential()
model.add(layers.Dense(32, activation='relu',input_shape=(200,200,3)))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Dense(32, activation='relu'))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Flatten())
model.add(layers.Dense(256, activation='relu'))
model.add(layers.Dense(2, activation='softmax'))

然而,在使用網絡參數時,經過 10 輪訓練后的測試准確率不會超過 92%。 訓練圖像包含大約 1/3 的電線,2/3 的非電線。 我的問題:您是否發現這種神經網絡設計中有任何明顯的錯誤會抑制准確性,或者您是否認為我受到圖像質量的限制? 我有大約 4000 個訓練圖像和 1000 個測試圖像。

通過嘗試使用權重字典處理 class 不平衡,您可能會獲得一些改進。 如果非電線的 label 為 0,電線的 label 為 1,那么權重字典將為

weight_dict= { 0:.5, 1:1}

在 model.fit 設置

 class_weight=weight_dict .

在沒有看到訓練結果(訓練損失和驗證損失)的情況下,不知道還能做什么。 如果您過度擬合,請嘗試添加一些 dropout 層。 還建議您嘗試使用 keras 回調 ReduceLROnPlateau 使用可調整學習,並使用 keras 回調 EarlyStopping 提前停止。 文檔在這里。 設置每個回調以監控驗證丟失。 我建議的代碼如下所示:

reduce_lr=tf.keras.callbacks.ReduceLROnPlateau(
          monitor="val_loss",factor=0.5, patience=2, verbose=1)
e_stop=tf.keras.callbacks.EarlyStopping( monitor="val_loss", patience=5, 
          verbose=0,  restore_best_weights=True)
callbacks=[reduce_lr, e_stop]

在 model.fit 中包括

callbacks=callbacks

如果你想嘗試卷積網絡,我建議使用 Mobilenetmodel 進行遷移學習。 文檔在這里。 . 我的推薦代碼如下:

base_model=tf.keras.applications.mobilenet.MobileNet( include_top=False, 
          input_shape=(200,200,3) pooling='max', weights='imagenet',dropout=.4) 
x=base_model.output
x=keras.layers.BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001 )(x)
x = Dense(1024, activation='relu')(x)
x=Dropout(rate=.3, seed=123)(x) 
output=Dense(2, activation='softmax')(x)
model=Model(inputs=base_model.input, outputs=output)
model.compile(Adamax(lr=.001),loss='categorical_crossentropy',metrics= 
              ['accuracy'] )

在 model.fit 中包含如上所示的回調。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM