【剁手系列】Jetson Nano(四)跑通jetson-inference

这篇文章介绍怎么安装英伟达的AI学习库Jetson-Inference

(一)下载jetson-inference

剩下的过程就比较简单了。首先如果您没有安装git和cmake,先安装它们

sudo apt-get install git cmake

接着从git上克隆jetson-inference

git clone https://github.com/dusty-nv/jetson-inference
cd jetson-inference
git submodule update --init

(二)关键点

下面开始有分流了,有两种方法
第一种,直接可以下载网络模型的,可以直接配置cmake,选择你要下载的模型,以及是否安装pytorch等。

mkdir build
cd build
cmake ../

第二种,通过浏览器下载
进入tools这个目录,里面有download-models.sh这个文件,用gedit打开
根据函数里的网址,一个一个下好,我是在jetson-inference目录下新建了downloads这个文件夹,并把下载好的文件放在这个文件夹下面
然后修改刚刚打开的文件,找到attempt_download_file和attempt_download_archive这两个函数进行修改,修改完代码如下:

function attempt_download_file()
{
	local filename=$1
	
	if [ -e ../downloads/$filename ]
	then
		local wget_status=0
	else
		local wget_status=1
	fi
	
	local wget_status=$?

	if [ $wget_status != 0 ]; then
		echo "$LOG No such file '$filename' (error code=$wget_status)"
		return $wget_status
	fi

	mv ../downloads/$filename $OUTPUT_DIR
	return 0
}


function attempt_download_archive()
{
	local filename=$1
	
	if [ -e ../downloads/$filename ]
	then
		local wget_status=0
	else
		local wget_status=1
	fi

	if [ $wget_status != 0 ]; then
		echo "$LOG No such file '$filename' (error code=$wget_status)"
		return $wget_status
	fi

	tar -xzf ../downloads/$filename -C $OUTPUT_DIR

	local tar_status=$?

	if [ $tar_status != 0 ]; then
		echo "$LOG tar failed to extract '$filename' (error code=$tar_status)"
		return $tar_status
	fi

	rm ../downloads/$filename
	return 0
}

对于pytorch,则是另外一个install-pytorch.sh文件,找到网址,将whl下载下来,自己安装一下就行了,到时候在选择安装pytorch的界面别选就行了。
最后还是老套路,cmake,记住上面提到的事项。

mkdir build
cd build
cmake ../

cmake成功后,就需要编译了

cd jetson-inference/build			
make
sudo make install

(三)测试

cd jetson-inference/build/aarch64/bin
./detectnet-console peds_0.jpg output_0.jpg

结果如下

detectNet -- loading detection network model from:
          -- model        networks/SSD-Mobilenet-v2/ssd_mobilenet_v2_coco.uff
          -- input_blob   'Input'
          -- output_blob  'NMS'
          -- output_count 'NMS_1'
          -- class_labels networks/SSD-Mobilenet-v2/ssd_coco_labels.txt
          -- threshold    0.500000
          -- batch_size   1

[TRT]   TensorRT version 5.1.6
[TRT]   loading NVIDIA plugins...
[TRT]   Plugin Creator registration succeeded - GridAnchor_TRT
[TRT]   Plugin Creator registration succeeded - NMS_TRT
[TRT]   Plugin Creator registration succeeded - Reorg_TRT
[TRT]   Plugin Creator registration succeeded - Region_TRT
[TRT]   Plugin Creator registration succeeded - Clip_TRT
[TRT]   Plugin Creator registration succeeded - LReLU_TRT
[TRT]   Plugin Creator registration succeeded - PriorBox_TRT
[TRT]   Plugin Creator registration succeeded - Normalize_TRT
[TRT]   Plugin Creator registration succeeded - RPROI_TRT
[TRT]   Plugin Creator registration succeeded - BatchedNMS_TRT
[TRT]   completed loading NVIDIA plugins.
[TRT]   detected model format - UFF  (extension '.uff')
[TRT]   desired precision specified for GPU: FASTEST
[TRT]   requested fasted precision for device GPU without providing valid calibrator, disabling INT8
[TRT]   native precisions detected for GPU:  FP32, FP16
[TRT]   selecting fastest native precision for GPU:  FP16
[TRT]   attempting to open engine cache file networks/SSD-Mobilenet-v2/ssd_mobilenet_v2_coco.uff.1.1.GPU.FP16.engine
[TRT]   loading network profile from engine cache... networks/SSD-Mobilenet-v2/ssd_mobilenet_v2_coco.uff.1.1.GPU.FP16.engine
[TRT]   device GPU, networks/SSD-Mobilenet-v2/ssd_mobilenet_v2_coco.uff loaded
[TRT]   Using an engine plan file across different models of devices is not recommended and is likely to affect performance or even cause errors.
[TRT]   device GPU, CUDA engine context initialized with 3 bindings
[TRT]   binding -- index   0
               -- name    'Input'
               -- type    FP32
               -- in/out  INPUT
               -- # dims  3
               -- dim #0  3 (CHANNEL)
               -- dim #1  300 (SPATIAL)
               -- dim #2  300 (SPATIAL)
