簡體   English   中英

我應該如何使用預訓練模型優化神經網絡進行圖像分類

[英]How should I optimize neural network for image classification using pretrained models

感謝您查看我的問題。 我正在嘗試基於一些預先訓練的模型進行圖像分類,圖像應分為40類。 我想使用VGG和Xception預訓練模型將每個圖像轉換為兩個1000維向量,並將它們堆疊成1 * 2000維度向量作為我的網絡輸入,並且網絡具有40維輸出。 網絡有2個隱藏層,一個有1024個神經元,另一個有512個神經元。

結構:image-> vgg(1 * 1000維),xception(1 * 1000維) - >(1 * 2000維)作為輸入 - > 1024個神經元 - > 512個神經元 - > 40個維度輸出 - > softmax

但是,使用這種結構我只能達到約30%的准確度。 所以我的問題是,如何優化網絡結構以獲得更高的准確度? 我不熟悉深度學習所以我不確定我目前的設計是“正確的”。 我真的很期待你的建議

我不完全確定我理解你的網絡架構,但有些部分看起來並不適合我。

有兩種主要的轉學習方案:

  • ConvNet作為固定特征提取器 采用預訓練網絡(VGG和Xception中的任何一個都可以,不需要兩者),刪除最后一個完全連接的層(此層的輸出是針對ImageNet等不同任務的1000級分數),然后處理其余的ConvNet作為新數據集的固定特征提取器。 例如,在AlexNet中,這將為包含緊接在分類器之前的隱藏層的激活的每個圖像計算4096-D向量。 為所有圖像提取4096-D代碼后,為新數據集訓練線性分類器(例如線性SVM或Softmax分類器)。

    提示#1:只接受一個預訓練網絡。

    提示#2:您的分類器不需要多個隱藏層。

  • 微調ConvNet 第二種策略是不僅在新數據集上替換和重新訓練ConvNet之上的分類器,而且還通過繼續反向傳播來微調預訓練網絡的權重。 可以微調ConvNet的所有層,或者可以保留一些早期層(由於過度擬合問題)並且僅微調網絡的某些更高級別部分。 這是因為觀察到ConvNet的早期特征包含更多通用特征(例如邊緣檢測器或顏色斑點檢測器),這些特征應該對許多任務有用,但后來的ConvNet層逐漸變得更加特定於類的細節。包含在原始數據集中。

    提示#3:保持早期預訓練層固定。

    提示#4:使用較小的學習速率進行微調,因為您不希望過快和過多地扭曲其他預訓練層。

這種架構更像我所看到的解決同樣問題的機構,並且具有更高的准確率。

當模型不合適時,您可以嘗試幾個步驟:

  1. 增加培訓時間,降低學習率。 它可能會停留在非常糟糕的局部最佳狀態。
  2. 添加可以為大量類提取特定功能的其他圖層。
  3. 為每個類創建多個兩類深層網絡(“是”或“否”輸出類)。 這將使每個網絡更加專業化,而不是培訓一個網絡來學習所有40個課程。
  4. 增加訓練樣本。

暫無
暫無

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

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