我的对象检测项目有一些问题。我有一个使用 tensorflowsharp nuget 的工作解决方案。我正在尝试加快检测速度,并且想尝试使用 YOLO 模型。
我正在使用 darkflow 让 YOLO 与 Tensorflow 一起工作。我在我的自定义数据集上训练了我的模型,然后我使用暗流页面上的说明冻结了它。我现在有我的 PB 文件和一个元文件,到目前为止一切顺利。
然后我在 tensorflowsharp 项目中调整了我的代码,指向刚刚创建的 protobuf 并调整了输入输出变量的名称,来自:
String[] outputs = { "detection_boxes:0", "detection_scores:0", "detection_classes:0", "num_detections:0" };
runner.AddInput("image_tensor:0", tensor).Fetch(outputs);
try
{
output = runner.Run();
}
catch (TFException e)
{
Console.WriteLine(e.ToString());
}
至:
runner.AddInput("input:0", tensor).Fetch("output:0");
try
{
output = runner.Run();
}
catch (TFException e)
{
Console.WriteLine(e.ToString());
}
遵循暗流文档中的变量名称。我能够向会话添加输入和输出指针,但是当我开始运行检测 ( Runner.Run
) 时,我得到一个异常:
TensorFlow.TFException: Expects arg[0] to be float but uint8 is provided
Runner.Run()
返回空值。
在我找到的文档中,我不确定暗流中输出张量的名称是什么:
输入张量和输出张量的名称分别为“输入”和“输出”。有关此 protobuf 文件的进一步使用,请在此处参考 Tensorflow on C++ API 的官方文档。
但我希望不同的集合(张量)作为返回类型,因为它适用于 SSD 和其他模型,对吧?