[TRT]   binding -- index   1
               -- name    'NMS'
               -- type    FP32
               -- in/out  OUTPUT
               -- # dims  3
               -- dim #0  1 (CHANNEL)
               -- dim #1  100 (SPATIAL)
               -- dim #2  7 (SPATIAL)
[TRT]   binding -- index   2
               -- name    'NMS_1'
               -- type    FP32
               -- in/out  OUTPUT
               -- # dims  3
               -- dim #0  1 (CHANNEL)
               -- dim #1  1 (SPATIAL)
               -- dim #2  1 (SPATIAL)
[TRT]   binding to input 0 Input  binding index:  0
[TRT]   binding to input 0 Input  dims (b=1 c=3 h=300 w=300) size=1080000
[TRT]   binding to output 0 NMS  binding index:  1
[TRT]   binding to output 0 NMS  dims (b=1 c=1 h=100 w=7) size=2800
[TRT]   binding to output 1 NMS_1  binding index:  2
[TRT]   binding to output 1 NMS_1  dims (b=1 c=1 h=1 w=1) size=4
device GPU, networks/SSD-Mobilenet-v2/ssd_mobilenet_v2_coco.uff initialized.
W = 7  H = 100  C = 1
detectNet -- maximum bounding boxes:  100
detectNet -- loaded 91 class info entries
detectNet -- number of object classes:  91
[image] loaded './images/peds_0.jpg'  (1920 x 1080, 3 channels)
4 objects detected
detected obj 0  class #1 (person)  confidence=0.984694
bounding box 0  (1073.928711, 108.778038)  (1396.850952, 1002.921448)  w=322.922241  h=894.143433
detected obj 1  class #1 (person)  confidence=0.699254
bounding box 1  (458.434509, 122.990280)  (741.858093, 943.342163)  w=283.423584  h=820.351868
detected obj 2  class #1 (person)  confidence=0.975855
bounding box 2  (742.781067, 160.996078)  (1022.465393, 941.796326)  w=279.684326  h=780.800232
detected obj 3  class #1 (person)  confidence=0.863392
bounding box 3  (1477.790283, 149.502762)  (1720.689331, 914.901855)  w=242.899048  h=765.399109

[TRT]   ------------------------------------------------
[TRT]   Timing Report networks/SSD-Mobilenet-v2/ssd_mobilenet_v2_coco.uff
[TRT]   ------------------------------------------------
[TRT]   Pre-Process   CPU   0.09542ms  CUDA   0.77667ms
[TRT]   Network       CPU 117.64365ms  CUDA 116.89984ms
[TRT]   Post-Process  CPU   0.08344ms  CUDA   0.08234ms
[TRT]   Visualize     CPU  16.16084ms  CUDA  16.58760ms
[TRT]   Total         CPU 133.98334ms  CUDA 134.34645ms
[TRT]   ------------------------------------------------

[TRT]   note -- when processing a single image, run 'sudo jetson_clocks' before
                to disable DVFS for more accurate profiling/timing measurements

detectnet-console:  writing 1920x1080 image to 'output0.jpg'
detectnet-console:  successfully wrote 1920x1080 image to 'output0.jpg'
detectnet-console:  shutting down...
detectnet-console:  shutdown complete

【剁手系列】Jetson Nano(四)跑通jetson-inference_第1张图片

你可能感兴趣的:(Jetson,nano)