2019年1月31日 星期四

Jetson TX2上DeepStream安裝與範例執行 (deepstream-plugins)

DeepStream SDK是為大規模創建和部屬基於AI的視智慧視訊分析(IVA)方案而設計的,它提供完整的框架和所有基本構建模組。它可以讓開發者專注於自己的核心深度學習網路和應用,而不是從頭開始設計端到端解決方案。

應用程式開發人員可以使用此SDK快速構建原型,並構建從智慧相機到智慧城市應用裝置,機器人和工業自動化等產品。

NVIDIA DeepStream SDK官網介紹


Jetson上的DeepStream SDK使用Jetpack,包括L4T,多媒體API,CUDA和TensorRT。 SDK提供了豐富的外掛和庫集合,使用Gstreamer框架構建,使開發人員能夠構建靈活的應用程式,將視訊轉化為有價值的見解。DeepStream還附帶了示例應用程式,包括原始碼和應用程​​序適配指南,以幫助開發人員快速開始構建。

本篇執行的平台為 Jetson TX2,搭配軟體版本為:
1. Jetpack 3.3
2. CUDA 9.0
3. TensorRT 4.0

包含 DeepStream 安裝和範例 (deepstream-plugins) 執行測試兩個部分。主要紀錄在執行過程中遇到的問題,以及解決方式。

1. Jetson TX2上DeepStream安裝過程

首先,安裝步驟在以下這篇文章有完整的說明 ,按照其步驟執行即可。
Jetson TX2上运行Deepstream范例

錯誤 1.

在執行安裝的最後一步驟,測試安裝結果時:
$ nvgstiva-app -c ${HOME}/configs/PGIE-FP16-CarType-CarMake-CarColor.txt

出現以下錯誤訊息:
error_message: Segmentation fault (core dumped)

解決方式:
參考此篇NVIDIA論壇的回覆,執行以下指令將快取暫存內容清除即可。
$ rm ~/Model/*/*.cache
$ rm ~/.cache/gstreamer-1.0/ -rf


錯誤 2.

解決了Segmentation fault之後,接著很快就遇到另一個錯誤訊息。
error_message: Error from src_elem: Your GStreamer installation is missing a plug-in.
Missing decoder: H.264 (High Profile)

此錯誤主要是因為我的系統中缺少H.264的decoder (gstreamer),GStreamer的安裝指令如下。
$ sudo apt-get install gstreamer1.0-libav

安裝完成後應該就能夠順利執行DeepStream指令了!

2. deepstream-plugins範例執行 (github)


(2.1) 按照 github 上 Readme 說明,先安裝 Pre-requisites,及Setup步驟。

Installing Pre-requisites:

Install GStreamer pre-requisites using:
$ sudo apt-get install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
Install Google flags using:
$ sudo apt-get install libgflags-dev
1. 修改Makefile.config,按照個人電腦配置設定,參考如下:
#Update the install directory paths for dependencies below CXX=g++ 
CUDA_VER:=9.0
#Set to TEGRA for jetson or TESLA for dGPU's
PLATFORM:=TEGRA
#For Tesla Plugins 

OPENCV_INSTALL_DIR:= /path/to/opencv-3.4.x
TENSORRT_INSTALL_DIR:= /path/to/TensorRT-5.x
DEEPSTREAM_INSTALL_DIR:= /path/to/DeepStream_Release_3.0
#For Tegra Plugins
NVGSTIVA_APP_INSTALL_DIR:= /home/nvidia/nvgstiva-app_sources


2. 下載YOLOv3模型 (For yolo v3)
$ wget https://raw.githubusercontent.com/pjreddie/darknet/master/cfg/yolov3.cfg
$ wget https://pjreddie.com/media/files/yolov3.weights

3. 修改 "data/yolo/calibration_images.txt" 輸入圖片路徑

4. 執行安裝 (For tegra)
$cd sources/plugins/gst-yoloplugin-tegra
make && sudo make install


(2.2) 執行 nvgstiva-app [TEGRA platform only]

1. 按照 github 說明修改配置文件 config/nvgstiva-app_yolo_config.txt

2. 執行指令
$ nvgstiva-app -c config/nvgstiva-app_yolo_config.txt

錯誤 1.

輸入執行指令後,遇到以下錯誤訊息
** WARN: : Using software video decoder instead of hardware accelerated OMX decoder. Unsupported format. Try re-encoding.
** ERROR: : Failed to link decodebin to pipeline 
** INFO: : Pipeline running 

解決方式:
參考此篇論壇回復,需要再另外安裝以下套件:
$ apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools



(2.3) 測試trt-yolo-app

Object Detection using trt-yolo-app

$ cd sources/apps/trt-yolo
$ make && sudo make install
$ cd ../../../
$ trt-yolo-app --flagfile=config/yolov3.txt


錯誤 1.

trt-yolo-app編譯錯誤,錯誤訊息如下。

trt_utils.h:83:22: error: ‘nvinfer1::DimsHW YoloTinyMaxpoolPaddingFormula::compute(nvinfer1::DimsHW, nvinfer1::DimsHW, nvinfer1::DimsHW, nvinfer1::DimsHW, nvinfer1::DimsHW, const char*) const’ marked ‘override’, but does not override 
nvinfer1::DimsHW compute(nvinfer1::DimsHW inputDims, nvinfer1::DimsHW kernelSize,  




解決方式:

參考此篇論壇回復,deepstream-plugins改為使用DS2 Release版本即可。(下載連結)

錯誤 2. 選擇不同的YOLO模型

無法透過選擇不同的yolo.txt,去切換yolo模型 (yolov3.txt -> yolov3-tiny.txt)

解決方式:
(1) 需要修改文件 “./sources/lib/network_config.h”,並重新編譯才行。

(2) 並且需要將模型檔案放置於“./data/”中。



2019年1月28日 星期一

Jetson TX2安裝OpenCV3.4

TX2 install OpenCV3.4

在將TX2上原本的OpenCV升級至v3.4.0的過程中遇到了一些阻礙,將問題紀錄下來。


1. 安裝教學

此篇安裝教學寫得非常詳細,安裝的步驟大致與其相同
How to Install OpenCV (3.4.0) on Jetson TX2

在OpenCV安裝(更新)完成之後,能夠順利地import cv2執行。
但再重新開機之後卻會出現如下錯誤。




Error message
"ImportError: /usr/local/lib/python3.5/dist-packages/cv2.cpython-35m-aarch64-linux-gnu.so: undefined symbol: _ZTIN2cv3dnn19experimental_dnn_v35LayerE"


2. 解決方式

這個問題主要的原因是因為,需要更新環境變數 (/etc/bash.bashrc)。

以下這篇文章說明了一些可能問題的解決方法,其中也包括更新環境變數的方法。
Jetson TX2--python3下编译安装opencv3.4


1. 開啟文件 (/etc/bash.bashrc)
sudo vim /etc/bash.bashrc

2. 在文件底部加入以下內容,並儲存
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

#添加完成後應該會如下圖


之後就可以順利使用OpenCV囉~

apt-get update異常處理

1. 問題描述 系統環境:Ubuntu 18.04.3 LTS 執行apt-get update更新時遇到如下狀況 錯誤訊息: Err:1 http://security.ubuntu.com/ubuntu bionic-security InRe...