开发平台

Jetson-TX2

Jeton-TX2 的开发包,包含了 tensorRT,cuda,cudnn,opencv,以及visionworks 以及Multimedia API等等。 以及相关的开发工具,CPU的proiler, NSight Eclipse, Tegra Graphic profiler 等等。并且本身是全版的ubuntu 16.04. 特别适合做二次开发。

如何从离线安装

  1. 把上次安装目目录下的 /Jetpack/jetpack_download 保存一下

  2. 再一次安装的指定 repo

    comp_repo_path=file:///home/ubuntu/Jetpack/jetpack_download/jetpack.json ./JetPack-L4T-XX.run
    
    #slient update
    Launcher_slient_mode=install  development_platform=jetson-tx2  ./JetPack-L4T-XXX.run
    

JetPack 的目录结构

  JetPack tree -L 3
.
├── 64_TX2
│   ├── cuda-l4t
│   │   └── cuda-l4t.sh
│   ├── cudnn
│   │   ├── libcudnn6_6.0.21-1+cuda8.0_arm64.deb
│   │   ├── libcudnn6-dev_6.0.21-1+cuda8.0_arm64.deb
│   │   └── libcudnn6-doc_6.0.21-1+cuda8.0_arm64.deb
│   ├── Linux_for_Tegra_tx2
│   │   ├── apply_binaries.sh
│   │   ├── bootloader
│   │   ├── cmd.sh
│   │   ├── flash.sh
│   │   ├── jetson-tx2.conf -> p2771-0000-devkit.conf
│   │   ├── kernel
│   │   ├── new_dir
│   │   ├── nv_tegra
│   │   ├── p2771-0000.conf.common
│   │   ├── p2771-0000-devkit.conf
│   │   ├── p2771-0000-dsi-hdmi-dp.conf
│   │   ├── rootfs
│   │   ├── source_sync.sh
│   │   └── TX2_flash_package.tgz
│   └── tegra_multimedia_api
│       ├── argus
│       ├── data
│       ├── include
│       ├── LEGAL
│       ├── LICENSE
│       ├── Makefile
│       ├── README
│       ├── samples
│       └── tools
├── _installer
│   ├── Chooser
│   ├── configure_host
│   ├── cuda-l4t.sh
│   ├── exit.code
│   ├── flash_os
│   ├── InstallUtil
│   ├── JetPack.log
│   ├── Launcher
│   ├── Launcher.log
│   ├── local.cfg
│   ├── local.db
│   ├── local.ini
│   ├── logs
│   │   └── 64_TX2
│   ├── nv_info_broker
│   ├── ocv.sh
│   ├── PageAction
│   ├── Poller
│   ├── rc.local
│   ├── remove_unsupported_cuda_samples.sh
│   ├── report_ip_to_host.sh
│   ├── run_command
│   ├── run_gameworks_sample.sh
│   ├── selected_comps.txt
│   ├── start_up.sh
│   ├── sudo_daemon
│   └── tmp
│       ├── jetpackfifo
│       ├── jetpackfifo_req
│       └── log
├── jetpack_download
│   ├── 2017_06_14_0412-22311683-NVIDIA_Tegra_Graphics_Debugger_2.4.17165.0412_Release_External_tgd-l4t_linux-l4t.run
│   ├── cuda-repo-l4t-8-0-local_8.0.84-1_arm64.deb
│   ├── cuda-repo-ubuntu1404-8-0-local_8.0.84-1_amd64.deb
│   ├── host-x64-linux-public-3.8.450-a527a18.tar.gz
│   ├── jetpack_docs.zip
│   ├── libcudnn6_6.0.21-1+cuda8.0_arm64.deb
│   ├── libcudnn6-dev_6.0.21-1+cuda8.0_arm64.deb
│   ├── libcudnn6-doc_6.0.21-1+cuda8.0_arm64.deb
│   ├── libopencv4tegra-repo_2.4.13-17-g5317135_amd64_ubuntu-14.04.deb
│   ├── libopencv4tegra-repo_2.4.13-17-g5317135_arm64_l4t-r26.deb
│   ├── libvisionworks-repo_1.6.0.193n_amd64_ubuntu-14.04.deb
│   ├── libvisionworks-repo_1.6.0.233n_arm64_l4t-r26.deb
│   ├── libvisionworks-sfm-repo_0.90.1_amd64_ubuntu-14.04.deb
│   ├── libvisionworks-sfm-repo_0.90.1_arm64_l4t-r26.deb
│   ├── libvisionworks-tracking-repo_0.88.0_amd64_ubuntu-14.04.deb
│   ├── libvisionworks-tracking-repo_0.88.0_arm64_l4t-r26.deb
│   ├── nv-gie-repo-ubuntu1604-ga-cuda8.0-trt2.1-20170614_1-1_arm64.deb
│   ├── NVIDIA_Tegra_Linux_Driver_Package.tar
│   ├── NVIDIA_VisionWorks_1.6_Docs.zip
│   ├── Tegra186_Linux_R28.1.0_aarch64.tbz2
│   ├── Tegra_Linux_Driver_Package_Release_Notes_R28.1.pdf
│   ├── Tegra_Linux_Sample-Root-Filesystem_R28.1.0_aarch64.tbz2
│   └── Tegra_Multimedia_API_R28.1.0_aarch64.tbz2
├── JetPack-L4T-3.1-linux-x64.run
├── JetPack_Uninstaller
├── manifest.json
├── repository.json
├── tmp
│   ├── com.nvidia.cuda.host_tx2_cuda.png
│   ├── com.nvidia.l4t.driver4os_64_tx2_nvidia.png
│   ├── com.nvidia.l4t.flash_64_tx2_nvidia.png
│   └── com.nvidia.nvtools.battle_tegra-graphics-debugger.png
└── update.lock

