簡體   English   中英

如何在 tensorflow 中使用預訓練的 object 檢測?

[英]How to use a pre-trained object detection in tensorflow?

如何在我的 tensorflow 項目中使用預訓練網絡的權重? 我知道一些關於這方面的理論信息,但沒有關於 tensorflow 編碼的信息。

正如@Matias Valdenegro 在評論中指出的那樣,您的第一個問題沒有意義。 但是,對於您的第二個問題,有多種方法可以做到這一點。 您正在搜索的術語是遷移學習 (TL)。 TL 意味着將“知識”(基本上只是權重)從預訓練的 model 轉移到 model 中。 現在有幾種類型的TL。

1)您將整個權重從預訓練的 model 轉移到 model 中,並以此為起點來訓練您的網絡。

  • 這是在您現在有額外數據來訓練 model 但您不想重新開始訓練的情況下完成的。 因此,您只需從之前的 model 加載權重並繼續訓練。

2)您只將部分權重從預訓練的 model 轉移到新的 model 中。

  • 這是在您有一個 model 訓練來在 5 類對象之間進行分類的情況下完成的。 現在,您要添加/刪除 class。 如果您添加的新 class 具有與(一個)現有類有些相似的功能,則您不必從一開始就重新訓練整個網絡。 因此,您構建另一個 model,其架構與之前的 model 完全相同,除了全連接層,現在您有不同的 output 大小。 在這種情況下,您需要從之前的 model 加載卷積層的權重並凍結它們,同時只重新訓練全連接層。

要在 Tensorflow 中執行這些操作,

1) 第一種類型的 TL 可以通過創建一個 model 的相同架構的 model 來執行,然后使用tf模塊簡單地加載 model 並繼續訓練。

2) 第二種類型的 TL 可以通過創建一個 model 來執行,對於要保留權重的部分具有相同的確切架構,然后從之前的預訓練權重中指定要加載的權重名稱. 您可以使用參數“trainable=False”來防止 Tensorflow 更新它們。

我希望這有幫助。

暫無
暫無

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

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