Commit Graph
2 Commits
Author SHA1 Message Date
janus-zhengandGlenn Jocher a9f895d304 Apply make_divisible for ONNX models in Autoshape (#10172)
* Apply make_divisible for onnx models in Autoshape

At line 697 we have this `make_divisible` function for pytorch models. 
* Context: we want to run inference on varied input sizes instead of fixed image size.
* When I test an image of size [720, 720] for a pytorch model (e.g., yolov5n.pt), we can see that it will be reshaped to [736, 736] by the function. This is as expected.
* When I test the same image for the onnx model (e.g., yolov5n.onnx, exported with `--dynamic`), I got an error and it's due to the indivisible problem
```
onnxruntime.capi.onnxruntime_pybind11_state.Fail: [ONNXRuntimeError] : 1 : FAIL : Non-zero status code returned while running Concat node. Name:'Concat_143' Status Message: concat.cc:156 PrepareForCompute Non concat axis dimensions must match: Axis 3 has mismatched dimensions of 45 and 46
```

The simple solution is to enable the `make_divisible` function for onnx model too.

Signed-off-by: janus-zheng <106574221+janus-zheng@users.noreply.github.com>

* revise indent

Signed-off-by: janus-zheng <106574221+janus-zheng@users.noreply.github.com>

* Apply make_divisible to all formats

All formats from DetectMultiBackend should have default stride=32

Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>

Signed-off-by: janus-zheng <106574221+janus-zheng@users.noreply.github.com>
Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>
Co-authored-by: Glenn Jocher <glenn.jocher@ultralytics.com>
2022-11-17 13:42:26 +01:00
janus-zhengandGlenn Jocher 892c4cd4a5 AutoShape integer image-size fix (#10090)
Update common.py

We have a division at line 694, and then a multiplication at line 695, so it makes `y*g` not an integer. And since `shape1` will be used at line 697 to ensure the size is divisible by the `stride`, this may lead to different image size.

In my experiment, my image is [640, 640], it's divisible by the default stride 32, but I found that the result is changed to [672, 672] after line 697. So the final detection result is slightly different from that directly using the `detect.py` script, which does not call the AutoShape methods. 


Signed-off-by: janus-zheng <106574221+janus-zheng@users.noreply.github.com>

Signed-off-by: janus-zheng <106574221+janus-zheng@users.noreply.github.com>
Co-authored-by: Glenn Jocher <glenn.jocher@ultralytics.com>
2022-11-09 15:21:43 +01:00