21 directories, 76 files
➜  JetPack 

如何快速定制target的刷机Image

  1. 从官网下载最新的 JetPack 最新版本为3.1.

  2. 选择相关的包进行安装并刷机。

    Note

    进入recover 模式, 组合键顺序: Rec -> Rec+Reset -> Rec

  3. 在device 上安装各种额外的包。你可以用VNC 或者ssh 去连接device.

    sudo apt-get intall -y git cmake clang
    
  4. 备份整个device的rootfs.

    sudo tar -cvpz --one-file-system / | ssh <yourlocalhost> "(cat >ssh_jetson_tx2_rootfs.tgz)"
    
  5. 在host上解压到jetpack的解压目录

    sudo tar -xvpzf /path/to/ssh_jetson_tx2_rootfs.tar.gz -C <rootfs folder in host> --numeric-owner"
    
  6. 重新刷机生成一个新的刷机包

    cd <Jetpackppath>/64_TX2/Linux_for_Tegra_tx2
    ./flash_os jetson-tx2 mmcblk0p1
    

    Note

    刷机前看一下device是否在 recovery mode 用命令 lsusb | grep "nvidia" 来查看

  7. 等刷机完成后,在 Linux_for_Tegra_tx2/bootloader 下就生成了新的刷机包了。并且以后刷机直接用 cd Linux_for_Tegra_tx2/bootloader && sh bootloader 。基本十几分钟就可以刷好了。

如何手工安装

  1. Install CUDA

    sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-r381_8.0.84-1_amd64.deb
    sudo apt-get
    sudo apt-get install -y --allow-unauthenticated update
    sudo apt-get install -y cuda
    sudo dpkg --add-architecture arm64
    sudo apt-get --allow-unauthenticated update
    sudo apt-get install -y --allow-unauthenticated cuda-cross-aarch64
    
  2. libopencv4tegra-dev

    sudo apt-get install -y cuda-cross-aarch64
    
  3. cuda toolkit cross compiler

    sudo dpkg --add-architecture arm64
    sudo dpkg -i xxx.deb
    sudo apt-get update
    sudo apt install cuda-cross-aarch64
    
  4. Import a CUDA sample to Nsight Eclipse and set arch as aarch64

参考

SLAM on Jetson TX2

视频分析

digraph G {
    rankdir=LR;
    node [shape=box];
    Camera ->"Jetson TX2"-> "V4L2Engines"->CUDA->TensorRT->GL;
    "Decodes from video" ->"run deep learning"->"do post processingwithCUDAandGraphics";
}
  1. Capture video
  2. Recognition objects
  3. Take action in real-time
  4. Visualize

TX2 的基本库

计算有CUDA,图形 GL,图像OPENCV,以及计算机视觉有Visionworks。DL可以用tensorrt来推理。

标准流可以用vision works,非标准流可以用 tegra-multimedia api.

基本的视频分析

Tegra_multimedia api sample

Manual : <L4T Multimedia API Reference> on https://developer.nvidia.com/embedded/downloads

库的组成

  1. V4L2 API 用于各种视频的编解码与scaling等等。
  2. libargus 用于图像处理,能直接处理lower level Camera信息。 具体流程可以查看http://on-demand.gputechconf.com/gtc/2016/webinar/getting-started-jetpack-camera-api.pdf
  3. Buffer utilis ,buffer 的内存管理
  4. NVDC-DRM 可以对于非 X11的轻量的级的显示管理系统,特别是适合一些嵌入的系统
  5. NVOSD on-Screen display.

backend

H.264

_images/backend.png

from API reference manual

$ ./backend 1 ../../data/Video/sample_outdoor_car_1080p_10fps.h264 H264 \
   --trt-deployfile ../../data/Model/GoogleNet_one_class/GoogleNet_modified_oneClass_halfHD.prototxt \
   --trt-modelfile ../../data/Model/GoogleNet_one_class/GoogleNet_modified_oneClass_halfHD.caffemodel \
   --trt-forcefp32 0 --trt-proc-interval 1 -fps 10