| @@ -32,7 +32,7 @@ namespace TensorFlowNET.Examples | |||||
| { | { | ||||
| public bool Enabled { get; set; } = true; | public bool Enabled { get; set; } = true; | ||||
| public string Name => "Object Detection"; | public string Name => "Object Detection"; | ||||
| public bool IsImportingGraph { get; set; } = false; | |||||
| public bool IsImportingGraph { get; set; } = true; | |||||
| public float MIN_SCORE = 0.5f; | public float MIN_SCORE = 0.5f; | ||||
| @@ -42,16 +42,34 @@ namespace TensorFlowNET.Examples | |||||
| string labelFile = "mscoco_label_map.pbtxt"; | string labelFile = "mscoco_label_map.pbtxt"; | ||||
| string picFile = "input.jpg"; | string picFile = "input.jpg"; | ||||
| NDArray imgArr; | |||||
| public bool Run() | public bool Run() | ||||
| { | { | ||||
| PrepareData(); | PrepareData(); | ||||
| // read in the input image | // read in the input image | ||||
| var imgArr = ReadTensorFromImageFile(Path.Join(imageDir, "input.jpg")); | |||||
| imgArr = ReadTensorFromImageFile(Path.Join(imageDir, "input.jpg")); | |||||
| var graph = IsImportingGraph ? ImportGraph() : BuildGraph(); | |||||
| with(tf.Session(graph), sess => Predict(sess)); | |||||
| var graph = new Graph().as_default(); | |||||
| return true; | |||||
| } | |||||
| public Graph ImportGraph() | |||||
| { | |||||
| var graph = new Graph().as_default(); | |||||
| graph.Import(Path.Join(modelDir, pbFile)); | graph.Import(Path.Join(modelDir, pbFile)); | ||||
| return graph; | |||||
| } | |||||
| public void Predict(Session sess) | |||||
| { | |||||
| var graph = tf.get_default_graph(); | |||||
| Tensor tensorNum = graph.OperationByName("num_detections"); | Tensor tensorNum = graph.OperationByName("num_detections"); | ||||
| Tensor tensorBoxes = graph.OperationByName("detection_boxes"); | Tensor tensorBoxes = graph.OperationByName("detection_boxes"); | ||||
| Tensor tensorScores = graph.OperationByName("detection_scores"); | Tensor tensorScores = graph.OperationByName("detection_scores"); | ||||
| @@ -59,16 +77,11 @@ namespace TensorFlowNET.Examples | |||||
| Tensor imgTensor = graph.OperationByName("image_tensor"); | Tensor imgTensor = graph.OperationByName("image_tensor"); | ||||
| Tensor[] outTensorArr = new Tensor[] { tensorNum, tensorBoxes, tensorScores, tensorClasses }; | Tensor[] outTensorArr = new Tensor[] { tensorNum, tensorBoxes, tensorScores, tensorClasses }; | ||||
| with(tf.Session(graph), sess => | |||||
| { | |||||
| var results = sess.run(outTensorArr, new FeedItem(imgTensor, imgArr)); | |||||
| NDArray[] resultArr = results.Data<NDArray>(); | |||||
| buildOutputImage(resultArr); | |||||
| }); | |||||
| var results = sess.run(outTensorArr, new FeedItem(imgTensor, imgArr)); | |||||
| return true; | |||||
| NDArray[] resultArr = results.Data<NDArray>(); | |||||
| buildOutputImage(resultArr); | |||||
| } | } | ||||
| public void PrepareData() | public void PrepareData() | ||||
| @@ -159,29 +172,8 @@ namespace TensorFlowNET.Examples | |||||
| } | } | ||||
| } | } | ||||
| public Graph ImportGraph() | |||||
| { | |||||
| throw new NotImplementedException(); | |||||
| } | |||||
| public Graph BuildGraph() | |||||
| { | |||||
| throw new NotImplementedException(); | |||||
| } | |||||
| public void Train(Session sess) | |||||
| { | |||||
| throw new NotImplementedException(); | |||||
| } | |||||
| public void Predict(Session sess) | |||||
| { | |||||
| throw new NotImplementedException(); | |||||
| } | |||||
| public void Test(Session sess) | |||||
| { | |||||
| throw new NotImplementedException(); | |||||
| } | |||||
| public Graph BuildGraph() => throw new NotImplementedException(); | |||||
| public void Train(Session sess) => throw new NotImplementedException(); | |||||
| public void Test(Session sess) => throw new NotImplementedException(); | |||||
| } | } | ||||
| } | } | ||||