# 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()
```