2017-08-17 93 views
1

我在對象檢測API中使用ssd_mobilenets來訓練我自己的模型,並獲取.ckpt文件。它在我的電腦上運行良好,但現在我想在手機上使用該模型。所以,我需要將其轉換爲.pb文件。我不知道該怎麼做,任何人都可以幫忙嗎?順便說一句,ssd_mobilenets的圖很複雜,我找不到哪個是模型的輸出。有沒有人知道輸出的名稱?如何將.ckpt文件轉換爲.pb

回答

0
  • 這是object_detection_tutorial.ipynb第四碼單元在這個環節 - https://github.com/tensorflow/models/blob/master/research/object_detection/object_detection_tutorial.ipynb

    # What model to download. 
    MODEL_NAME = 'ssd_mobilenet_v1_coco_2017_11_17' 
    MODEL_FILE = MODEL_NAME + '.tar.gz' 
    DOWNLOAD_BASE = 'http://download.tensorflow.org/models/object_detection/' 
    
    # Path to frozen detection graph. This is the actual model that is used for the object detection. 
    PATH_TO_CKPT = MODEL_NAME + '/frozen_inference_graph.pb' 
    
    # List of the strings that is used to add correct label for each box. 
    PATH_TO_LABELS = os.path.join('data', 'mscoco_label_map.pbtxt') 
    
    NUM_CLASSES = 90 
    
  • 現在小區明確表示,.pb文件名是/frozen_inference_graph.pb

  • 所以,你已經有了.pb文件你爲什麼要轉換?
  • 不管怎麼說,你可以參考凍結圖thsi鏈接:https://github.com/jayshah19949596/Tensorboard-Visualization-Freezing-Graph
  • 你需要使用tensorflow.python.tools.freeze_graph()功能轉換您.ckpt文件.pb文件
  • 下面的代碼行展示瞭如何做到這一點

    freeze_graph.freeze_graph(input_graph_path, 
              input_saver_def_path, 
              input_binary, 
              input_checkpoint_path, 
              output_node_names, 
              restore_op_name, 
              filename_tensor_name, 
              output_graph_path, 
              clear_devices, 
              initializer_nodes) 
    
    • input_graph_path:是.pb文件的路徑,您將在其中編寫圖形,並且此文件不會被凍結。您將使用tf.train.write_graph()寫的圖形
    • input_saver_def_path:你可以把它一個空字符串
    • input_binary:這是一個布爾值保持false,這樣genertaed文件不是二進制和人類可讀
    • input_checkpoint_path:路徑到.ckpt file
    • output_graph_path:要你寫pb文件
    • clear_devices路徑:布爾值...保持它的假
    • output_node_names:要明確SAV張量節點名稱È
    • restore_op_name:字符串值應爲 「保存/ RESTORE_ALL」
    • filename_tensor_name = 「保存/常數:0」
    • initializer_nodes = 「」