2020# This script prepares the pretrained detectnet model for quick deployment with Triton
2121# inside the Docker container
2222
23+ if [ -n " $TENSORRT_COMMAND " ]; then
24+ # If a custom tensorrt is used, ensure it's lib directory is added to the LD_LIBRARY_PATH
25+ export LD_LIBRARY_PATH=" ${LD_LIBRARY_PATH} :$( readlink -f $( dirname ${TENSORRT_COMMAND} ) /../../../lib/$( uname -p) -linux-gnu/) "
26+ fi
27+ if [ -z " $ISAAC_ROS_WS " ] && [ -n " $ISAAC_ROS_ASSET_MODEL_PATH " ]; then
28+ ISAAC_ROS_WS=" $( readlink -f $( dirname ${ISAAC_ROS_ASSET_MODEL_PATH} ) /../../../..) "
29+ fi
30+
2331# default arguments
32+ ASSET_NAME=" peoplenet"
33+ MODELS_DIR=" ${ISAAC_ROS_WS} /isaac_ros_assets/models/${ASSET_NAME} "
34+ EULA_URL=" https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/peoplenet?version=deployable_quantized_onnx_v2.6.3"
35+ ASSET_DIR=" ${MODELS_DIR} "
36+ ASSET_INSTALL_PATHS=" ${ASSET_DIR} /1/model.plan"
37+
2438MODEL_LINK=" https://api.ngc.nvidia.com/v2/models/org/nvidia/team/tao/peoplenet/deployable_quantized_onnx_v2.6.3/files?redirect=true&path=resnet34_peoplenet.onnx"
2539MODEL_FILE_NAME=" resnet34_peoplenet.onnx"
2640HEIGHT=" 544"
@@ -30,6 +44,8 @@ CONFIG_FILE="peoplenet_config.pbtxt"
3044PRECISION=" int8"
3145MAX_BATCH_SIZE=" 16"
3246
47+ source " ${ISAAC_ROS_ASSET_EULA_SH:- isaac_ros_asset_eula.sh} "
48+
3349function print_parameters() {
3450 echo
3551 echo " ***************************"
@@ -45,16 +61,16 @@ function print_parameters() {
4561}
4662
4763function check_labels_files() {
48- if [[ ! -f " labels.txt" ]]
64+ if [[ ! -f " ${1 :- .} / labels.txt" ]]
4965 then
5066 echo " Labels file does not exist with the model."
51- touch labels.txt
67+ touch ${1 :- .} / labels.txt
5268 echo " Please enter number of labels."
5369 read N_LABELS
5470 for (( i= 0 ; i < $N_LABELS ; i= i+ 1 )) ; do
5571 echo " Please enter label string"
5672 read label
57- echo $label >> labels.txt
73+ echo $label >> ${1 :- .} / labels.txt
5874 done
5975 else
6076 echo " Labels file received with model."
@@ -80,19 +96,40 @@ function setup_model() {
8096 echo Creating Directory : " ${OUTPUT_PATH} /1"
8197 rm -rf ${OUTPUT_PATH}
8298 mkdir -p ${OUTPUT_PATH} /1
83- cd ${OUTPUT_PATH} /1
8499 echo Downloading .onnx file from $MODEL_LINK
85100 echo From $MODEL_LINK
86- wget --content-disposition $MODEL_LINK -O resnet34_peoplenet.onnx
101+ isaac_ros_common_download_asset --url " ${MODEL_LINK} " --output-path " ${OUTPUT_PATH} /1/${MODEL_FILE_NAME} " --cache-path " ${ISAAC_ROS_DETECTNET_MODEL} "
102+ MODEL_DOWNLOAD_RESULT=$?
87103 echo Checking if labels.txt exists
88104 echo From $LABELS_LINK
89- wget --content-disposition $LABELS_LINK -O labels.txt
90- check_labels_files
105+ isaac_ros_common_download_asset --url " ${LABELS_LINK} " --output-path " ${OUTPUT_PATH} /1/labels.txt" --cache-path " ${ISAAC_ROS_DETECTNET_LABELS} "
106+ LABELS_DOWNLOAD_RESULT=$?
107+
108+ if [[ -n ${ISAAC_ROS_ASSETS_TEST} ]]; then
109+ if [[ ${MODEL_DOWNLOAD_RESULT} -ne 0 ]]; then
110+ echo " ERROR: Remote model does not match cached model."
111+ exit 1
112+ fi
113+ if [[ ${LABELS_DOWNLOAD_RESULT} -ne 0 ]]; then
114+ echo " ERROR: Remote labels do not match cached labels."
115+ exit 1
116+ fi
117+ exit 0
118+ elif [[ ${MODEL_DOWNLOAD_RESULT} -ne 0 ]]; then
119+ echo " ERROR: Failed to download model."
120+ exit 1
121+ elif [[ ${LABELS_DOWNLOAD_RESULT} -ne 0 ]]; then
122+ echo " ERROR: Failed to download labels."
123+ exit 1
124+ fi
125+
126+ check_labels_files " ${OUTPUT_PATH} /1"
127+
91128 echo Converting .onnx to a TensorRT Engine Plan
92129
93130 # if model doesnt have labels.txt file, then create one manually
94131 # create custom model
95- /usr/src/tensorrt/bin/trtexec \
132+ ${TENSORRT_COMMAND :- / usr/ src/ tensorrt/ bin/ trtexec} \
96133 --maxShapes=" input_1:0" :${MAX_BATCH_SIZE} x3x${HEIGHT} x${WIDTH} \
97134 --minShapes=" input_1:0" :1x3x${HEIGHT} x${WIDTH} \
98135 --optShapes=" input_1:0" :1x3x${HEIGHT} x${WIDTH} \
@@ -103,9 +140,13 @@ function setup_model() {
103140 --skipInference
104141
105142 echo Copying .pbtxt config file to ${OUTPUT_PATH}
106- export ISAAC_ROS_DETECTNET_PATH=$( ros2 pkg prefix isaac_ros_detectnet --share)
107- cp $ISAAC_ROS_DETECTNET_PATH /config/$CONFIG_FILE \
108- ${OUTPUT_PATH} /config.pbtxt
143+ if [ -n " $ISAAC_ROS_DETECTNET_CONFIG " ]; then
144+ cp $ISAAC_ROS_DETECTNET_CONFIG ${OUTPUT_PATH} /config.pbtxt
145+ else
146+ export ISAAC_ROS_DETECTNET_PATH=$( ros2 pkg prefix isaac_ros_detectnet --share)
147+ cp $ISAAC_ROS_DETECTNET_PATH /config/$CONFIG_FILE \
148+ ${OUTPUT_PATH} /config.pbtxt
149+ fi
109150 echo Completed quickstart setup
110151}
111152
0 commit comments