This is cmd reference
工具
- Tensorflow 2.5
- python 3.8
- OpenCVSharp
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
onnx/tensorflow-onnx#1557 Protobuf has solved this with a cpp release for windows. Solve with:
pip uninstall protobuf
pip install protobuf
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以上比较合适。
- 卷积层数量更多,收敛更快