Open
Description
Description
public class tfDetEngine : DetectionEngine
{
private readonly Session _session;
public tfDetEngine(string modelPath, string labelPath) : base(modelPath, labelPath)
{
_session = Session.LoadFromSavedModel(modelPath);
}
public override IEnumerable<Detection> Detect(Tensor image)
{
using (_session)
{
try
{
var tensors = _session?.eval(image);
if (tensors != null)
{
var boxesP = tensors["detection_boxes"].ToArray<float>();
var boxes = new float[boxesP.Length / 4][];
for (int i = 0; i < boxesP.Length; i += 4)
{
boxes[i / 4] = new float[] { boxesP[i], boxesP[i + 1], boxesP[i + 2], boxesP[i + 3] };
}
var scores = tensors["detection_scores"].ToArray<float>();
var classes = tensors["detection_classes"].ToArray<float>();
var detectedObjects = boxes.Select((box, i) => new Detection
{
Box = box,
Score = scores[i],
Class = classes[i]
});
return detectedObjects;
}
return new List<Detection>();
}
catch (NullReferenceException e)
{
return new List<Detection>();
}
}
}
I keep getting NullReferenceException thrown in Tensorflow.Binding.dll whenever I try to evaluate the model with a (512, 512, 3) sized image tensor
Metadata
Metadata
Assignees
Labels
No labels