Ultralytics YOLO11 NVIDIA ์์ DeepStream SDK๋ฅผ ์ฌ์ฉํ๋ Jetson ๋ฐ TensorRT
Watch: ๋ค์์ ์ฌ์ฉํ์ฌ Jetson Nano์์ DeepStream SDK๋ก ์ฌ๋ฌ ์คํธ๋ฆผ์ ์คํํ๋ ๋ฐฉ๋ฒ Ultralytics YOLO11
์ด ์ข ํฉ ๊ฐ์ด๋๋ DeepStream SDK๋ฅผ ์ฌ์ฉํ์ฌ NVIDIA Jetson ์ฅ์น์ Ultralytics YOLO11 ์ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ์๋ด์ TensorRT ์ ์ ๊ณตํฉ๋๋ค. ์ฌ๊ธฐ์๋ TensorRT ์ ์ฌ์ฉํ์ฌ Jetson ํ๋ซํผ์์ ์ถ๋ก ์ฑ๋ฅ์ ์ต๋ํํฉ๋๋ค.
์ฐธ๊ณ
This guide has been tested with NVIDIA Jetson Orin Nano Super Developer Kit running the latest stable JetPack release of JP6.1, Seeed Studio reComputer J4012 which is based on NVIDIA Jetson Orin NX 16GB running JetPack release of JP5.1.3 and Seeed Studio reComputer J1020 v2 which is based on NVIDIA Jetson Nano 4GB running JetPack release of JP4.6.4. It is expected to work across all the NVIDIA Jetson hardware lineup including latest and legacy.
NVIDIA DeepStream์ด๋ ๋ฌด์์ธ๊ฐ์?
NVIDIA์ DeepStream SDK๋ AI ๊ธฐ๋ฐ ๋ฉํฐ ์ผ์ ์ฒ๋ฆฌ, ๋น๋์ค, ์ค๋์ค ๋ฐ ์ด๋ฏธ์ง ์ดํด๋ฅผ ์ํ GStreamer ๊ธฐ๋ฐ์ ์๋ฒฝํ ์คํธ๋ฆฌ๋ฐ ๋ถ์ ํดํท์ ๋๋ค. IVA(์ง๋ฅํ ๋น๋์ค ๋ถ์) ์ฑ๊ณผ ์๋น์ค๋ฅผ ๊ตฌ์ถํ๋ ๋น์ AI ๊ฐ๋ฐ์, ์ํํธ์จ์ด ํํธ๋, ์คํํธ์ ๋ฐ OEM์ ์ด์์ ์ ๋๋ค. ์ด์ ์ ๊ฒฝ๋ง๊ณผ ์ถ์ , ๋น๋์ค ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ, ๋น๋์ค ๋ ๋๋ง๊ณผ ๊ฐ์ ๊ธฐํ ๋ณต์กํ ์ฒ๋ฆฌ ์์ ์ ํตํฉํ๋ ์คํธ๋ฆผ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ฌํ ํ์ดํ๋ผ์ธ์ ํตํด ๋น๋์ค, ์ด๋ฏธ์ง, ์ผ์ ๋ฐ์ดํฐ์ ๋ํ ์ค์๊ฐ ๋ถ์์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ฅ์คํธ๋ฆผ์ ๋ฉํฐ ํ๋ซํผ ์ง์์ ์จํ๋ ๋ฏธ์ค, ์ฃ์ง, ํด๋ผ์ฐ๋์์ ๋น์ AI ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์๋น์ค๋ฅผ ๋ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ๊ฐ๋ฐํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
์ ์ ์กฐ๊ฑด
์ด ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด๊ธฐ ์ ์ ๋จผ์ ํ์ธํ์ธ์:
- ์ค๋ช ์ ๋น ๋ฅธ ์์ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ญ์์ค: NVIDIA Ultralytics YOLO11 ์ ์ฌ์ฉํ์ฌ NVIDIA Jetson ์ฅ์น๋ฅผ ์ค์ ํ์ญ์์ค. Ultralytics YOLO11
-
JetPack ๋ฒ์ ์ ๋ฐ๋ผ DeepStream SDK๋ฅผ ์ค์นํฉ๋๋ค.
- JetPack 4.6.4์ ๊ฒฝ์ฐ, DeepStream 6.0.1์ ์ค์นํฉ๋๋ค .
- JetPack 5.1.3์ ๊ฒฝ์ฐ, DeepStream 6.3์ ์ค์นํฉ๋๋ค.
- For JetPack 6.1, install DeepStream 7.1
ํ
์ด ๊ฐ์ด๋์์๋ Jetson ์ฅ์น์ DeepStream SDK๋ฅผ ์ค์นํ๋ Debian ํจํค์ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ต๋๋ค. ๋ํ Jetson์ DeepStream SDK(์์นด์ด๋ธ) ๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ๋ ๊ฑฐ์ ๋ฒ์ ์ DeepStream์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
๋ฅ์คํธ๋ฆผ ๊ตฌ์ฑ YOLO11
์ฌ๊ธฐ์์๋ YOLO ๋ชจ๋ธ์ ๋ํ NVIDIA DeepStream SDK ์ง์์ ํฌํจํ๋ marcoslucianops/DeepStream-Yolo GitHub ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๊ธฐ์ฌํด ์ฃผ์ marcoslucianops์ ๋ ธ๊ณ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
-
Install Ultralytics with necessary dependencies
-
Clone the DeepStream-Yolo repository
-
Copy the
export_yoloV8.py
file fromDeepStream-Yolo/utils
directory to theultralytics
ํด๋์ฐธ๊ณ
export_yoloV8.py
works for both YOLOv8 and YOLO11 models. -
Download Ultralytics YOLO11 detection model (.pt) of your choice from YOLO11 releases. Here we use yolo11s.pt.
์ฐธ๊ณ
์ฌ์ฉ์ ์ง์ ํ๋ จ๋ YOLO11 ๋ชจ๋ธ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
-
๋ชจ๋ธ๋ก ๋ณํ ONNX
์ ๋ช ๋ น์ ์๋ ์ธ์๋ฅผ ์ ๋ฌํฉ๋๋ค.
DeepStream 6.0.1์ ๊ฒฝ์ฐ, ์ต์ 12 ์ดํ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ ์ต์ ์ 16์ ๋๋ค.
์ถ๋ก ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด(๊ธฐ๋ณธ๊ฐ: 640) ๋ค์๊ณผ ๊ฐ์ด ํ์ธ์.
1280์ ์์ ๋๋ค:
ONNX ๋ชจ๋ธ์ ๋จ์ํํ๋ ค๋ฉด (DeepStream >= 6.0)
๋์ ๋ฐฐ์น ํฌ๊ธฐ ์ฌ์ฉ(DeepStream >= 6.1)
์ ์ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด(์: ๋ฐฐ์น ํฌ๊ธฐ = 4) ๋ค์๊ณผ ๊ฐ์ด ํ์ธ์.
-
Copy the generated
.onnx
model file andlabels.txt
file to theDeepStream-Yolo
ํด๋ -
์ค์น๋ JetPack ๋ฒ์ ์ ๋ฐ๋ผ CUDA ๋ฒ์ ์ ์ค์ ํฉ๋๋ค.
JetPack 4.6.4์ ๊ฒฝ์ฐ:
JetPack 5.1.3์ ๊ฒฝ์ฐ:
For Jetpack 6.1:
-
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ปดํ์ผ
-
ํธ์ง
config_infer_primary_yoloV8.txt
file according to your model (for YOLO11s with 80 classes) -
ํธ์ง
deepstream_app_config
ํ์ผ -
๋ค์์์ ๋์์ ์์ค๋ฅผ ๋ณ๊ฒฝํ ์๋ ์์ต๋๋ค.
deepstream_app_config
ํ์ผ์ ์ ํํฉ๋๋ค. ์ฌ๊ธฐ์ ๊ธฐ๋ณธ ๋น๋์ค ํ์ผ์ด ๋ก๋๋ฉ๋๋ค.
์ถ๋ก ์คํ
์ฐธ๊ณ
์ถ๋ก ์ ์์ํ๊ธฐ ์ ์ TensorRT ์์ง ํ์ผ์ ์์ฑํ๋ ๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฝ๋๋ค. ๊ทธ๋ฌ๋ ์กฐ๊ธ๋ง ๊ธฐ๋ค๋ ค์ฃผ์ธ์.
ํ
If you want to convert the model to FP16 precision, simply set model-engine-file=model_b1_gpu0_fp16.engine
๊ทธ๋ฆฌ๊ณ network-mode=2
๋ด๋ถ config_infer_primary_yoloV8.txt
INT8 ๋ณด์
์ถ๋ก ์ INT8 ์ ๋ฐ๋๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ์ผ ํฉ๋๋ค.
์ฐธ๊ณ
Currently INT8 does not work with TensorRT 10.x. This section of the guide has been tested with TensorRT 8.x which is expected to work.
-
์ค์
OPENCV
ํ๊ฒฝ ๋ณ์ -
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ปดํ์ผ
-
COCO ๋ฐ์ดํฐ ์ธํธ์ ๊ฒฝ์ฐ val2017๋ฅผ ํด๋ฆญํ๊ณ ์ถ์ถํ ๋ค์
DeepStream-Yolo
ํด๋ -
๋ณด์ ์ด๋ฏธ์ง๋ฅผ ์ํ ์ ๋๋ ํฐ๋ฆฌ ๋ง๋ค๊ธฐ
-
๋ค์์ ์คํํ์ฌ COCO ๋ฐ์ดํฐ ์ธํธ์์ 1000๊ฐ์ ๋ฌด์์ ์ด๋ฏธ์ง๋ฅผ ์ ํํ์ฌ ๋ณด์ ์ ์คํํฉ๋๋ค.
์ฐธ๊ณ
NVIDIA ๋ ์ข์ ์ ํ๋๋ฅผ ์ป๊ธฐ ์ํด ์ต์ 500๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๊ถ์ฅํฉ๋๋ค. ์ด ์์์๋ ๋ ๋์ ์ ํ๋๋ฅผ ์ป๊ธฐ ์ํด 1000๊ฐ์ ์ด๋ฏธ์ง๊ฐ ์ ํ๋์์ต๋๋ค(์ด๋ฏธ์ง๊ฐ ๋ง์์๋ก ์ ํ๋๊ฐ ๋์์ง). ๋จธ๋ฆฌ -1000์์ ์ค์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ด๋ฏธ์ง๊ฐ 2000๊ฐ์ธ ๊ฒฝ์ฐ -2000์ผ๋ก ์ค์ ํฉ๋๋ค. ์ด ๊ณผ์ ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
-
์์ฑํ๊ธฐ
calibration.txt
ํ์ผ์ ์ ํํ ๋ชจ๋ ์ด๋ฏธ์ง๊ฐ ํฌํจ๋ -
ํ๊ฒฝ ๋ณ์ ์ค์
์ฐธ๊ณ
INT8_CALIB_BATCH_SIZE ๊ฐ์ด ๋์์๋ก ์ ํ๋๊ฐ ๋์์ง๊ณ ๋ณด์ ์๋๊ฐ ๋นจ๋ผ์ง๋๋ค. GPU ๋ฉ๋ชจ๋ฆฌ์ ๋ง๊ฒ ์ค์ ํ์ธ์.
-
์ ๋ฐ์ดํธ
config_infer_primary_yoloV8.txt
ํ์ผ์์
To
์ถ๋ก ์คํ
๋ฉํฐ์คํธ๋ฆผ ์ค์
๋จ์ผ ๋ฅ์คํธ๋ฆผ ์ ํ๋ฆฌ์ผ์ด์
์์ ์ฌ๋ฌ ์คํธ๋ฆผ์ ์ค์ ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ฅ์คํธ๋ฆผ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณ๊ฒฝํ๋ฉด ๋ฉ๋๋ค. deepstream_app_config.txt
ํ์ผ
-
์ํ๋ ์คํธ๋ฆผ ์์ ๋ฐ๋ผ ํ๊ณผ ์ด์ ๋ณ๊ฒฝํ์ฌ ๊ทธ๋ฆฌ๋ ํ์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์คํธ๋ฆผ์ด 4๊ฐ์ธ ๊ฒฝ์ฐ ํ 2๊ฐ์ ์ด 2๊ฐ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
-
์ค์
num-sources=4
๋ฅผ ํด๋ฆญํ๊ณuri
4๊ฐ์ ์คํธ๋ฆผ ์ค
์ถ๋ก ์คํ
๋ฒค์น๋งํฌ ๊ฒฐ๊ณผ
The following benchmarks summarizes how YOLO11 models perform at different TensorRT precision levels with an input size of 640x640 on NVIDIA Jetson Orin NX 16GB.
๋น๊ต ์ฐจํธ
์์ธ ๋น๊ต ํ
์ฑ๋ฅ
ํ์ | ์ํ | ์ถ๋ก ์๊ฐ(ms/im) |
---|---|---|
TensorRT (FP32) | โ | 8.64 |
TensorRT (FP16) | โ | 5.27 |
TensorRT (INT8) | โ | 4.54 |
ํ์ | ์ํ | ์ถ๋ก ์๊ฐ(ms/im) |
---|---|---|
TensorRT (FP32) | โ | 14.53 |
TensorRT (FP16) | โ | 7.91 |
TensorRT (INT8) | โ | 6.05 |
ํ์ | ์ํ | ์ถ๋ก ์๊ฐ(ms/im) |
---|---|---|
TensorRT (FP32) | โ | 32.05 |
TensorRT (FP16) | โ | 15.55 |
TensorRT (INT8) | โ | 10.43 |
ํ์ | ์ํ | ์ถ๋ก ์๊ฐ(ms/im) |
---|---|---|
TensorRT (FP32) | โ | 39.68 |
TensorRT (FP16) | โ | 19.88 |
TensorRT (INT8) | โ | 13.64 |
ํ์ | ์ํ | ์ถ๋ก ์๊ฐ(ms/im) |
---|---|---|
TensorRT (FP32) | โ | 80.65 |
TensorRT (FP16) | โ | 39.06 |
TensorRT (INT8) | โ | 22.83 |
๊ฐ์ฌ
์ด ๊ฐ์ด๋๋ ์๋ ์คํ๋์ค์ ์น๊ตฌ์ธ ๋ฝ์จํ์ ์ผ๋ ์ธ์ด ์ฒ์์ ๋ง๋ค์์ต๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
NVIDIA Jetson ์ฅ์น์์ Ultralytics YOLO11 ์ ์ค์ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํฉ๋๊น?
NVIDIA Jetson ์ฅ์น์์ Ultralytics YOLO11 ์ ์ค์ ํ๋ ค๋ฉด ๋จผ์ ์ฌ์ฉ ์ค์ธ JetPack ๋ฒ์ ๊ณผ ํธํ๋๋ DeepStream SDK๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค. ๋น ๋ฅธ ์์ ๊ฐ์ด๋ ์ ๋จ๊ณ๋ณ ๊ฐ์ด๋์ ๋ฐ๋ผ YOLO11 ๋ฐฐํฌ๋ฅผ ์ํด NVIDIA Jetson์ ๊ตฌ์ฑํฉ๋๋ค.
NVIDIA Jetson์์ YOLO11 ๊ณผ ํจ๊ป TensorRT ์ ์ฌ์ฉํ๋ฉด ์ด๋ค ์ด์ ์ด ์๋์?
YOLO11 ๊ณผ ํจ๊ป TensorRT ์ ์ฌ์ฉํ๋ฉด ์ถ๋ก ์ ์ํ ๋ชจ๋ธ์ ์ต์ ํํ์ฌ ์ง์ฐ ์๊ฐ์ ํฌ๊ฒ ์ค์ด๊ณ ์ฒ๋ฆฌ๋์ ํฅ์์ํต๋๋ค. NVIDIA Jetson ์ฅ์น์์ TensorRT ๋ ์ด์ด ์ตํฉ, ์ ๋ฐ ๋ณด์ ๋ฐ ์ปค๋ ์๋ ํ๋์ ํตํด ๊ณ ์ฑ๋ฅ, ์ ์ง์ฐ ๋ฅ ๋ฌ๋ ์ถ๋ก ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์คํํ ์ ์์ผ๋ฉฐ, ํนํ ๋น๋์ค ๋ถ์ ๋ฐ ์์จ ๋จธ์ ๊ณผ ๊ฐ์ ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฉํฉ๋๋ค.
๋ค๋ฅธ NVIDIA Jetson ํ๋์จ์ด์์ DeepStream SDK๋ฅผ ์ฌ์ฉํ์ฌ Ultralytics YOLO11 ์คํํ ์ ์์ต๋๊น?
์, ๋ฐฐํฌ ๊ฐ์ด๋ Ultralytics YOLO11 ์ DeepStream SDK ๋ฐ TensorRT ๋ ์ ์ฒด NVIDIA Jetson ๋ผ์ธ์ ์์ ํธํ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ ฏํฉ 5.1.3์ด ์ค์น๋ ์ ฏ์จ ์ค๋ฆฐ NX 16GB ๋ฐ ์ ฏํฉ 4.6.4๊ฐ ์ค์น๋ ์ ฏ์จ ๋๋ ธ 4GB์ ๊ฐ์ ์ฅ์น๊ฐ ํฌํจ๋ฉ๋๋ค. ์์ธํ ๋จ๊ณ๋ YOLO11 ์ DeepStream ๊ตฌ์ฑ ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
YOLO11 ๋ชจ๋ธ์ DeepStream์ฉ ONNX ๋ชจ๋ธ๋ก ๋ณํํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
YOLO11 ๋ชจ๋ธ์ DeepStream๊ณผ ํจ๊ป ๋ฐฐํฌํ ์ ์๋๋ก ONNX ํ์์ผ๋ก ๋ณํํ๋ ค๋ฉด utils/export_yoloV8.py
์คํฌ๋ฆฝํธ์์ DeepStream-Yolo ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ ์ฅํฉ๋๋ค.
๋ค์์ ๋ช ๋ น์ด ์์์ ๋๋ค:
๋ชจ๋ธ ๋ณํ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ชจ๋ธ ๋ด๋ณด๋ด๊ธฐ ์น์ ์ ์ฐธ์กฐํ์ธ์.
NVIDIA ์์ YOLO ์ ์ฑ๋ฅ ๋ฒค์น๋งํฌ๋ ์ด๋ป๊ฒ ๋๋์?
The performance of YOLO11 models on NVIDIA Jetson Orin NX 16GB varies based on TensorRT precision levels. For example, YOLO11s models achieve:
- FP32 Precision: 14.6 ms/im, 68.5 FPS
- FP16 ์ ๋ฐ๋: 7.94ms/im, 126 FPS
- INT8 Precision: 5.95 ms/im, 168 FPS
TensorRT์ด ๋ฒค์น๋งํฌ๋ NVIDIA Jetson ํ๋์จ์ด์์ ์ต์ ํ๋ YOLO11 ๋ชจ๋ธ ์ฌ์ฉ์ ํจ์จ์ฑ๊ณผ ์ฑ๋ฅ์ ๊ฐ์กฐํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ฒค์น๋งํฌ ๊ฒฐ๊ณผ ์น์ ์ ์ฐธ์กฐํ์ธ์.