Deepstream-Yolo
Nvidia Deepstream SDK 7.1 / 7.0 / 6.4 / 6.3 / 6.2 / 6.1.1 / 6.1 / 6.0.1 / 6.0 / 5.1 การกำหนดค่าสำหรับรุ่น YOLO
สำหรับตอนนี้ฉันถูก จำกัด สำหรับการอัปเดตบางอย่าง ขอบคุณสำหรับความเข้าใจ
yolo-pose: https://github.com/marcoslucianops/deepstream-yolo-pose
yolo-seg: https://github.com/marcoslucianops/deepstream-yolo-seg
YOLO-FACE: https://github.com/marcoslucianops/deepstream-yolo-face
สำคัญ: โปรดส่งออกโมเดล ONNX ด้วยไฟล์ส่งออกใหม่สร้างเอ็นจิน Tensorrt อีกครั้งด้วยไฟล์ที่อัปเดตและใช้ไฟล์ config_infer_primary ใหม่ตามรุ่นของคุณ
การปรับปรุงที่เก็บนี้
- สนับสนุนการสอบเทียบ INT8
- รองรับรุ่นที่ไม่ใช่สี่เหลี่ยมจัตุรัส
- โมเดลมาตรฐาน
- รองรับโมเดล DarkNet (YOLOV4 ฯลฯ ) โดยใช้ CFG และการแปลงน้ำหนักด้วย GPU หลังการประมวลผล
- รองรับ RT-Detr, Co-Detr (MMDETECTION), YOLO-NAS, PPYOLOE+, PPYOLOE, Damo-Yolo, Gold-Yolo, Rtmdet (Mmyolo), โยลอลล็อกซ์, Yolov9, yolov8, yolov7, yolov6 และ yolov5
- ตัวแยกวิเคราะห์ GPU BBOX
- ตัวแยกวิเคราะห์รุ่น ONNX แบบกำหนดเอง
- ขนาดแบทช์แบบไดนามิก
- การสอบเทียบ INT8 (PTQ) สำหรับโมเดลส่งออก DarkNet และ ONNX
เริ่มต้น
- ความต้องการ
- รุ่นที่รองรับ
- เกณฑ์มาตรฐาน
- การติดตั้ง DGPU
- การใช้งานขั้นพื้นฐาน
- การใช้นักเทียบท่า
- การกำหนดค่า NMS
- หมายเหตุ
- การสอบเทียบ Int8
- การใช้งาน YOLOV5
- การใช้งาน YOLOV6
- การใช้งาน yolov7
- การใช้งาน yolov8
- การใช้งาน yolov9
- การใช้งานโยก
- การใช้โยล็อก
- การใช้งาน rtmdet (mmyolo)
- การใช้ทอง
- การใช้งาน Damo-Yolo
- PP-YOLOE / PP-YOLOE+ การใช้งาน
- การใช้งาน YOLO-NAS
- การใช้งาน Co-Detr (mmdetection)
- การใช้งาน rt-detr pytorch
- การใช้งานพาย RT-Detr
- การใช้งาน RT-Detr Ultralytics
- การใช้โมเดลที่กำหนดเองของคุณ
- Yolo Gies หลายตัว
ความต้องการ
Deepstream 7.1 บนแพลตฟอร์ม x86
- Ubuntu 22.04
- CUDA 12.6 อัปเดต 2
- Tensorrt 10.3 GA (10.3.0.26)
- Nvidia Driver 535.183.06 (Data Center / Tesla Series) / 560.35.03 (Titan, GeForce RTX / GTX Series และ RTX / Quadro Series)
- Nvidia Deepstream SDK 7.1
- Gstreamer 1.20.3
- Deepstream-Yolo
Deepstream 7.0 บนแพลตฟอร์ม x86
- Ubuntu 22.04
- CUDA 12.2 อัปเดต 2
- Tensorrt 8.6 Ga (8.6.1.6)
- Nvidia Driver 535 (> = 535.161.08)
- Nvidia Deepstream SDK 7.0
- Gstreamer 1.20.3
- Deepstream-Yolo
Deepstream 6.4 บนแพลตฟอร์ม x86
- Ubuntu 22.04
- CUDA 12.2 อัปเดต 2
- Tensorrt 8.6 Ga (8.6.1.6)
- Nvidia Driver 535 (> = 535.104.12)
- Nvidia Deepstream SDK 6.4
- Gstreamer 1.20.3
- Deepstream-Yolo
Deepstream 6.3 บนแพลตฟอร์ม x86
- Ubuntu 20.04
- CUDA 12.1 อัปเดต 1
- Tensorrt 8.5 Ga Update 2 (8.5.3.1)
- Nvidia Driver 525 (> = 525.125.06)
- Nvidia Deepstream SDK 6.3
- Gstreamer 1.16.3
- Deepstream-Yolo
Deepstream 6.2 บนแพลตฟอร์ม x86
- Ubuntu 20.04
- Cuda 11.8
- Tensorrt 8.5 Ga Update 1 (8.5.2.2)
- Nvidia Driver 525 (> = 525.85.12)
- Nvidia Deepstream SDK 6.2
- Gstreamer 1.16.3
- Deepstream-Yolo
Deepstream 6.1.1 บนแพลตฟอร์ม x86
- Ubuntu 20.04
- CUDA 11.7 อัปเดต 1
- Tensorrt 8.4 GA (8.4.1.5)
- Nvidia Driver 515.65.01
- Nvidia Deepstream SDK 6.1.1
- Gstreamer 1.16.2
- Deepstream-Yolo
Deepstream 6.1 บนแพลตฟอร์ม x86
- Ubuntu 20.04
- CUDA 11.6 อัปเดต 1
- Tensorrt 8.2 Ga Update 4 (8.2.5.1)
- Nvidia Driver 510.47.03
- Nvidia Deepstream SDK 6.1
- Gstreamer 1.16.2
- Deepstream-Yolo
Deepstream 6.0.1 / 6.0 บนแพลตฟอร์ม x86
- Ubuntu 18.04
- CUDA 11.4 อัปเดต 1
- Tensorrt 8.0 GA (8.0.1)
- Nvidia Driver 470.63.01
- Nvidia Deepstream SDK 6.0.1 / 6.0
- Gstreamer 1.14.5
- Deepstream-Yolo
Deepstream 5.1 บนแพลตฟอร์ม x86
- Ubuntu 18.04
- Cuda 11.1
- Tensorrt 7.2.2
- Nvidia Driver 460.32.03
- Nvidia Deepstream SDK 5.1
- Gstreamer 1.14.5
- Deepstream-Yolo
Deepstream 7.1 บนแพลตฟอร์ม Jetson
- Jetpack 6.1
- Nvidia Deepstream SDK 7.1
- Deepstream-Yolo
Deepstream 7.0 บนแพลตฟอร์ม Jetson
- Jetpack 6.0
- Nvidia Deepstream SDK 7.0
- Deepstream-Yolo
Deepstream 6.4 บนแพลตฟอร์ม Jetson
- jetpack 6.0 dp
- Nvidia Deepstream SDK 6.4
- Deepstream-Yolo
Deepstream 6.3 บนแพลตฟอร์ม Jetson
- Jetpack 5.1.3 / 5.1.2
- Nvidia Deepstream SDK 6.3
- Deepstream-Yolo
Deepstream 6.2 บนแพลตฟอร์ม Jetson
- Jetpack 5.1.3 / 5.1.2 / 5.1.1 / 5.1
- Nvidia Deepstream SDK 6.2
- Deepstream-Yolo
Deepstream 6.1.1 บนแพลตฟอร์ม Jetson
- Jetpack 5.0.2
- Nvidia Deepstream SDK 6.1.1
- Deepstream-Yolo
Deepstream 6.1 บนแพลตฟอร์ม Jetson
- jetpack 5.0.1 dp
- Nvidia Deepstream SDK 6.1
- Deepstream-Yolo
Deepstream 6.0.1 / 6.0 บนแพลตฟอร์ม Jetson
- Jetpack 4.6.4
- Nvidia Deepstream SDK 6.0.1 / 6.0
- Deepstream-Yolo
Deepstream 5.1 บนแพลตฟอร์ม Jetson
- Jetpack 4.5.1
- Nvidia Deepstream SDK 5.1
- Deepstream-Yolo
รุ่นที่รองรับ
- Darknet
- Mobilenet-Yolo
- yolo-fair
- YOLOV5
- YOLOV6
- YOLOV7
- YOLOV8
- YOLOV9
- สีน้ำตาลแดง
- โยล็อกซ์
- rtmdet (mmyolo)
- สีทอง
- Damo-Yolo
- PP-YOLOE / PP-YOLOE+
- YOLO-NAS
- co-detr (mmdetection)
- Rt-detr
การใช้งานขั้นพื้นฐาน
1. ดาวน์โหลด repo
git clone https://github.com/marcoslucianops/DeepStream-Yolo.git
cd DeepStream-Yolo
2. ดาวน์โหลดไฟล์ cfg และ weights จาก DarkNet repo ไปยังโฟลเดอร์ Deepstream-Yolo
3. รวบรวม lib
3.1. ตั้งค่า CUDA_VER ตามรุ่น Deepstream ของคุณ
แพลตฟอร์ม x86
DeepStream 7.1 = 12.6
DeepStream 7.0 / 6.4 = 12.2
DeepStream 6.3 = 12.1
DeepStream 6.2 = 11.8
DeepStream 6.1.1 = 11.7
DeepStream 6.1 = 11.6
DeepStream 6.0.1 / 6.0 = 11.4
DeepStream 5.1 = 11.1
แพลตฟอร์ม Jetson
DeepStream 7.1 = 12.6
DeepStream 7.0 / 6.4 = 12.2
DeepStream 6.3 / 6.2 / 6.1.1 / 6.1 = 11.4
DeepStream 6.0.1 / 6.0 / 5.1 = 10.2
3.2. สร้าง lib
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
4. แก้ไขไฟล์ config_infer_primary.txt ตามรุ่นของคุณ (ตัวอย่างสำหรับ yolov4)
[property]
...
custom-network-config=yolov4.cfg
model-file=yolov4.weights
...
หมายเหตุ : สำหรับโมเดล DarkNet โดยค่าเริ่มต้นตั้งค่าขนาดแบทช์แบบไดนามิก หากต้องการใช้ขนาดแบทช์แบบคงที่
...
force-implicit-batch-dim=1
...
5. วิ่ง
deepstream-app -c deepstream_app_config.txt
หมายเหตุ : ไฟล์ Tensorrt Engine อาจใช้เวลานานมากในการสร้าง (บางครั้งมากกว่า 10 นาที)
หมายเหตุ : หากคุณต้องการใช้โมเดล YOLOV2 หรือ YOLOV2-TINY ให้เปลี่ยนไฟล์ deepstream_app_config.txt ก่อนเรียกใช้
...
[primary-gie]
...
config-file=config_infer_primary_yoloV2.txt
...
การใช้นักเทียบท่า
แพลตฟอร์ม x86
nvcr.io/nvidia/deepstream:7.1-gc-triton-devel
nvcr.io/nvidia/deepstream:7.1-triton-multiarch
แพลตฟอร์ม Jetson
nvcr.io/nvidia/deepstream:7.1-triton-multiarch
หมายเหตุ : ในการรวบรวม nvdsinfer_custom_impl_Yolo คุณต้องติดตั้ง g ++ ภายในคอนเทนเนอร์
apt-get install build-essential
หมายเหตุ : ด้วย DeepStream 7.1 คอนเทนเนอร์ Docker ไม่ได้บรรจุไลบรารีที่จำเป็นสำหรับการดำเนินการมัลติมีเดียบางอย่างเช่นการแยกวิเคราะห์ข้อมูลเสียงการถอดรหัส CPU และการเข้ารหัส CPU การเปลี่ยนแปลงนี้อาจส่งผลกระทบต่อการประมวลผลสตรีมวิดีโอ/ไฟล์บางอย่างเช่น MP4 ซึ่งรวมถึงแทร็กเสียง โปรดเรียกใช้สคริปต์ด้านล่างภายในอิมเมจ Docker เพื่อติดตั้งแพ็คเกจเพิ่มเติมที่อาจจำเป็นต้องใช้คุณสมบัติ DeepStreamsDK ทั้งหมด:
/opt/nvidia/deepstream/deepstream/user_additional_install.sh
การกำหนดค่า NMS
หากต้องการเปลี่ยนค่า nms-iou-threshold , ค่า pre-cluster-threshold และ topk , แก้ไขไฟล์ config_infer
[class-attrs-all]
nms-iou-threshold=0.45
pre-cluster-threshold=0.25
topk=300
หมายเหตุ : ตรวจสอบให้แน่ใจว่าตั้งค่า cluster-mode=2 ในไฟล์ config_infer
หมายเหตุ
บางครั้งในขณะที่เรียกใช้ไปป์ไลน์ Gstreamer หรือแอพตัวอย่างผู้ใช้สามารถพบข้อผิดพลาด: GLib (gthread-posix.c): Unexpected error from C library during 'pthread_setspecific': Invalid argument. Aborting. - ปัญหาเกิดขึ้นเนื่องจากข้อผิดพลาดในรุ่น glib 2.0-2.72 ซึ่งมาพร้อมกับ Ubuntu 22.04 ตามค่าเริ่มต้น ปัญหาได้รับการแก้ไขใน glib 2.76 และจำเป็นต้องมีการติดตั้งเพื่อแก้ไขปัญหา (https://github.com/gnome/glib/tree/2.76.6)
โยกย้าย glib ไปยังเวอร์ชันใหม่กว่า
pip3 install meson
pip3 install ninja
หมายเหตุ : ขอแนะนำให้ใช้ Python Virtualenv
git clone https://github.com/GNOME/glib.git
cd glib
git checkout 2.76.6
meson build --prefix=/usr
ninja -C build/
cd build/
ninja install
ตรวจสอบและยืนยันเวอร์ชัน GLIB ที่ติดตั้งใหม่:
pkg-config --modversion glib-2.0
บางครั้งด้วยสตรีม RTSP แอปพลิเคชันจะติดอยู่กับการเข้าถึง EOS นี่เป็นเพราะปัญหาในส่วนประกอบ RTPJitterBuffer ในการแก้ไขปัญหานี้สคริปต์ได้รับรายละเอียดที่จำเป็นเพื่ออัปเดตไลบรารี GSTRTPManager
/opt/nvidia/deepstream/deepstream/update_rtpmanager.sh
สารสกัดข้อมูลเมตา
คุณสามารถรับข้อมูลเมตาจาก Deepstream โดยใช้ Python และ C/C ++ สำหรับ C/C ++ คุณสามารถแก้ไขรหัสการทดสอบ deepstream-app หรือ deepstream-test สำหรับ Python คุณสามารถติดตั้งและแก้ไข DeepStream_python_apps ได้
โดยทั่วไปคุณต้องจัดการ NvDsObjectMeta (python / c / c ++) and NvDsFrameMeta (python / c / c ++) เพื่อรับฉลากตำแหน่ง ฯลฯ ของ bboxes
โครงการของฉัน: https://www.youtube.com/marcoslucianotv