簡體   English   中英

如何減少 Tensorflow 的對象檢測 API 中的訓練步驟數?

[英]How to reduce the number of training steps in Tensorflow's Object Detection API?

我正在按照Dat Trans示例使用 TensorFlow 的對象檢測器 API 訓練我自己的對象檢測器。

我成功地開始訓練自定義對象。 我正在使用 CPU 來訓練模型,但完成 100 個訓練步驟大約需要 3 小時。 我想我必須更改.config一些參數。

我試圖將.ckpt轉換為.pb ,我參考了這篇文章,但我仍然無法轉換

1)如何減少訓練步數?
2)有沒有辦法將.ckpt轉換為.pb

我不認為你可以減少訓練步驟的數量,但你可以在任何檢查點( ckpt )停止,然后將其轉換為.pb文件
從 TensorFlow 模型 git 存儲庫中,您可以使用export_inference_graph.py
和以下代碼

python tensorflow_models/object_detection/export_inference_graph.py \
--input_type image_tensor \
--pipeline_config_path architecture_used_while_training.config \
--trained path_to_saved_ckpt/model.ckpt-NUMBER \
--output_directory model/

其中NUMBER是指您最近保存的檢查點文件編號,但是如果您在 tensorboard 中發現它更好,您可以使用較舊的檢查點文件

1)恐怕沒有有效的方法來“減少”訓練步驟。 使用更大的批量可能會導致“更快”的訓練(例如,在較少的步驟中達到高精度),但每個步驟都需要更長的時間來計算,因為您在 CPU 上運行。 使用輸入圖像分辨率可能會加快速度,但代價是精度較低。 您真的應該考慮遷移到配備 GPU 的機器上。

2) .pb文件(及其相應的文本版本.pbtxt )默認僅包含圖形的定義。 如果你凍結你的圖表,你會采取一個檢查點,獲取圖表中定義的所有變量,將它們轉換為常量,並將存儲在檢查點中的值分配給它們。 您通常這樣做是為了將經過訓練的模型發送給使用它的任何人,但這在訓練階段是無用的。

我強烈建議找到一種方法來加快每個訓練步驟的運行時間,而不是減少訓練步驟的數量。 最好的方法是使用 GPU。 如果你不能這樣做,你可以考慮降低圖像分辨率或使用更輕的網絡。

要轉換為凍結推理圖(.pb 文件),請參閱此處的文檔: https : //github.com/tensorflow/models/blob/master/research/object_detection/g3doc/exporting_models.md

是的,.config 文件中有一個參數,您可以在其中盡可能減少步驟數。 num_steps:在 .config 文件中,它實際上是訓練中的時期數。

但請記住,不建議減少太多。因為如果減少太多,您的損失函數不會減少太多,這會給您帶來糟糕的輸出。

所以繼續觀察損失函數,一旦它低於 1 ,那么你就可以開始單獨測試你的模型,你的訓練就會發生。

1. 是的,有一種方法可以改變訓練步驟的數量:

試試這個,

python model_main_tf2.py --pipeline_config_path="config_path_here" --num_train_steps=5000 --model_dir="model_dir_here" --alsologtostderr

這里我將訓練步數設置為 5000

2. 是的,有一種方法可以將檢查點轉換為 .pb:

試試這個,

python exporter_main_v2.py --trained_checkpoint_dir="checkpoint_dir_here" --pipeline_config_path="config_path_here" --output_directory "output_dir_here"

這將創建一個目錄,用於保存檢查點和 .pb 文件。

暫無
暫無

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

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