Revamp YOLOv9 export guide (#19224)

* Revamp YOLOv9 export guide

* Make variant a build arg

* Change VARIANT to MODEL_SIZE

* Mention available models
This commit is contained in:
Felipe Santos 2025-07-20 12:19:23 -03:00 committed by GitHub
parent eb8eee038f
commit 6d5fb65a68
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1032,22 +1032,23 @@ python3 yolo_to_onnx.py -m yolov7-320
#### YOLOv9 #### YOLOv9
YOLOv9 models can be exported using the below code YOLOv9 model can be exported as ONNX using the command below. You can copy and paste the whole thing to your terminal and execute, altering `MODEL_SIZE=t` in the first line to the [model size](https://github.com/WongKinYiu/yolov9#performance) you would like to convert (available sizes are `t`, `s`, `m`, `c`, and `e`).
```sh ```sh
git clone https://github.com/WongKinYiu/yolov9 docker build . --build-arg MODEL_SIZE=t --output . -f- <<'EOF'
cd yolov9 FROM python:3.11 AS build
RUN apt-get update && apt-get install --no-install-recommends -y libgl1 && rm -rf /var/lib/apt/lists/*
# setup the virtual environment so installation doesn't affect main system COPY --from=ghcr.io/astral-sh/uv:0.8.0 /uv /bin/
# NOTE: Virtual environment must be using Python 3.11 or older. WORKDIR /yolov9
python3 -m venv ./ ADD https://github.com/WongKinYiu/yolov9.git .
bin/pip install -r requirements.txt RUN uv pip install --system -r requirements.txt
bin/pip install onnx onnxruntime onnx-simplifier>=0.4.1 RUN uv pip install --system onnx onnxruntime onnx-simplifier>=0.4.1
ARG MODEL_SIZE
# download the weights ADD https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-${MODEL_SIZE}-converted.pt yolov9-${MODEL_SIZE}.pt
wget -O yolov9-t.pt "https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-t-converted.pt" # download the weights RUN sed -i "s/ckpt = torch.load(attempt_download(w), map_location='cpu')/ckpt = torch.load(attempt_download(w), map_location='cpu', weights_only=False)/g" models/experimental.py
RUN python3 export.py --weights ./yolov9-${MODEL_SIZE}.pt --imgsz 320 --simplify --include onnx
# prepare and run export script FROM scratch
sed -i "s/ckpt = torch.load(attempt_download(w), map_location='cpu')/ckpt = torch.load(attempt_download(w), map_location='cpu', weights_only=False)/g" ./models/experimental.py ARG MODEL_SIZE
bin/python3 export.py --weights ./yolov9-t.pt --imgsz 320 --simplify --include onnx COPY --from=build /yolov9/yolov9-${MODEL_SIZE}.onnx /
EOF
``` ```