Object Detection API(4)—— Freeze Model模型導出

Object Detection API4)——?Freeze Model模型導出

博客:https://blog.csdn.net/qq_34106574

簡書:http://www.itdecent.cn/u/fb86cd4f8bf8

上一節(jié)使用自定義record數(shù)據(jù)進行模型訓練和測試,本節(jié)將訓練模型導出為pb格式,方便程序調用,后面還會介紹如何使用opencv的c++程序來調用訓練好的模型。

1,導出模型:

object_detection目錄下還提供了export_inference_graph.py。直接調用執(zhí)行命令如下:

python ../research/object_detection/export_inference_graph.py --input_type image_tensor --pipeline_config_path train/faster_rcnn_resnet101_coco.config --trained_checkpoint_prefix train/model.ckpt-1738 ?--output_directory out

導出完成后,在out目錄下,會生成frozen_inference_graph.pb、model.ckpt.data-00000-of-00001、model.ckpt.meta、model.ckpt.data文件。如下圖:

?


2,調用接口測試:

(1)添加mymodel在object_detection目錄,將pb文件放置在data目錄,將測試圖像放在test_images目錄.

?

(2)修改object_detection_tutorial.ipynb

(3)在object_detection目錄執(zhí)行命令如下:

jupyter notebookobject_detection_tutorial.ipynb

?

(4)測試結果如下:


3,調用方式2:

打開pycharm,建立工程,運行以下程序:

?

import cv2

import numpy as?np

import tensorflow as?tffrom?object_detection.utils import label_map_utilfrom?object_detection.utils import visualization_utils as?vis_util


class?TOD(object):

????def __init__(self):

????????self.PATH_TO_CKPT = r'XXXX\models-master\object_detection\train\frozen_inference_graph.pb'

????????self.PATH_TO_LABELS = r'XXXX\models-master\object_detection\train\my_label_map.pbtxt'

????????self.NUM_CLASSES = 1

????????self.detection_graph = self._load_model()

????????self.category_index = self._load_label_map()


????def _load_model(self):

????????detection_graph = tf.Graph()

????????with detection_graph.as_default():

????????????od_graph_def = tf.GraphDef()

????????????with tf.gfile.GFile(self.PATH_TO_CKPT, 'rb') as?fid:

????????????????serialized_graph = fid.read()

????????????????od_graph_def.ParseFromString(serialized_graph)

????????????????tf.import_graph_def(od_graph_def, name='')

????????return?detection_graph


????def _load_label_map(self):

????????label_map = label_map_util.load_labelmap(self.PATH_TO_LABELS)

????????categories = label_map_util.convert_label_map_to_categories(label_map,

????????????????????????????????????????????????????????????????????max_num_classes=self.NUM_CLASSES,

????????????????????????????????????????????????????????????????????use_display_name=True)

????????category_index = label_map_util.create_category_index(categories)

????????return?category_index


????def detect(self, image):

????????with self.detection_graph.as_default():

????????????with tf.Session(graph=self.detection_graph) as?sess:

????????????????# Expand dimensions since the model expects images to have shape: [1, None, None, 3]

????????????????image_np_expanded = np.expand_dims(image, axis=0)

????????????????image_tensor = self.detection_graph.get_tensor_by_name('image_tensor:0')

????????????????boxes = self.detection_graph.get_tensor_by_name('detection_boxes:0')

????????????????scores = self.detection_graph.get_tensor_by_name('detection_scores:0')

????????????????classes = self.detection_graph.get_tensor_by_name('detection_classes:0')

????????????????num_detections = self.detection_graph.get_tensor_by_name('num_detections:0')

????????????????# Actual detection.

????????????????(boxes, scores, classes, num_detections) = sess.run(

????????????????????[boxes, scores, classes, num_detections],

????????????????????feed_dict={image_tensor: image_np_expanded})

????????????????# Visualization of the results of a detection.

????????????????vis_util.visualize_boxes_and_labels_on_image_array(

????????????????????image,

????????????????????np.squeeze(boxes),

????????????????????np.squeeze(classes).astype(np.int32),

????????????????????np.squeeze(scores),

????????????????????self.category_index,

????????????????????use_normalized_coordinates=True,

????????????????????line_thickness=8)


????????cv2.imshow("Resault", image)

????????cv2.waitKey(0)

if?__name__ == '__main__':

????image = cv2.imread('test.jpg')

????detecotr = TOD()

????detecotr.detect(image)

?

參考資料

[if !supportLists][1]?[endif]https://www.cnblogs.com/qcloud1001/p/7677661.html

?

?

注:更多內容分享及源碼獲取歡迎關注微信公眾號:ML_Study


版權聲明:本文為博主原創(chuàng)文章,轉載請聯(lián)系作者取得授權。https://blog.csdn.net/qq_34106574/article/category/7628923?

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容