# deepstream 6.2-triton in python # 必要條件 ``` Ubuntu 20.04、GStreamer 1.16、CUDA 11.8、Triton 22.09 和 TensorRT 8.5.2.2 ``` # 查看版本 ``` nvcc -V ``` # 移除舊版 ``` sudo apt-get --purge remove nvidia* -y && \ sudo apt autoremove -y && \ sudo apt-get --purge remove "*cublas*" "cuda*" -y && \ sudo apt autoremove -y && \ sudo apt-get --purge remove "*nvidia*" -y && \ sudo apt-get autoremove -y && \ sudo rm -rf /usr/local/cuda/include/cudnn.h && \ sudo rm -rf /usr/local/cuda/lib64/libcudnn* ``` # 讀取可用驅動訊息 ``` ubuntu-drivers devices ``` # 安裝驅動 ``` sudo apt install nvidia-driver-525 ``` # 切換獨顯 ``` sudo prime-select nvidia ``` # 安裝 CUDA 11.8 ``` wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin && \ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600 && \ wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-ubuntu2004-11-8-local_11.8.0-520.61.05-1_amd64.deb && \ sudo dpkg -i cuda-repo-ubuntu2004-11-8-local_11.8.0-520.61.05-1_amd64.deb && \ sudo cp /var/cuda-repo-ubuntu2004-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/ && \ sudo apt-get update && \ sudo apt-get -y install cuda sudo apt install nvidia-cuda-toolkit ``` # NVIDIA Container Toolkit https://docs.docker.com/engine/install/ubuntu/#install-docker-ce ``` sudo apt-get install git-all sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin ``` ## docker 無法使用 gpu ``` distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update sudo apt-get install -y nvidia-docker2 sudo systemctl restart docker ``` ## 更新 ``` sudo apt-get update && sudo apt-get dist-upgrade ``` # docker 相關資料 https://github.com/ddasdkimo/nmns_deepstream.git # GUI ## 宿主機 ``` xhost + echo $DISPLAY ``` ## Docker ``` export DISPLAY=:0 ``` ## launch.json ### test1 ``` { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "deepstream_test_1.py", "console": "integratedTerminal", "justMyCode": true, "args": [ "/opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.h264" ] } ] } ``` ### test2 ``` { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "deepstream_test_2.py", "console": "integratedTerminal", "justMyCode": true, "args": [ "/opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.h264" ] } ] } ``` ### test3 ``` { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "deepstream_test_3.py", "console": "integratedTerminal", "justMyCode": true, "args": [ "-i", "rtsp://admin:ms123456@192.168.50.243:554/ch_100", "rtsp://admin:ms123456@192.168.50.243:554/ch_101", "rtsp://admin:ms123456@192.168.50.243:554/ch_102", "rtsp://admin:ms123456@192.168.50.243:554/ch_103", // "rtsp://admin:ms123456@192.168.50.243:554/ch_101", // "rtsp://admin:ms123456@192.168.50.243:554/ch_102", // "rtsp://admin:ms123456@192.168.50.243:554/ch_103", // "/opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.h264" ] } ] } ``` # 其他未未使用 -------- -------- -------- -------- -------- # 安裝 CUDA 12.0 ``` wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin && \ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600 && \ wget https://developer.download.nvidia.com/compute/cuda/12.0.0/local_installers/cuda-repo-ubuntu2004-12-0-local_12.0.0-525.60.13-1_amd64.deb && \ sudo dpkg -i cuda-repo-ubuntu2004-12-0-local_12.0.0-525.60.13-1_amd64.deb && \ sudo cp /var/cuda-repo-ubuntu2004-12-0-local/cuda-*-keyring.gpg /usr/share/keyrings/ && \ sudo apt-get update && \ sudo apt-get -y install cuda ``` # 安裝 CUDA 12.1 ``` wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin && \ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600 && \ wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda-repo-ubuntu2004-12-1-local_12.1.0-530.30.02-1_amd64.deb && \ sudo dpkg -i cuda-repo-ubuntu2004-12-1-local_12.1.0-530.30.02-1_amd64.deb && \ sudo cp /var/cuda-repo-ubuntu2004-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/ && \ sudo apt-get update && \ sudo apt-get -y install cuda ``` # 進入Docker後安裝特定套件 ``` /opt/nvidia/deepstream/deepstream/user_additional_install.sh ``` # deepstream-test1 ## 路徑 ``` /opt/nvidia/deepstream/deepstream/sources/deepstream_python_apps/apps/deepstream-test1 ``` # 刪除無用套件源 ``` sudo rm /etc/apt/sources.list ``` # 使用 Lambda Stack ## 安裝 ``` wget -nv -O- https://lambdalabs.com/install-lambda-stack.sh | sh - sudo reboot ``` ## Docker ``` sudo apt-get install docker.io nvidia-container-toolkit ``` # docker 免 root ``` sudo groupadd docker &&\ sudo gpasswd -a $USER docker &&\ newgrp docker &&\ docker ps ``` # docker compose ``` sudo apt install docker-compose ``` # 不顯示測試 ``` sink = Gst.ElementFactory.make("nveglglessink", "nvvideo-renderer") -> sink = Gst.ElementFactory.make("fakesink", "nvvideo-renderer") ``` # 輸出檔案 未測試 ``` sink = Gst.ElementFactory.make("filesink", "filesink") if not sink: sys.stderr.write(" Unable to create file sink \n") sink.set_property("location", "./out.mp4") ``` # libEGL warning: DRI2: could not open /dev/dri/card0 (No such file or directory) 無效 ``` sudo apt-get install --reinstall xserver-xorg-video-intel xserver-xorg-core sudo dpkg-reconfigure xserver-xorg ``` # 改用 opencv 輸出 ``` from multiprocessing import Process, Pipe recv_cv2_frame, send_cv2_frame = Pipe() def element_probe(pad, info, u_data): #probe code #in prob getting access to required buffer see DS-imagedata-multistream send_cv2_frame.send(n_frame) def show_video(recv_frame): while True: frame = recv_frame.recv() # display the frame to the screen cv2.imshow("cv2image", frame) cv2.waitKey(1) def main(): # DS Main Code .... p2 = Process(target=show_video, args=(recv_cv2_frame,)) p2.start() print("Starting pipeline \n") pipeline.set_state(Gst.State.PLAYING) try: loop.run() except: pass # cleanup pipeline.set_state(Gst.State.NULL) p2.terminate() p2.join() ```