diff --git a/src/eynollah/training/convert.py b/src/eynollah/training/convert.py index 5bf30a1..7351356 100644 --- a/src/eynollah/training/convert.py +++ b/src/eynollah/training/convert.py @@ -99,7 +99,12 @@ def convert_cli(rebuild, format_, in_, out): model.export(out) elif format_ == "onnx": import tf2onnx + import onnx tf2onnx.convert.from_keras(model, opset=18, output_path=out) + model = onnx.load(out) + model = onnx.shape_inference.infer_shapes(model, strict_mode=True) + onnx.checker.check_model(model, full_check=True) + onnx.save(model, out) else: raise ValueError("unknown output format '%s'" % format_) diff --git a/src/eynollah/training/reload-models-v0.8.mk b/src/eynollah/training/reload-models-v0.8.mk index 022603e..342d211 100644 --- a/src/eynollah/training/reload-models-v0.8.mk +++ b/src/eynollah/training/reload-models-v0.8.mk @@ -38,7 +38,7 @@ $(MODELS_DST)/%: $(MODELS_SRC)/% --in $< \ --format $(FORMAT) \ --out $@ \ - 2>&1 | tee $(notdir $<).$(FORMAT).log + > $(notdir $<).$(FORMAT).log 2>&1 || { cat $(notdir $<).$(FORMAT).log; false; } $(MODELS_DST)/%.keras: $(MODELS_SRC)/% eynollah-training convert \ @@ -46,7 +46,7 @@ $(MODELS_DST)/%.keras: $(MODELS_SRC)/% --in $< \ --format keras \ --out $@ \ - 2>&1 | tee $(notdir $<).keras.log + > $(notdir $<).keras.log 2>&1 || { cat $(notdir $<).keras.log; false; } $(MODELS_DST)/%.h5: $(MODELS_SRC)/% eynollah-training convert \ @@ -54,18 +54,15 @@ $(MODELS_DST)/%.h5: $(MODELS_SRC)/% --in $< \ --format hdf5 \ --out $@ \ - 2>&1 | tee $(notdir $<).hdf5.log + > $(notdir $<).hdf5.log 2>&1 || { cat $(notdir $<).hdf5.log; false; } $(MODELS_DST)/%.onnx: $(MODELS_SRC)/% - if jq -e '.task == "segmentation" and .backbone_type == "transformer"' $/dev/null; then \ - echo skipping $@: vision transformer architecture currently does not work with ONNX; \ - else \ eynollah-training convert \ $(and $(wildcard $&1 | tee $(notdir $<).onnx.log; fi + > $(notdir $<).onnx.log 2>&1 || { cat $(notdir $<).onnx.log; false; } compare: for i in `find $(MODELS_DST) -mindepth 2`;do \