From 6e8f6a22baa91b2b5a8511a8294bce6be5ddd492 Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 18 Dec 2024 11:51:05 +0100 Subject: [PATCH] Running mmdeploy benchmark. --- extras/mmdeploy/README.md | 19 +++++++++++++++++++ extras/mmdeploy/dockerfile | 5 ++++- extras/mmdeploy/testimages/human-pose.jpeg | Bin 0 -> 39020 bytes 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 extras/mmdeploy/testimages/human-pose.jpeg diff --git a/extras/mmdeploy/README.md b/extras/mmdeploy/README.md index 91be721..84dbdd4 100644 --- a/extras/mmdeploy/README.md +++ b/extras/mmdeploy/README.md @@ -46,3 +46,22 @@ mv /mmdeploy/work_dir/end2end.onnx /RapidPoseTriangulation/extras/mmdeploy/expor python3 /RapidPoseTriangulation/extras/mmdeploy/make_extra_graphs.py python3 /RapidPoseTriangulation/extras/mmdeploy/add_extra_steps.py ``` + +
+ +## Benchmark + +```bash +export withFP16="_fp16" + +cd /mmdeploy/ +python3 ./tools/profiler.py \ + configs/mmpose/pose-detection_simcc_onnxruntime_static-384x288$withFP16.py \ + /mmpose/projects/rtmpose/rtmpose/body_2d_keypoint/rtmpose-m_8xb256-420e_coco-384x288.py \ + /RapidPoseTriangulation/extras/mmdeploy/testimages/ \ + --model /RapidPoseTriangulation/extras/mmdeploy/exports/rtmpose-m_384x288$withFP16.onnx \ + --shape 384x288 \ + --device cuda \ + --warmup 50 \ + --num-iter 200 +``` diff --git a/extras/mmdeploy/dockerfile b/extras/mmdeploy/dockerfile index 7eae439..b285ba6 100644 --- a/extras/mmdeploy/dockerfile +++ b/extras/mmdeploy/dockerfile @@ -29,7 +29,10 @@ RUN echo 'export LD_LIBRARY_PATH=/mmdeploy/../mmdeploy-dep/onnxruntime-linux-x64 RUN apt-get update && apt-get install -y --no-install-recommends python3-tk # Tool for fp16 conversion -RUN pip3 install --upgrade --no-cache-dir onnxconverter_common +RUN pip3 install --upgrade --no-cache-dir onnxconverter_common + +# Fix an error when profiling +RUN pip3 install --upgrade --no-cache-dir "onnxruntime-gpu<1.17" WORKDIR /mmdeploy/ CMD ["/bin/bash"] diff --git a/extras/mmdeploy/testimages/human-pose.jpeg b/extras/mmdeploy/testimages/human-pose.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..8de401563e83541f016fa475bfcbf44fda25a38c GIT binary patch literal 39020 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 L=95W3&7=R>P-1Ef literal 0 HcmV?d00001