xin-pu / TFLearning

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Opencv Call Model Generate by Tensorflow

This is cmd reference

工具

  • Tensorflow 2.5
  • python 3.8
  • OpenCVSharp

Tensofflow

转换Tensorflow PB 模型 到 onnx

使用tf2onnx模块

    python -m tf2onnx.convert --saved-model D:\DataSets\Model --output resnet50.onnx
    python -m tf2onnx.convert --saved-model D:\DataSets\GrabModule\Model --output grab.onnx
    python -m tf2onnx.convert --saved-model D:\DataSets\GrabModule\Model --output D:\Xin.Pu\AutoLoading\grab.onnx
windows + Python3.8 直接转换很慢的处理办法

onnx/tensorflow-onnx#1557 Protobuf has solved this with a cpp release for windows. Solve with:

     pip uninstall protobuf
     pip install protobuf

OpenCV - DNN

var cnn = CvDnn.ReadNetFromOnnx(model);
if (cnn == null) return;

注意点

  • 通过BlobFromImage/BlobFromImage转换图像到与tensorflowDims==4的张量形式
  • 如果Tensorflow训练的图像经过Resize 和 归一等预处理,在这里也需要对应。
  • swapRB,crop 训练时没有做其他处理,这里全部关掉
var image = Cv2.ImRead(filename, ImreadModes.Grayscale);
var inputBlob = CvDnn.BlobFromImage(image, 1F / 255, new Size(64, 64), 
                                    swapRB: false, 
                                    crop: false);

net.SetInput(inputBlob);
var result = net.Forward();
PrintMatrixProb(result);
result.GetArray(out float[] data);
var max = data.ToList().IndexOf(data.Max()) + 1;
return max;
  • 优先调整 卷积核数,激活方法。
  • 学习率迭代因子,定义0.5以上比较合适。
  • 卷积层数量更多,收敛更快

About


Languages

Language:Python 100.0%