15 Commits

Author SHA1 Message Date
Roman Meshko d971612efa Check e2e tests
ci/woodpecker/manual/e2e-smoke-jetson Pipeline was successful
2026-06-07 15:47:11 +03:00
Roman Meshko 42f9e022cb Fixed pipeline
ci/woodpecker/manual/e2e-smoke-jetson Pipeline was successful
2026-06-07 15:27:17 +03:00
Roman Meshko fce289cad9 Fixed pipeline
ci/woodpecker/manual/e2e-convert-jetson Pipeline was successful
ci/woodpecker/manual/e2e-smoke-jetson Pipeline was successful
2026-06-07 14:47:14 +03:00
Roman Meshko 1dff909e74 Fixed pipeline 2026-06-07 13:49:28 +03:00
Roman Meshko 70b52c27b1 Fixed pipeline 2026-06-07 13:49:28 +03:00
Roman Meshko 5be8e05d9c Fixed pipeline 2026-06-07 13:49:28 +03:00
Roman Meshko cc691657a8 Fixed pipeline 2026-06-07 13:49:27 +03:00
Roman Meshko 8934314b1b Changed to have an attempt of build TRT10.3 2026-06-07 13:49:27 +03:00
Roman Meshko 5f0a8a5dfe Changed to have an attempt of build TRT10.3 2026-06-07 13:49:27 +03:00
Roman Meshko 4c11bd5b9e Added int8 cache to test compatibility
ci/woodpecker/push/02-build-push Pipeline was canceled
2026-06-07 10:44:18 +00:00
Roman Meshko cd1a89c495 Changed to update image version
ci/woodpecker/push/02-build-push Pipeline was successful
2026-05-31 16:34:04 +03:00
Roman Meshko 5d1b00c8b6 Changed to update image version
ci/woodpecker/push/02-build-push Pipeline failed
2026-05-31 16:25:23 +03:00
Roman Meshko a637683731 Changed to use SoftMax layers
ci/woodpecker/push/02-build-push Pipeline was successful
2026-05-23 22:20:18 +03:00
Roman Meshko 1250542800 Changed to use additional calibration parameters
ci/woodpecker/push/02-build-push Pipeline was successful
2026-05-23 22:11:57 +03:00
Roman Meshko bd9bc2e05d Changed to use prepare for TensorRT
ci/woodpecker/push/02-build-push Pipeline was successful
2026-05-23 22:07:01 +03:00
14 changed files with 691 additions and 24 deletions
+3 -1
View File
@@ -15,4 +15,6 @@ __pycache__
.pytest_cache
.git
*.md
scripts
scripts/*
!scripts/jetson/
!scripts/jetson/generate_int8_cache.py
+13 -3
View File
@@ -36,15 +36,25 @@ steps:
from_secret: registry_token
commands:
- echo "$REGISTRY_TOKEN" | docker login "$REGISTRY_HOST" -u "$REGISTRY_USER" --password-stdin
- export TAG=${CI_COMMIT_BRANCH}-${TAG_SUFFIX}
- export BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ)
- |
RAW_BRANCH="$CI_COMMIT_BRANCH"
if [ -z "$RAW_BRANCH" ]; then RAW_BRANCH="$WOODPECKER_COMMIT_BRANCH"; fi
if [ -z "$RAW_BRANCH" ]; then RAW_BRANCH="$CI_COMMIT_REF"; fi
if [ -z "$RAW_BRANCH" ]; then RAW_BRANCH="$WOODPECKER_COMMIT_REF"; fi
if [ -z "$RAW_BRANCH" ]; then RAW_BRANCH="manual"; fi
SAFE_BRANCH=$(printf '%s' "$RAW_BRANCH" | sed 's#^refs/heads/##; s#^refs/tags/##; s#[^A-Za-z0-9_.-]#-#g; s#^-*##; s#-*$##')
if [ -z "$SAFE_BRANCH" ]; then SAFE_BRANCH="manual"; fi
TAG="$SAFE_BRANCH-$TAG_SUFFIX"
BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ)
echo "RAW_BRANCH=$RAW_BRANCH"
echo "SAFE_BRANCH=$SAFE_BRANCH"
echo "TAG=$TAG"
docker build -f ${DOCKERFILE} \
--build-arg CI_COMMIT_SHA=$CI_COMMIT_SHA \
--label org.opencontainers.image.revision=$CI_COMMIT_SHA \
--label org.opencontainers.image.created=$BUILD_DATE \
--label org.opencontainers.image.source=$CI_REPO_URL \
-t $REGISTRY_HOST/azaion/detections:$TAG .
- docker push $REGISTRY_HOST/azaion/detections:$TAG
docker push $REGISTRY_HOST/azaion/detections:$TAG
volumes:
- /var/run/docker.sock:/var/run/docker.sock
+41
View File
@@ -0,0 +1,41 @@
when:
- event: [manual]
evaluate: 'BUILD_JETSON_TRT104 == "1"'
labels:
platform: arm64
steps:
- name: build-push-jetson-trt104
image: docker
environment:
REGISTRY_HOST:
from_secret: registry_host
REGISTRY_USER:
from_secret: registry_user
REGISTRY_TOKEN:
from_secret: registry_token
commands:
- echo "$REGISTRY_TOKEN" | docker login "$REGISTRY_HOST" -u "$REGISTRY_USER" --password-stdin
- |
RAW_BRANCH="$CI_COMMIT_BRANCH"
if [ -z "$RAW_BRANCH" ]; then RAW_BRANCH="$WOODPECKER_COMMIT_BRANCH"; fi
if [ -z "$RAW_BRANCH" ]; then RAW_BRANCH="$CI_COMMIT_REF"; fi
if [ -z "$RAW_BRANCH" ]; then RAW_BRANCH="$WOODPECKER_COMMIT_REF"; fi
if [ -z "$RAW_BRANCH" ]; then RAW_BRANCH="manual"; fi
SAFE_BRANCH=$(printf '%s' "$RAW_BRANCH" | sed 's#^refs/heads/##; s#^refs/tags/##; s#[^A-Za-z0-9_.-]#-#g; s#^-*##; s#-*$##')
if [ -z "$SAFE_BRANCH" ]; then SAFE_BRANCH="manual"; fi
TAG="$SAFE_BRANCH-arm-trt104"
BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ)
echo "RAW_BRANCH=$RAW_BRANCH"
echo "SAFE_BRANCH=$SAFE_BRANCH"
echo "TAG=$TAG"
docker build -f Dockerfile.jetson.trt104 \
--build-arg CI_COMMIT_SHA=$CI_COMMIT_SHA \
--label org.opencontainers.image.revision=$CI_COMMIT_SHA \
--label org.opencontainers.image.created=$BUILD_DATE \
--label org.opencontainers.image.source=$CI_REPO_URL \
-t $REGISTRY_HOST/azaion/detections:$TAG .
docker push $REGISTRY_HOST/azaion/detections:$TAG
volumes:
- /var/run/docker.sock:/var/run/docker.sock
+10 -2
View File
@@ -34,7 +34,11 @@ steps:
echo "ERROR: fixtures/models/azaion.onnx is missing; cannot convert Jetson engine"
exit 1
fi
ls -lh fixtures/image_small.jpg fixtures/models/azaion.onnx
if [ ! -f fixtures/models/azaion.int8_calib.cache ]; then
echo "ERROR: fixtures/models/azaion.int8_calib.cache is missing; cannot verify INT8 Jetson conversion"
exit 1
fi
ls -lh fixtures/image_small.jpg fixtures/models/azaion.onnx fixtures/models/azaion.int8_calib.cache
E2E_PROFILE=jetson \
E2E_WAIT_FOR_ENGINE_ENABLED=1 \
@@ -42,12 +46,16 @@ steps:
E2E_LOG_TAIL=300 \
bash run_test.sh tests/test_health_engine.py::TestHealthEngineStep03Warmed -rs
if [ ! -f results/report.csv ]; then
echo "ERROR: results/report.csv is missing; cannot verify Jetson conversion warm-up result"
exit 1
fi
if grep -qi 'skipped' results/report.csv; then
echo "ERROR: Jetson conversion warm-up tests were skipped; no engine was produced"
cat results/report.csv
exit 1
fi
bash scripts/publish_jetson_engine.sh
REQUIRE_INT8_ENGINE=1 bash scripts/publish_jetson_engine.sh
volumes:
- /var/run/docker.sock:/var/run/docker.sock
+1 -1
View File
@@ -1,4 +1,4 @@
FROM nvcr.io/nvidia/l4t-jetpack:r36.2.0
FROM nvcr.io/nvidia/l4t-jetpack:r36.4.0
ARG CI_COMMIT_SHA=unknown
ENV AZAION_REVISION=$CI_COMMIT_SHA
+21
View File
@@ -0,0 +1,21 @@
FROM nvcr.io/nvidia/tensorrt:24.09-py3-igpu
ARG CI_COMMIT_SHA=unknown
ENV AZAION_REVISION=$CI_COMMIT_SHA
RUN apt-get update && apt-get install -y \
python3 python3-pip python3-dev gcc \
libgl1 libglib2.0-0 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY requirements.txt requirements-jetson.txt ./
RUN pip3 install --no-cache-dir -r requirements-jetson.txt
COPY . .
RUN BUILD_TENSORRT_EXTENSIONS=1 python3 setup.py build_ext --inplace
ENV PYTHONPATH=/app/src
RUN adduser --disabled-password --no-create-home --gecos "" appuser \
&& mkdir -p /app/Logs \
&& chown -R appuser /app
USER appuser
EXPOSE 8080
CMD ["python3", "-m", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]
@@ -2,7 +2,7 @@
**Task**: AZ-180_jetson_orin_nano_support
**Name**: Jetson Orin Nano Support
**Description**: Run the detection service on NVIDIA Jetson Orin Nano with a JetPack 6.x container image, INT8 engine conversion using a pre-generated calibration cache, and docker-compose configuration.
**Description**: Run the detection service on NVIDIA Jetson Orin Nano with a JetPack 6.2.x-compatible container image, INT8 engine conversion using a pre-generated calibration cache, and docker-compose configuration.
**Complexity**: 5 points
**Dependencies**: None
**Component**: Deployment + Inference Engine
@@ -18,7 +18,7 @@ The detection service cannot run on NVIDIA Jetson Orin Nano for two reasons:
## Outcome
- A `Dockerfile.jetson` that builds and runs on Jetson Orin Nano (aarch64, JetPack 6.x)
- A `requirements-jetson.txt` that installs Python dependencies without pip-installing tensorrt or pycuda
- A `requirements-jetson.txt` that installs Python dependencies without pip-installing tensorrt
- A `docker-compose.jetson.yml` with NVIDIA Container Runtime configuration
- `convert_from_source()` in `tensorrt_engine.pyx` extended to accept an optional INT8 calibration cache path — if the cache is present, INT8 is used; otherwise FP16 fallback
- `init_ai()` in `inference.pyx` extended to try downloading the calibration cache from the Loader service before starting the conversion thread
@@ -28,7 +28,7 @@ The detection service cannot run on NVIDIA Jetson Orin Nano for two reasons:
### Included
- `Dockerfile.jetson` using a JetPack 6.x L4T base image with pre-installed TensorRT and PyCUDA
- `requirements-jetson.txt` derived from `requirements.txt`, excluding tensorrt and pycuda
- `requirements-jetson.txt` derived from `requirements.txt`, excluding tensorrt and installing PyCUDA via pip where the JetPack apt package is unavailable
- `docker-compose.jetson.yml` with `runtime: nvidia`
- `tensorrt_engine.pyx`: extend `convert_from_source(bytes onnx_model, str calib_cache_path=None)` — set `INT8` flag and load cache when path is provided; fall back to FP16 when not
- `inference.pyx`: extend `init_ai()` to attempt download of `azaion.int8_calib.cache` from Loader before spawning the conversion thread; pass the local path to `convert_from_source()`
@@ -75,7 +75,7 @@ Then the detections service is reachable on port 8080
## Non-Functional Requirements
**Compatibility**
- JetPack 6.x (CUDA 12.2, TensorRT 10.x)
- JetPack 6.2.x-compatible container (`nvcr.io/nvidia/l4t-jetpack:r36.4.0`, CUDA 12.6 / TensorRT 10.3 compute stack)
- Jetson Orin Nano (aarch64, SM 8.7)
**Reliability**
@@ -101,7 +101,7 @@ Note: AC-2, AC-5, AC-6 require physical Jetson hardware and cannot run in standa
## Constraints
- TensorRT and PyCUDA must NOT be pip-installed — provided by JetPack in the base image
- TensorRT must NOT be pip-installed — provided by JetPack in the base image. PyCUDA may be pip-installed on `l4t-jetpack:r36.4.0` because `python3-pycuda` is unavailable in the apt repositories.
- Base image must be a JetPack 6.x L4T image — not a generic CUDA image
- Calibration cache download failure must be non-fatal — log a warning and fall back to FP16
- INT8 conversion and FP16 conversion produce different engine files (different filenames) so cached engines are not confused
@@ -114,7 +114,7 @@ Note: AC-2, AC-5, AC-6 require physical Jetson hardware and cannot run in standa
**Risk 2: PyCUDA availability in base image**
- *Risk*: Some L4T images do not include pycuda
- *Mitigation*: Fall back to `apt-get install python3-pycuda` or source build with `CUDA_ROOT` set
- *Mitigation*: Fall back to pip source build with `CUDA_ROOT` set when no `python3-pycuda` apt package is available
**Risk 3: INT8 accuracy degradation**
- *Risk*: Without a well-representative calibration dataset, mAP may drop >1 point
+18 -3
View File
@@ -119,9 +119,9 @@ Already exists: `e2e/docker-compose.test.yml`. No changes needed — supports bo
| Aspect | Specification |
|--------|--------------|
| Base image | `nvcr.io/nvidia/l4t-base:r36.3.0` (JetPack 6.x, aarch64) |
| Base image | `nvcr.io/nvidia/l4t-jetpack:r36.4.0` (JetPack 6.2.x-compatible, aarch64) |
| TensorRT | Pre-installed via JetPack — `python3-libnvinfer` apt package (NOT pip) |
| PyCUDA | Pre-installed via JetPack — `python3-pycuda` apt package (NOT pip) |
| PyCUDA | Installed via pip in `requirements-jetson.txt` because `python3-pycuda` is not available in the `l4t-jetpack:r36.4.0` apt repositories |
| Build stages | Single stage (Cython compile requires gcc) |
| Non-root user | `adduser --disabled-password --gecos '' appuser` + `USER appuser` |
| Exposed ports | 8080 |
@@ -129,7 +129,7 @@ Already exists: `e2e/docker-compose.test.yml`. No changes needed — supports bo
| Runtime | Requires NVIDIA Container Runtime (`runtime: nvidia` in docker-compose) |
**Jetson-specific behaviour**:
- `requirements-jetson.txt` derives from `requirements.txt``tensorrt` and `pycuda` are excluded from pip and provided by JetPack
- `requirements-jetson.txt` derives from `requirements.txt``tensorrt` is excluded from pip and installed from the JetPack/L4T apt packages in `Dockerfile.jetson`; PyCUDA is installed via pip on this image line because the apt package is unavailable
- Engine filename auto-encodes CC+SM (e.g. `azaion.cc_8.7_sm_16.engine` for Orin Nano), ensuring the Jetson engine is distinct from any x86-cached engine
- INT8 is used when `azaion.int8_calib.cache` is available on the Loader service; precision suffix appended to engine filename (`*.int8.engine`); FP16 fallback when cache is absent
- `docker-compose.jetson.yml` uses `runtime: nvidia` for the NVIDIA Container Runtime
@@ -139,6 +139,21 @@ Already exists: `e2e/docker-compose.test.yml`. No changes needed — supports bo
docker compose -f docker-compose.jetson.yml up
```
### detections-jetson-trt104 (Dockerfile.jetson.trt104)
Experimental INT8 calibration image for Jetson Orin devices. It uses NVIDIA's TensorRT iGPU container:
| Aspect | Specification |
|--------|--------------|
| Base image | `nvcr.io/nvidia/tensorrt:24.09-py3-igpu` |
| TensorRT | TensorRT 10.4.0.26 |
| Purpose | Work around TensorRT 10.3 INT8 calibration failures such as `checkSanity.cpp::checkLinks` / `Graph::regions` internal errors |
Build/tag example:
```bash
docker build -f Dockerfile.jetson.trt104 -t <registry>/azaion/detections:dev-arm-trt104 .
```
## Image Tagging Strategy
| Context | Tag Format | Example |
+1 -1
View File
@@ -65,7 +65,7 @@ services:
- jetson
build:
context: ..
dockerfile: Dockerfile.jetson
dockerfile: ${JETSON_DOCKERFILE:-Dockerfile.jetson}
runtime: nvidia
depends_on:
- mock-loader
+524
View File
@@ -0,0 +1,524 @@
TRT-100400-EntropyCalibration2
images: 3c010a14
/model/model.0/conv/Conv_output_0: 3e1f8ae8
/model/model.0/act/Sigmoid_output_0: 3c010a14
/model/model.0/act/Mul_output_0: 3d90aeb4
/model/model.1/conv/Conv_output_0: 3e576a8c
/model/model.1/act/Sigmoid_output_0: 3c010a14
/model/model.1/act/Mul_output_0: 3d966075
/model/model.2/cv1/conv/Conv_output_0: 3e4b863d
/model/model.2/cv1/act/Sigmoid_output_0: 3c010a14
/model/model.2/cv1/act/Mul_output_0: 3d73e151
/model/model.2/Split_output_0: 3d6edf08
/model/model.2/Split_output_1: 3d73e151
/model/model.2/m.0/cv1/conv/Conv_output_0: 3dcab8c2
/model/model.2/m.0/cv2/conv/Conv_output_0: 3e169cf0
/model/model.2/m.0/cv1/act/Sigmoid_output_0: 3c0315c8
/model/model.2/m.0/cv2/act/Sigmoid_output_0: 3c010a14
/model/model.2/m.0/cv1/act/Mul_output_0: 3d462366
/model/model.2/m.0/cv2/act/Mul_output_0: 3d1d9bf9
/model/model.2/m.0/m/m.0/cv1/conv/Conv_output_0: 3e24ca61
/model/model.2/m.0/m/m.0/cv1/act/Sigmoid_output_0: 3c010a14
/model/model.2/m.0/m/m.0/cv1/act/Mul_output_0: 3d91e144
/model/model.2/m.0/m/m.0/cv2/conv/Conv_output_0: 3e292a8b
/model/model.2/m.0/m/m.0/cv2/act/Sigmoid_output_0: 3c010a14
/model/model.2/m.0/m/m.0/cv2/act/Mul_output_0: 3d92e80d
/model/model.2/m.0/m/m.0/Add_output_0: 3ddff1c4
/model/model.2/m.0/m/m.1/cv1/conv/Conv_output_0: 3dde776e
/model/model.2/m.0/m/m.1/cv1/act/Sigmoid_output_0: 3c0110bd
/model/model.2/m.0/m/m.1/cv1/act/Mul_output_0: 3ceb9f4b
/model/model.2/m.0/m/m.1/cv2/conv/Conv_output_0: 3de42a65
/model/model.2/m.0/m/m.1/cv2/act/Sigmoid_output_0: 3c010a14
/model/model.2/m.0/m/m.1/cv2/act/Mul_output_0: 3d134882
/model/model.2/m.0/m/m.1/Add_output_0: 3def94e5
/model/model.2/m.0/Concat_output_0: 3d88d903
/model/model.2/m.0/cv3/conv/Conv_output_0: 3e05527e
/model/model.2/m.0/cv3/act/Sigmoid_output_0: 3c010a14
/model/model.2/m.0/cv3/act/Mul_output_0: 3d6ed4b2
/model/model.2/Concat_output_0: 3d73e151
/model/model.2/cv2/conv/Conv_output_0: 3dfb04b8
/model/model.2/cv2/act/Sigmoid_output_0: 3c01121f
/model/model.2/cv2/act/Mul_output_0: 3cd1849d
/model/model.3/conv/Conv_output_0: 3daf0f26
/model/model.3/act/Sigmoid_output_0: 3c011202
/model/model.3/act/Mul_output_0: 3cc02203
/model/model.4/cv1/conv/Conv_output_0: 3d97c00c
/model/model.4/cv1/act/Sigmoid_output_0: 3c00f136
/model/model.4/cv1/act/Mul_output_0: 3d27ab2c
/model/model.4/Split_output_0: 3d025b5d
/model/model.4/Split_output_1: 3ceac523
/model/model.4/m.0/cv1/conv/Conv_output_0: 3d482f4e
/model/model.4/m.0/cv2/conv/Conv_output_0: 3d75efdd
/model/model.4/m.0/cv1/act/Sigmoid_output_0: 3c010688
/model/model.4/m.0/cv2/act/Sigmoid_output_0: 3c010f49
/model/model.4/m.0/cv1/act/Mul_output_0: 3d12c9be
/model/model.4/m.0/cv2/act/Mul_output_0: 3cd47803
/model/model.4/m.0/m/m.0/cv1/conv/Conv_output_0: 3d998103
/model/model.4/m.0/m/m.0/cv1/act/Sigmoid_output_0: 3c00d97b
/model/model.4/m.0/m/m.0/cv1/act/Mul_output_0: 3cb15d2a
/model/model.4/m.0/m/m.0/cv2/conv/Conv_output_0: 3d8ac915
/model/model.4/m.0/m/m.0/cv2/act/Sigmoid_output_0: 3c00b8b7
/model/model.4/m.0/m/m.0/cv2/act/Mul_output_0: 3ce9200f
/model/model.4/m.0/m/m.0/Add_output_0: 3d4f3893
/model/model.4/m.0/m/m.1/cv1/conv/Conv_output_0: 3d7c5d9d
/model/model.4/m.0/m/m.1/cv1/act/Sigmoid_output_0: 3c00bdcd
/model/model.4/m.0/m/m.1/cv1/act/Mul_output_0: 3c72a678
/model/model.4/m.0/m/m.1/cv2/conv/Conv_output_0: 3d9d361c
/model/model.4/m.0/m/m.1/cv2/act/Sigmoid_output_0: 3c010a06
/model/model.4/m.0/m/m.1/cv2/act/Mul_output_0: 3cff9796
/model/model.4/m.0/m/m.1/Add_output_0: 3db0a17c
/model/model.4/m.0/Concat_output_0: 3d439aad
/model/model.4/m.0/cv3/conv/Conv_output_0: 3d8fa6e7
/model/model.4/m.0/cv3/act/Sigmoid_output_0: 3c010a0a
/model/model.4/m.0/cv3/act/Mul_output_0: 3cd13d78
/model/model.4/Concat_output_0: 3cffeda3
/model/model.4/cv2/conv/Conv_output_0: 3d7b7215
/model/model.4/cv2/act/Sigmoid_output_0: 3c00f3c2
/model/model.4/cv2/act/Mul_output_0: 3c80b352
/model/model.5/conv/Conv_output_0: 3d7b4080
/model/model.5/act/Sigmoid_output_0: 3c00f9ba
/model/model.5/act/Mul_output_0: 3cb11f1f
/model/model.6/cv1/conv/Conv_output_0: 3d73ef03
/model/model.6/cv1/act/Sigmoid_output_0: 3c00e9c9
/model/model.6/cv1/act/Mul_output_0: 3cd4f9ea
/model/model.6/Split_output_0: 3cd3b02b
/model/model.6/Split_output_1: 3cd4f9ea
/model/model.6/m.0/cv1/conv/Conv_output_0: 3d1a2aec
/model/model.6/m.0/cv2/conv/Conv_output_0: 3d54c4f6
/model/model.6/m.0/cv1/act/Sigmoid_output_0: 3c03c14c
/model/model.6/m.0/cv2/act/Sigmoid_output_0: 3c010985
/model/model.6/m.0/cv1/act/Mul_output_0: 3cc06408
/model/model.6/m.0/cv2/act/Mul_output_0: 3ca4399f
/model/model.6/m.0/m/m.0/cv1/conv/Conv_output_0: 3d5c460e
/model/model.6/m.0/m/m.0/cv1/act/Sigmoid_output_0: 3c00b175
/model/model.6/m.0/m/m.0/cv1/act/Mul_output_0: 3c901a66
/model/model.6/m.0/m/m.0/cv2/conv/Conv_output_0: 3d6a8c7b
/model/model.6/m.0/m/m.0/cv2/act/Sigmoid_output_0: 3c0140d7
/model/model.6/m.0/m/m.0/cv2/act/Mul_output_0: 3cb17b0b
/model/model.6/m.0/m/m.0/Add_output_0: 3d3cc7b4
/model/model.6/m.0/m/m.1/cv1/conv/Conv_output_0: 3d501102
/model/model.6/m.0/m/m.1/cv1/act/Sigmoid_output_0: 3c0369e8
/model/model.6/m.0/m/m.1/cv1/act/Mul_output_0: 3c907699
/model/model.6/m.0/m/m.1/cv2/conv/Conv_output_0: 3d9ff611
/model/model.6/m.0/m/m.1/cv2/act/Sigmoid_output_0: 3c030a71
/model/model.6/m.0/m/m.1/cv2/act/Mul_output_0: 3ce605a6
/model/model.6/m.0/m/m.1/Add_output_0: 3d8ee5d9
/model/model.6/m.0/Concat_output_0: 3d24399f
/model/model.6/m.0/cv3/conv/Conv_output_0: 3d89743b
/model/model.6/m.0/cv3/act/Sigmoid_output_0: 3c00e89e
/model/model.6/m.0/cv3/act/Mul_output_0: 3cd24615
/model/model.6/Concat_output_0: 3cd4f9ea
/model/model.6/cv2/conv/Conv_output_0: 3d7763db
/model/model.6/cv2/act/Sigmoid_output_0: 3c008f22
/model/model.6/cv2/act/Mul_output_0: 3c9aee92
/model/model.7/conv/Conv_output_0: 3d89d8e3
/model/model.7/act/Sigmoid_output_0: 3c00fd32
/model/model.7/act/Mul_output_0: 3ce7105b
/model/model.8/cv1/conv/Conv_output_0: 3d74814b
/model/model.8/cv1/act/Sigmoid_output_0: 3c010666
/model/model.8/cv1/act/Mul_output_0: 3ce64a67
/model/model.8/Split_output_0: 3ce64a67
/model/model.8/Split_output_1: 3cb37746
/model/model.8/m.0/cv1/conv/Conv_output_0: 3d3bd8c1
/model/model.8/m.0/cv2/conv/Conv_output_0: 3d452297
/model/model.8/m.0/cv1/act/Sigmoid_output_0: 3c0313a0
/model/model.8/m.0/cv2/act/Sigmoid_output_0: 3c0b5b52
/model/model.8/m.0/cv1/act/Mul_output_0: 3c875eac
/model/model.8/m.0/cv2/act/Mul_output_0: 3cff5adf
/model/model.8/m.0/m/m.0/cv1/conv/Conv_output_0: 3d8ec83d
/model/model.8/m.0/m/m.0/cv1/act/Sigmoid_output_0: 3c0c2827
/model/model.8/m.0/m/m.0/cv1/act/Mul_output_0: 3cd2a4d6
/model/model.8/m.0/m/m.0/cv2/conv/Conv_output_0: 3d8fa417
/model/model.8/m.0/m/m.0/cv2/act/Sigmoid_output_0: 3c04a4d9
/model/model.8/m.0/m/m.0/cv2/act/Mul_output_0: 3cb1ff35
/model/model.8/m.0/m/m.0/Add_output_0: 3d66c7ed
/model/model.8/m.0/m/m.1/cv1/conv/Conv_output_0: 3d8034ad
/model/model.8/m.0/m/m.1/cv1/act/Sigmoid_output_0: 3c0119a7
/model/model.8/m.0/m/m.1/cv1/act/Mul_output_0: 3ce92630
/model/model.8/m.0/m/m.1/cv2/conv/Conv_output_0: 3da3d49f
/model/model.8/m.0/m/m.1/cv2/act/Sigmoid_output_0: 3c0b71d8
/model/model.8/m.0/m/m.1/cv2/act/Mul_output_0: 3d11c999
/model/model.8/m.0/m/m.1/Add_output_0: 3d97f033
/model/model.8/m.0/Concat_output_0: 3d8ee06e
/model/model.8/m.0/cv3/conv/Conv_output_0: 3d7d7ffb
/model/model.8/m.0/cv3/act/Sigmoid_output_0: 3c00c712
/model/model.8/m.0/cv3/act/Mul_output_0: 3ce94830
/model/model.8/Concat_output_0: 3ce94830
/model/model.8/cv2/conv/Conv_output_0: 3d769a89
/model/model.8/cv2/act/Sigmoid_output_0: 3c00da11
/model/model.8/cv2/act/Mul_output_0: 3ce97c64
/model/model.9/cv1/conv/Conv_output_0: 3d8837ee
/model/model.9/cv1/act/Sigmoid_output_0: 3c00d9d5
/model/model.9/cv1/act/Mul_output_0: 3d252968
/model/model.9/m/MaxPool_output_0: 3d252968
/model/model.9/m_1/MaxPool_output_0: 3d252968
/model/model.9/m_2/MaxPool_output_0: 3d252968
/model/model.9/Concat_output_0: 3d68e8a3
/model/model.9/cv2/conv/Conv_output_0: 3d865c32
/model/model.9/cv2/act/Sigmoid_output_0: 3c02b2e2
/model/model.9/cv2/act/Mul_output_0: 3cc051e5
/model/model.10/cv1/conv/Conv_output_0: 3dadc239
/model/model.10/cv1/act/Sigmoid_output_0: 3c0307dd
/model/model.10/cv1/act/Mul_output_0: 3d0172dc
/model/model.10/Split_output_0: 3d0172dc
/model/model.10/Split_output_1: 3d104521
/model/model.23/Reshape_17_output_0: 3e9f4871
/model/model.10/m/m.0/attn/qkv/conv/Conv_output_0: 3d565c50
/model/model.23/Unsqueeze_13_output_0: 3e9f4871
/ConstantOfShape_output_0: 0
/model/model.23/Expand_5_output_0: 3e9f4871
/model/model.23/Add_7_output_0: 3fa1a91c
/model/model.23/Concat_23_output_0: 3fa0cb8f
/model/model.23/Transpose_1_output_0: 3e810a14
/model/model.23/Reshape_5_output_0: 3e172ed8
ONNXTRT_Broadcast_388_output: 41214c99
/NonMaxSuppression_output: 3be038d4
(Unnamed Layer* 904) [Constant]_output: 3bb4a7b5
/Mul_2_output_0: 3a010a14
/model/model.23/Concat_7_output_0: 3e35f778
/model/model.23/dfl/Transpose_output_0: 3db903fa
/model/model.23/dfl/conv/Conv_output_0: 3df78149
/model/model.10/m/m.0/attn/Reshape_output_0: 3d565c50
/model/model.10/m/m.0/attn/Split_output_0: 3d3a32c6
/model/model.10/m/m.0/attn/Split_output_1: 3d1f87dd
/model/model.10/m/m.0/attn/Split_output_2: 3d565c50
/model/model.10/m/m.0/attn/Transpose_output_0: 3d3a32c6
/model/model.10/m/m.0/attn/Reshape_2_output_0: 3d565c50
/model/model.10/m/m.0/attn/MatMul_output_0: 3f265d4b
/model/model.10/m/m.0/attn/pe/conv/Conv_output_0: 3d1b7dbf
/model/model.10/m/m.0/attn/Constant_7_output_0_output: 3ab67d3d
ONNXTRT_Broadcast_output: 3ab67d3d
/model/model.10/m/m.0/attn/Mul_1_output_0: 3deb465b
/model/model.10/m/m.0/attn/Softmax_output: 3a0444a2
/model/model.10/m/m.0/attn/Softmax_output_0: 3a0444a2
/model/model.10/m/m.0/attn/Transpose_1_output_0: 3a0444a2
/model/model.10/m/m.0/attn/MatMul_1_output_0: 3d36730f
/model/model.10/m/m.0/attn/Reshape_1_output_0: 3d36730f
/model/model.10/m/m.0/attn/Add_output_0: 3d0dc681
/model/model.10/m/m.0/attn/proj/conv/Conv_output_0: 3cf84311
/model/model.10/m/m.0/Add_output_0: 3d732d8f
/model/model.10/m/m.0/ffn/ffn.0/conv/Conv_output_0: 3d6f70d0
/model/model.10/m/m.0/ffn/ffn.0/act/Sigmoid_output_0: 3c009cab
/model/model.10/m/m.0/ffn/ffn.0/act/Mul_output_0: 3ce5faa1
/model/model.10/m/m.0/ffn/ffn.1/conv/Conv_output_0: 3d2b25a7
/model/model.10/m/m.0/Add_1_output_0: 3d6b45e5
/model/model.10/Concat_output_0: 3d112d53
/model/model.10/cv2/conv/Conv_output_0: 3d7992e9
/model/model.10/cv2/act/Sigmoid_output_0: 3bffd143
/model/model.10/cv2/act/Mul_output_0: 3cb327ec
/model/model.11/Resize_output_0: 3cb327ec
/model/model.12/Concat_output_0: 3c9aee92
/model/model.13/cv1/conv/Conv_output_0: 3d7c4511
/model/model.13/cv1/act/Sigmoid_output_0: 3bfe2c99
/model/model.13/cv1/act/Mul_output_0: 3c40bb69
/model/model.13/Split_output_0: 3c736557
/model/model.13/Split_output_1: 3c40bb69
/model/model.13/m.0/cv1/conv/Conv_output_0: 3d402e87
/model/model.13/m.0/cv2/conv/Conv_output_0: 3d8473a6
/model/model.13/m.0/cv1/act/Sigmoid_output_0: 3c02c0f3
/model/model.13/m.0/cv2/act/Sigmoid_output_0: 3c00df44
/model/model.13/m.0/cv1/act/Mul_output_0: 3cd5941b
/model/model.13/m.0/cv2/act/Mul_output_0: 3d128ff9
/model/model.13/m.0/m/m.0/cv1/conv/Conv_output_0: 3d892125
/model/model.13/m.0/m/m.0/cv1/act/Sigmoid_output_0: 3c01731b
/model/model.13/m.0/m/m.0/cv1/act/Mul_output_0: 3c9a8a15
/model/model.13/m.0/m/m.0/cv2/conv/Conv_output_0: 3d46b1a8
/model/model.13/m.0/m/m.0/cv2/act/Sigmoid_output_0: 3c02b95b
/model/model.13/m.0/m/m.0/cv2/act/Mul_output_0: 3cb2733d
/model/model.13/m.0/m/m.0/Add_output_0: 3d502097
/model/model.13/m.0/m/m.1/cv1/conv/Conv_output_0: 3d3dc870
/model/model.13/m.0/m/m.1/cv1/act/Sigmoid_output_0: 3c00e20e
/model/model.13/m.0/m/m.1/cv1/act/Mul_output_0: 3cb43074
/model/model.13/m.0/m/m.1/cv2/conv/Conv_output_0: 3d88462f
/model/model.13/m.0/m/m.1/cv2/act/Sigmoid_output_0: 3c01f913
/model/model.13/m.0/m/m.1/cv2/act/Mul_output_0: 3d27cad6
/model/model.13/m.0/m/m.1/Add_output_0: 3d84350f
/model/model.13/m.0/Concat_output_0: 3d12160a
/model/model.13/m.0/cv3/conv/Conv_output_0: 3d384a74
/model/model.13/m.0/cv3/act/Sigmoid_output_0: 3bfb0570
/model/model.13/m.0/cv3/act/Mul_output_0: 3c31c584
/model/model.13/Concat_output_0: 3c40bb69
/model/model.13/cv2/conv/Conv_output_0: 3d7cc99e
/model/model.13/cv2/act/Sigmoid_output_0: 3c00e49f
/model/model.13/cv2/act/Mul_output_0: 3cb373dc
/model/model.14/Resize_output_0: 3cb373dc
/model/model.15/Concat_output_0: 3c80b352
/model/model.16/cv1/conv/Conv_output_0: 3d76166b
/model/model.16/cv1/act/Sigmoid_output_0: 3c00f39f
/model/model.16/cv1/act/Mul_output_0: 3c99aa62
/model/model.16/Split_output_0: 3c99aa62
/model/model.16/Split_output_1: 3c9c0426
/model/model.16/m.0/cv1/conv/Conv_output_0: 3d19f950
/model/model.16/m.0/cv2/conv/Conv_output_0: 3d92e2b5
/model/model.16/m.0/cv1/act/Sigmoid_output_0: 3bf6f7c1
/model/model.16/m.0/cv2/act/Sigmoid_output_0: 3c01121f
/model/model.16/m.0/cv1/act/Mul_output_0: 3cd29b35
/model/model.16/m.0/cv2/act/Mul_output_0: 3cd34c09
/model/model.16/m.0/m/m.0/cv1/conv/Conv_output_0: 3d9270a0
/model/model.16/m.0/m/m.0/cv1/act/Sigmoid_output_0: 3c00d126
/model/model.16/m.0/m/m.0/cv1/act/Mul_output_0: 3c9ae848
/model/model.16/m.0/m/m.0/cv2/conv/Conv_output_0: 3d8324bc
/model/model.16/m.0/m/m.0/cv2/act/Sigmoid_output_0: 3c030c5f
/model/model.16/m.0/m/m.0/cv2/act/Mul_output_0: 3ceb0b76
/model/model.16/m.0/m/m.0/Add_output_0: 3d66a28d
/model/model.16/m.0/m/m.1/cv1/conv/Conv_output_0: 3d790c93
/model/model.16/m.0/m/m.1/cv1/act/Sigmoid_output_0: 3c010f57
/model/model.16/m.0/m/m.1/cv1/act/Mul_output_0: 3cd4ee49
/model/model.16/m.0/m/m.1/cv2/conv/Conv_output_0: 3dea8a96
/model/model.16/m.0/m/m.1/cv2/act/Sigmoid_output_0: 3c053a74
/model/model.16/m.0/m/m.1/cv2/act/Mul_output_0: 3d65ec44
/model/model.16/m.0/m/m.1/Add_output_0: 3def9bf8
/model/model.16/m.0/Concat_output_0: 3d6dd599
/model/model.16/m.0/cv3/conv/Conv_output_0: 3d787a23
/model/model.16/m.0/cv3/act/Sigmoid_output_0: 3c02069e
/model/model.16/m.0/cv3/act/Mul_output_0: 3ce8c62f
/model/model.16/Concat_output_0: 3cb3307d
/model/model.16/cv2/conv/Conv_output_0: 3d848b81
/model/model.16/cv2/act/Sigmoid_output_0: 3c020ff8
/model/model.16/cv2/act/Mul_output_0: 3cd2dfa3
/model/model.17/conv/Conv_output_0: 3d4e817b
/model/model.23/Transpose_output_0: 3fa0cb8f
/model/model.23/cv2.0/cv2.0.0/conv/Conv_output_0: 3d7adcfc
/model/model.23/cv3.0/cv3.0.0/cv3.0.0.0/conv/Conv_output_0: 3d67e3d5
/model/model.17/act/Sigmoid_output_0: 3c0066fb
/Cast_2_output_0: 3be038d4
/model/model.23/cv2.0/cv2.0.0/act/Sigmoid_output_0: 3c0508fc
/model/model.23/cv3.0/cv3.0.0/cv3.0.0.0/act/Sigmoid_output_0: 3c010a14
/GatherND_1_output_0: 3be038d4
/model/model.23/cv3.2/cv3.2.1/cv3.2.1.1/conv/Conv_output_0: 3d9fa03e
/model/model.17/act/Mul_output_0: 3c9989bc
/model/model.23/cv2.0/cv2.0.0/act/Mul_output_0: 3cb3d08e
/model/model.23/cv3.0/cv3.0.0/cv3.0.0.0/act/Mul_output_0: 3d6971cd
/model/model.23/cv3.2/cv3.2.0/cv3.2.0.1/act/Mul_output_0: 3d00da36
/model/model.23/Sub_output_0: 3fa05c98
/model/model.23/Mul_5_output_0: 4121deb6
/model/model.18/Concat_output_0: 3cb373dc
/model/model.23/cv2.0/cv2.0.1/conv/Conv_output_0: 3e06e9ea
/Slice_3_output_0: 38ccff45
/model/model.23/Slice_output_0: 3df7d8d4
/model/model.23/cv3.0/cv3.0.0/cv3.0.0.1/conv/Conv_output_0: 3d83ebbb
/Gather_6_output_0: 3be038d4
/model/model.23/Constant_15_output_0_output: 0
/model/model.23/Constant_16_output_0_output: 3c010a14
/Gather_13_output_0: 0
/model/model.23/dfl/Reshape_output_0: 3db903fa
/model/model.23/ConstantOfShape_2_output_0: 3e810a14
/model/model.23/cv3.2/cv3.2.1/cv3.2.1.0/act/Sigmoid_output_0: 3c0067ee
/model/model.23/Range_output_0: 3fa04a85
ONNXTRT_ShapeShuffle_38_output: 3c010a14
/Mul_output_0: 38ccff45
/model/model.23/Reshape_18_output_0: 3e9f4871
/model/model.23/Reshape_2_output_0: 3d90adf3
/Div_output_0: 3c001f8b
/model/model.23/Range_1_output_0: 3fa04a85
ONNXTRT_ShapeShuffle_48_output: 3c010a14
/Transpose_output_0: 4121deb6
/model/model.19/cv1/conv/Conv_output_0: 3d6cadc5
/model/model.23/cv2.0/cv2.0.1/act/Sigmoid_output_0: 3c010a14
/model/model.23/cv3.0/cv3.0.0/cv3.0.0.1/act/Sigmoid_output_0: 3c02115c
/model/model.23/Constant_17_output_0_output: 3b810a14
ONNXTRT_Broadcast_51_output: 3b810a14
/model/model.23/Reshape_7_output_0: 3fa0cb8f
ONNXTRT_Broadcast_53_output: 3b810a14
/model/model.23/Reshape_6_output_0: 3fa0cb8f
ONNXTRT_ShapeShuffle_170_output: 3e810a14
/model/model.19/cv1/act/Sigmoid_output_0: 3c010a14
/model/model.23/cv2.0/cv2.0.1/act/Mul_output_0: 3d916b73
/model/model.23/cv3.0/cv3.0.0/cv3.0.0.1/act/Mul_output_0: 3d12c421
(Unnamed Layer* 339) [Constant]_output: 3d810a14
ONNXTRT_ShapeShuffle_56_output: 3d810a14
/model/model.23/ConstantOfShape_output_0: 3d810a14
ONNXTRT_Broadcast_165_output: 3b810a14
/model/model.23/cv2.2/cv2.2.1/act/Mul_output_0: 3d90122e
/model/model.23/Reshape_8_output_0: 3fa0cb8f
/model/model.23/Reshape_9_output_0: 3fa0cb8f
/model/model.19/cv1/act/Mul_output_0: 3d137ed8
/model/model.23/cv2.0/cv2.0.2/Conv_output_0: 3db51eb3
/model/model.23/cv3.0/cv3.0.1/cv3.0.1.0/conv/Conv_output_0: 3d5dd023
/model/model.23/Unsqueeze_12_output_0: 3e9f4871
/model/model.19/Split_output_0: 3d141e80
/model/model.19/Split_output_1: 3cc336b6
/model/model.23/Reshape_output_0: 3db51eb3
/model/model.23/cv3.0/cv3.0.1/cv3.0.1.0/act/Sigmoid_output_0: 3c035690
/model/model.23/Sigmoid_output_0: 3be038d4
/model/model.23/Concat_24_output_0: 3e810a14
/Slice_output_0: 4121deb6
/model/model.23/Reshape_16_output_0: 3e9f4871
/model/model.23/Expand_output_0: 3fa0cb8f
ONNXTRT_Broadcast_167_output: 3b810a14
/model/model.23/dfl/Softmax_output: 3bb85f93
output0: 41273e0c
/ArgMax_output: 3be038d4
/model/model.23/Concat_3_output_0: 3db903fa
/model/model.23/Expand_1_output_0: 3fa0cb8f
/model/model.19/m.0/cv1/conv/Conv_output_0: 3d207cfb
/model/model.19/m.0/cv2/conv/Conv_output_0: 3d54882a
/model/model.23/cv3.0/cv3.0.1/cv3.0.1.0/act/Mul_output_0: 3d6031fb
/model/model.23/Unsqueeze_6_output_0: 3fa0cb8f
/model/model.23/Unsqueeze_7_output_0: 3fa0cb8f
/model/model.19/m.0/cv1/act/Sigmoid_output_0: 3c00af23
/model/model.19/m.0/cv2/act/Sigmoid_output_0: 3c012670
/model/model.23/cv3.0/cv3.0.1/cv3.0.1.1/conv/Conv_output_0: 3dcaafff
/model/model.23/Concat_11_output_0: 3fa0cb8f
/model/model.19/m.0/cv1/act/Mul_output_0: 3c913aca
/model/model.19/m.0/cv2/act/Mul_output_0: 3cb066bc
/model/model.23/cv3.0/cv3.0.1/cv3.0.1.1/act/Sigmoid_output_0: 3c010a14
/model/model.23/Reshape_10_output_0: 3fa0cb8f
/model/model.19/m.0/m/m.0/cv1/conv/Conv_output_0: 3d71695c
/model/model.23/cv3.0/cv3.0.1/cv3.0.1.1/act/Mul_output_0: 3d838dd5
/model/model.19/m.0/m/m.0/cv1/act/Sigmoid_output_0: 3c02e5dc
/model/model.23/cv3.0/cv3.0.2/Conv_output_0: 3e3404db
/model/model.19/m.0/m/m.0/cv1/act/Mul_output_0: 3ce9656f
/model/model.23/Reshape_3_output_0: 3e3404db
/model/model.19/m.0/m/m.0/cv2/conv/Conv_output_0: 3d8e8f13
/model/model.19/m.0/m/m.0/cv2/act/Sigmoid_output_0: 3c0414db
/model/model.19/m.0/m/m.0/cv2/act/Mul_output_0: 3d44be6a
/model/model.19/m.0/m/m.0/Add_output_0: 3d5bbb81
/model/model.19/m.0/m/m.1/cv1/conv/Conv_output_0: 3d8521b8
/model/model.19/m.0/m/m.1/cv1/act/Sigmoid_output_0: 3c0312c4
/model/model.19/m.0/m/m.1/cv1/act/Mul_output_0: 3cd2aee8
/model/model.19/m.0/m/m.1/cv2/conv/Conv_output_0: 3db63419
/model/model.19/m.0/m/m.1/cv2/act/Sigmoid_output_0: 3c0880f4
/model/model.19/m.0/m/m.1/cv2/act/Mul_output_0: 3d454159
/model/model.19/m.0/m/m.1/Add_output_0: 3d9bdece
/model/model.19/m.0/Concat_output_0: 3d931541
/model/model.19/m.0/cv3/conv/Conv_output_0: 3d7f2ed4
/model/model.19/m.0/cv3/act/Sigmoid_output_0: 3c0111cf
/model/model.19/m.0/cv3/act/Mul_output_0: 3d000afe
/model/model.19/Concat_output_0: 3d141e80
/model/model.19/cv2/conv/Conv_output_0: 3d8ba44e
/model/model.19/cv2/act/Sigmoid_output_0: 3c0111f3
/model/model.19/cv2/act/Mul_output_0: 3d018b26
/model/model.20/conv/Conv_output_0: 3d27c70e
/model/model.23/cv2.1/cv2.1.0/conv/Conv_output_0: 3d6e66fc
/model/model.23/cv3.1/cv3.1.0/cv3.1.0.0/conv/Conv_output_0: 3d54c606
/model/model.23/cv2.2/cv2.2.2/Conv_output_0: 3d90adf3
/model/model.20/act/Sigmoid_output_0: 3c007673
/model/model.23/cv2.1/cv2.1.0/act/Sigmoid_output_0: 3c00ce4e
/model/model.23/cv3.1/cv3.1.0/cv3.1.0.0/act/Sigmoid_output_0: 3c011221
/GatherND_output_0: 4120276d
/model/model.23/dfl/Softmax_output_0: 3bb85f93
/model/model.20/act/Mul_output_0: 3d02afbd
/model/model.23/cv2.1/cv2.1.0/act/Mul_output_0: 3d0fe579
/model/model.23/cv3.1/cv3.1.0/cv3.1.0.0/act/Mul_output_0: 3d2a13f8
/Slice_2_output_0: 0
/Slice_4_output_0: 0
/model/model.21/Concat_output_0: 3cd57183
/model/model.23/cv2.1/cv2.1.1/conv/Conv_output_0: 3df7a216
/model/model.23/cv3.1/cv3.1.0/cv3.1.0.1/conv/Conv_output_0: 3d7557d6
/model/model.23/Concat_25_output_0: 3fa29d64
(Unnamed Layer* 569) [Constant]_output: 3e810a14
/Constant_15_output_0_output: 38ce7687
/model/model.23/cv3.2/cv3.2.1/cv3.2.1.1/act/Sigmoid_output_0: 3c010a14
/model/model.23/Expand_4_output_0: 3e9f4871
/Constant_14_output_0_output: 41214c99
/model/model.23/Range_2_output_0: 3f1f4871
ONNXTRT_ShapeShuffle_95_output: 3c010a14
/Slice_1_output_0: 3be038d4
ONNXTRT_Broadcast_269_output: 3e810a14
/model/model.23/Reshape_19_output_0: 3e9f4871
/model/model.23/Concat_26_output_0: 4121deb6
/model/model.23/Reshape_20_output_0: 3e9f4871
/Reshape_6_output_0: 41273e0c
/model/model.23/Range_3_output_0: 3f1f4871
ONNXTRT_ShapeShuffle_105_output: 3c010a14
/Gather_10_output_0: 41273e0c
/model/model.22/cv1/conv/Conv_output_0: 3d54ed5d
/model/model.23/cv2.1/cv2.1.1/act/Sigmoid_output_0: 3c010a14
/model/model.23/cv3.1/cv3.1.0/cv3.1.0.1/act/Sigmoid_output_0: 3c021329
ONNXTRT_Broadcast_108_output: 3b810a14
/model/model.23/Reshape_12_output_0: 3f204a85
ONNXTRT_Broadcast_110_output: 3b810a14
/model/model.23/Reshape_11_output_0: 3f204a85
/model/model.22/cv1/act/Sigmoid_output_0: 3c0213bd
/model/model.23/cv2.1/cv2.1.1/act/Mul_output_0: 3d91002d
/model/model.23/cv3.1/cv3.1.0/cv3.1.0.1/act/Mul_output_0: 3d118ec2
(Unnamed Layer* 457) [Constant]_output: 3e010a14
ONNXTRT_ShapeShuffle_113_output: 3e010a14
/model/model.23/ConstantOfShape_1_output_0: 3e010a14
/model/model.23/cv3.2/cv3.2.2/Conv_output_0: 3e172ed8
/Gather_11_output_0: 3be2fe01
/Cast_3_output_0: 3d214c99
/model/model.23/Reshape_13_output_0: 3f204a85
/model/model.23/Reshape_14_output_0: 3f204a85
/model/model.22/cv1/act/Mul_output_0: 3d037465
/model/model.23/cv2.1/cv2.1.2/Conv_output_0: 3db881cc
/model/model.23/cv3.1/cv3.1.1/cv3.1.1.0/conv/Conv_output_0: 3d798e51
/model/model.22/Split_output_0: 3d037465
/model/model.22/Split_output_1: 3cb0b046
/model/model.23/Reshape_1_output_0: 3db881cc
/model/model.23/cv3.1/cv3.1.1/cv3.1.1.0/act/Sigmoid_output_0: 3c010a14
ONNXTRT_ShapeShuffle_382_output: 0
/model/model.23/dfl/Reshape_1_output_0: 3df78149
/model/model.23/cv3.2/cv3.2.1/cv3.2.1.0/conv/Conv_output_0: 3d3888f4
/model/model.23/Expand_2_output_0: 3f204a85
/model/model.23/Slice_1_output_0: 3dcb4fbd
/model/model.23/cv3.2/cv3.2.1/cv3.2.1.1/act/Mul_output_0: 3d0fbe3e
/Cast_output_0: 3d214c99
ONNXTRT_Broadcast_479_output: 38ce7687
/model/model.23/Expand_3_output_0: 3f204a85
/model/model.22/m.0/cv1/conv/Conv_output_0: 3d223bd1
/model/model.22/m.0/cv2/conv/Conv_output_0: 3d08f193
/model/model.23/cv3.1/cv3.1.1/cv3.1.1.0/act/Mul_output_0: 3d01f178
/model/model.23/Unsqueeze_9_output_0: 3f204a85
/model/model.23/Unsqueeze_10_output_0: 3f204a85
/model/model.22/m.0/cv1/act/Sigmoid_output_0: 3c007dc7
/model/model.22/m.0/cv2/act/Sigmoid_output_0: 3c005708
/model/model.23/cv3.1/cv3.1.1/cv3.1.1.1/conv/Conv_output_0: 3dae2c0f
/model/model.23/Concat_16_output_0: 3f204a85
/model/model.22/m.0/cv1/act/Mul_output_0: 3cd210d6
/model/model.22/m.0/cv2/act/Mul_output_0: 3ce842ef
/model/model.23/cv3.1/cv3.1.1/cv3.1.1.1/act/Sigmoid_output_0: 3c010a14
/model/model.23/Reshape_15_output_0: 3f204a85
/model/model.22/m.0/m/m.0/cv1/conv/Conv_output_0: 3d8565b0
/model/model.23/cv3.1/cv3.1.1/cv3.1.1.1/act/Mul_output_0: 3d65059a
/model/model.22/m.0/m/m.0/cv1/act/Sigmoid_output_0: 3c010594
/model/model.23/cv3.1/cv3.1.2/Conv_output_0: 3e2c307a
/model/model.22/m.0/m/m.0/cv1/act/Mul_output_0: 3cd3fbee
/model/model.23/Reshape_4_output_0: 3e2c307a
/model/model.22/m.0/m/m.0/cv2/conv/Conv_output_0: 3d732edb
/model/model.22/m.0/m/m.0/cv2/act/Sigmoid_output_0: 3c030ffb
/model/model.22/m.0/m/m.0/cv2/act/Mul_output_0: 3d27e8fc
/model/model.22/m.0/m/m.0/Add_output_0: 3d4f8df7
/model/model.22/m.0/m/m.1/cv1/conv/Conv_output_0: 3d4c6b2d
/model/model.22/m.0/m/m.1/cv1/act/Sigmoid_output_0: 3c037544
/model/model.22/m.0/m/m.1/cv1/act/Mul_output_0: 3cc02a92
/model/model.22/m.0/m/m.1/cv2/conv/Conv_output_0: 3d73bad0
/model/model.22/m.0/m/m.1/cv2/act/Sigmoid_output_0: 3c00ef04
/model/model.22/m.0/m/m.1/cv2/act/Mul_output_0: 3d11a2d6
/model/model.22/m.0/m/m.1/Add_output_0: 3d870dbb
/model/model.22/m.0/Concat_output_0: 3d6a0660
/model/model.22/m.0/cv3/conv/Conv_output_0: 3d2f1e4a
/model/model.22/m.0/cv3/act/Sigmoid_output_0: 3c015ce6
/model/model.22/m.0/cv3/act/Mul_output_0: 3ce6eeb4
/model/model.22/Concat_output_0: 3d037465
/model/model.22/cv2/conv/Conv_output_0: 3d6474ca
/model/model.22/cv2/act/Sigmoid_output_0: 3c021395
/model/model.22/cv2/act/Mul_output_0: 3cff379f
/model/model.23/cv2.2/cv2.2.0/conv/Conv_output_0: 3d95d6c2
/model/model.23/cv3.2/cv3.2.0/cv3.2.0.0/conv/Conv_output_0: 3ce9369e
/Cast_1_output_0: 3a51155e
/model/model.23/Concat_21_output_0: 3e9f4871
/model/model.23/cv2.2/cv2.2.0/act/Sigmoid_output_0: 3c010890
/model/model.23/cv3.2/cv3.2.0/cv3.2.0.0/act/Sigmoid_output_0: 3bff8e87
/model/model.23/cv2.2/cv2.2.0/act/Mul_output_0: 3d26a32f
/model/model.23/cv3.2/cv3.2.0/cv3.2.0.0/act/Mul_output_0: 3cb25688
/model/model.23/cv3.2/cv3.2.0/cv3.2.0.1/act/Sigmoid_output_0: 3c00c67f
/Add_3_output_0: 3a51155e
/model/model.23/cv2.2/cv2.2.1/conv/Conv_output_0: 3e12fc33
/model/model.23/cv3.2/cv3.2.0/cv3.2.0.1/conv/Conv_output_0: 3d47791b
/Reshape_2_output_0: 3be2fe01
/ReduceMax_output_0: 3be038d4
/model/model.23/Unsqueeze_15_output_0: 3fa0cb8f
ONNXTRT_Broadcast_397_output: 38ce7687
/model/model.23/Range_4_output_0: 3e9d4449
ONNXTRT_ShapeShuffle_152_output: 3c010a14
/ScatterND_output_0: 41273e0c
/Concat_3_output_0: 3a51155e
/Concat_4_output_0: 41273e0c
/model/model.23/cv3.2/cv3.2.1/cv3.2.1.0/act/Mul_output_0: 3d11d75e
/Expand_1_output_0: 41273e0c
(Unnamed Layer* 793) [Constant]_output: 0
/model/model.23/Range_5_output_0: 3e9d4449
ONNXTRT_ShapeShuffle_162_output: 3c010a14
/model/model.23/cv2.2/cv2.2.1/act/Sigmoid_output_0: 3c010a14
+12 -1
View File
@@ -5,7 +5,9 @@ COMPOSE="${COMPOSE:-docker compose -f docker-compose.test.yml --profile jetson}"
REGISTRY_HOST="${REGISTRY_HOST:?REGISTRY_HOST is required}"
ENGINE_REPOSITORY="${JETSON_ENGINE_REPOSITORY:-$REGISTRY_HOST/azaion/detections-jetson-engine}"
BRANCH="${CI_COMMIT_BRANCH:-local}"
ENGINE_TAG="${JETSON_ENGINE_TAG:-$(printf '%s' "$BRANCH" | tr -c 'A-Za-z0-9_.-' '-')}"
default_tag="$(printf '%s' "$BRANCH" | sed 's#^refs/heads/##; s#^refs/tags/##; s#[^A-Za-z0-9_.-]#-#g; s#^-*##; s#-*$##')"
default_tag="${default_tag:-local}"
ENGINE_TAG="${JETSON_ENGINE_TAG:-$default_tag}"
OUT_DIR="${JETSON_ENGINE_OUT_DIR:-results/jetson-engine}"
mkdir -p "$OUT_DIR/models"
@@ -26,6 +28,15 @@ if [[ "$engine_count" == "0" ]]; then
exit 1
fi
if [[ "${REQUIRE_INT8_ENGINE:-0}" == "1" ]]; then
int8_engine_count="$(find "$OUT_DIR/models" -maxdepth 1 -type f -name 'azaion*.int8.engine' | wc -l | tr -d ' ')"
if [[ "$int8_engine_count" == "0" ]]; then
echo "ERROR: INT8 engine is required, but no azaion*.int8.engine file was produced"
find "$OUT_DIR/models" -maxdepth 1 -type f -name 'azaion*.engine' -print -exec ls -lh {} \;
exit 1
fi
fi
echo "--- Converted TensorRT engine files:"
find "$OUT_DIR/models" -maxdepth 1 -type f -name 'azaion*.engine' -print -exec ls -lh {} \;
+3 -1
View File
@@ -8,7 +8,9 @@ fi
ENGINE_REPOSITORY="${JETSON_ENGINE_REPOSITORY:-$REGISTRY_HOST/azaion/detections-jetson-engine}"
BRANCH="${CI_COMMIT_BRANCH:-local}"
ENGINE_TAG="${JETSON_ENGINE_TAG:-$(printf '%s' "$BRANCH" | tr -c 'A-Za-z0-9_.-' '-')}"
default_tag="$(printf '%s' "$BRANCH" | sed 's#^refs/heads/##; s#^refs/tags/##; s#[^A-Za-z0-9_.-]#-#g; s#^-*##; s#-*$##')"
default_tag="${default_tag:-local}"
ENGINE_TAG="${JETSON_ENGINE_TAG:-$default_tag}"
TARGET_DIR="${JETSON_ENGINE_TARGET_DIR:-fixtures/models}"
image="$ENGINE_REPOSITORY:$ENGINE_TAG"
+1 -1
View File
@@ -73,7 +73,7 @@ def video_events(warm_engine, http_client, auth_headers):
"X-Channel-Id": channel_id,
"X-Filename": "video_test01.mp4",
"X-Config": json.dumps(
{"model_batch_size": 1, "frame_period_recognition": 100}
{"model_batch_size": 1, "frame_period_recognition": 4}
),
"Content-Type": "application/octet-stream",
},
+37 -4
View File
@@ -30,6 +30,13 @@ def parse_args():
parser.add_argument("--output", default="azaion.int8_calib.cache")
parser.add_argument("--input-size", type=int, default=1280, help="Model input H=W (default 1280)")
parser.add_argument("--num-samples", type=int, default=500)
parser.add_argument("--workspace-gb", type=float, default=4.0)
parser.add_argument("--no-fp16", action="store_true", help="Do not enable FP16 fallback during INT8 calibration")
parser.add_argument(
"--softmax-fp32",
action="store_true",
help="Force TensorRT SoftMax layers to FP32 as a workaround for Jetson INT8 calibration failures",
)
return parser.parse_args()
@@ -66,7 +73,7 @@ def main():
if not images:
print(f"No images found in {args.images_dir}", file=sys.stderr)
sys.exit(1)
print(f"Using {len(images)} calibration images")
print(f"Using {len(images)} calibration images", flush=True)
H = W = args.input_size
@@ -98,6 +105,13 @@ def main():
print(f"Cache written → {args.output}")
onnx_data = Path(args.onnx).read_bytes()
try:
from engines.onnx_tensorrt_compat import prepare_for_tensorrt
onnx_data = prepare_for_tensorrt(onnx_data)
print("Prepared ONNX model for TensorRT static Jetson build", flush=True)
except Exception as e:
print(f"WARNING: ONNX TensorRT compatibility preparation failed: {e}", file=sys.stderr)
logger = trt.Logger(trt.Logger.INFO)
explicit_batch = 1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)
@@ -107,9 +121,11 @@ def main():
trt.OnnxParser(network, logger) as parser,
builder.create_builder_config() as config,
):
config.set_memory_pool_limit(trt.MemoryPoolType.WORKSPACE, 4 * 1024 ** 3)
config.set_memory_pool_limit(
trt.MemoryPoolType.WORKSPACE, int(args.workspace_gb * 1024 ** 3)
)
config.set_flag(trt.BuilderFlag.INT8)
if builder.platform_has_fast_fp16:
if not args.no_fp16 and builder.platform_has_fast_fp16:
config.set_flag(trt.BuilderFlag.FP16)
calibrator = _ImageCalibrator()
@@ -120,6 +136,23 @@ def main():
print(parser.get_error(i), file=sys.stderr)
sys.exit(1)
if args.softmax_fp32:
constrained = 0
for i in range(network.num_layers):
layer = network.get_layer(i)
if layer.type == trt.LayerType.SOFTMAX:
layer.precision = trt.float32
for j in range(layer.num_outputs):
layer.set_output_type(j, trt.float32)
constrained += 1
if constrained:
for flag_name in ("PREFER_PRECISION_CONSTRAINTS", "OBEY_PRECISION_CONSTRAINTS"):
flag = getattr(trt.BuilderFlag, flag_name, None)
if flag is not None:
config.set_flag(flag)
break
print(f"Forced {constrained} SoftMax layers to FP32", flush=True)
inp = network.get_input(0)
shape = inp.shape
C = shape[1]
@@ -128,7 +161,7 @@ def main():
profile.set_shape(inp.name, (1, C, H, W), (1, C, H, W), (1, C, H, W))
config.add_optimization_profile(profile)
print("Building TensorRT engine with INT8 calibration (several minutes on Jetson)")
print("Building TensorRT engine with INT8 calibration (several minutes on Jetson)...", flush=True)
plan = builder.build_serialized_network(network, config)
if plan is None:
print("Engine build failed", file=sys.stderr)