Keras.Net - 当模型是全局变量时,模型预测不会 return

Keras.Net - Model predict doesn't return when model is global variable

我正在尝试 运行 相机源上的模型。 因此我想加载模型并将其存储为全局变量并在帧进入时使用它。 当我为每个帧(在过程函数中)加载模型时它起作用但是当我将模型存储为全局变量时,预测线无限期挂起所以感觉资源在不应该的时候被释放了。

我怎样才能让它发挥作用?

private BaseModel model;

public void Initialize()
{
    model = BaseModel.LoadModel(networkPath);
}

public dynamic Process(Mat frame)
{
    var mat = new Mat();
    Cv2.Resize(frame, mat, inputSize);
    var image_in = mat.Convert(np.uint8);

    image_in = np.asfarray(image_in, np.float32);
    image_in /= 256;

    image_in = np.expand_dims(image_in, 0);

    var output = model.Predict(image_in);

    output = output[0];

    return (Input: image_in, Output: output);
}

我们遇到的问题与在多线程中使用 PythonEngine 有关。 现在我们初始化使用

if (!PythonEngine.IsInitialized) { PythonEngine.Initialize(); }
model = BaseModel.LoadModel(networkPath);
PythonEngine.BeginAllowThreads();

在我们的工作线程中我们有

using (Py.GIL()) {}

环绕我们的代码。