利用ResNet預測瑕疵檢測的分類

餘生
Jun 26, 2021

--

原本在想哪種NN架構比較適合,直到看了這篇"基於深度卷積神經網路之印刷電路板影像瑕疵分類",裡面有提到比較常見的NN,例如LeNet、AlexNet、GoogLeNet、ResNet等等,於是Model的準確度比較中選了最高的ResNet50,不過值得注意的是 GoogLeNet並非如圖中的這麼差,作者有提到是Data Preprocessing處理方式不一樣照成的結果。

Out of Memory

後來遇到了GPU上的記憶體不足,於是把Batch size從32調到16,結果發現val_loss震盪的很嚴重,Epoch超過15後也沒有逐漸收斂的趨勢。

這篇中提到的幾點,batch_size太小、資料分布不平均都有可能出現震盪的問題,因為記憶體不足所以想把batch_size調大不是一個可行的方法,開始從資料著手,結果發現Tensorflow的image_dataset_from_directory的shuffle設為True,會發現和Label對不上(這些Label都是從CSV檔案照順序讀進來的)。搞了半天原來是一開始的資料就不對,修正後training就有逐漸在收斂了。最後上傳到測試平台的 Testing accuracy為96.06%。

Batch Size

原本在想要把Batch Size調到多少才可以,從 A disciplined approach to neural network hyper-parameters 當中提到盡可能調高,並且從實驗數據中可以看到,Batch Size 分別等於128、256、512、1024時,Test Accuracy 並沒有多大的差別(誤差約1%~2%),而 Test Loss 在Batch Size = 256和512時也沒有多大的差距,但1024跟128比較時大約差0.3左右,就有比較明顯的落差。

結論

  1. Data preprocessing 的重要性,不論是各個Model適合的前處理方式,或確認資料的正確性都會影響最終的結果
  2. Batch Size大小似乎會影響訓練的時間以及validation loss,但具體為何會影響、如何影響還不清楚

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

餘生
餘生

Written by 餘生

0 Followers

正在北大當菸酒生

No responses yet

Write a response