Jetson을 사용한 Deep Learning 실시간 이미지 분류 추론 (사용자 정의 모델 사용)

목적



마지막으로 만든 맞춤 모델을 사용하여 Jetson에 연결된 USB 카메라로 실시간으로 이미지 분류를 추론합니다.
이 페이지의 Jetson에 관한 부분을 일본어로 쓰고 있을 뿐입니다

여기의 이미지의 오른쪽 부분(Jetson을 사용한 추론)을 동작시키는 이미지입니다.


환경


  • PC 환경은 지난번 참조
  • Jetson TX1
  • USB 카메라 또는 Jetson 카메라 모듈 (이번에는 Logitech C920 사용)

  • Jetpack 설치



    여기에서 JetPack 설치 프로그램을 다운로드합니다.
    설치 프로그램에 실행 권한을 부여하고 호스트 PC에서 실행합니다. (현시점에서는 JetPack 3.3이 최신)
    $ cd ~/Downloads/JetPack-L4T-3.3-linux-x64_b39.run
    $ chmod +x JetPack-L4T-3.3-linux-x64_b39.run
    $ ./JetPack-L4T-3.3-linux-x64_b39.run
    

    설치 가이드을 참고하여 설치하십시오.
    완료되면 호스트 PC와 대상 Jetson 모두에 CUDA Toolkit 등이 설치됩니다.

    추론 데모 프로그램 실행



    Jetson에서 TensorRT 및 cuDNN을 사용하여 추론 데모 프로그램을 실행합니다.
    TensorRT는 고성능 Deep Learning 추론 라이브러리입니다. 이미지 분류, 세그멘테이션 및 객체 검출에 대응한다.
    cuDNN은 CUDA를 사용한 Deep Neural Network (DNN) 용 라이브러리입니다. 컨벌루션, 정규화 연산 등을 고속으로 실행할 수 있도록 튜닝되어 있다.
    Jetson에서 git과 cmake를 설치하고 리포지토리를 복제하고 빌드합니다. (수십분)
    $ sudo apt-get install git cmake
    $ cd ~
    $ git clone https://github.com/dusty-nv/jetson-inference
    $ cd jetson-inference
    $ mkdir build
    $ cd build
    $ cmake ../
    $ make
    
    imagenet-console 프로그램을 사용합니다.
    이 프로그램은 입력 화상에 대하여 ImageNet (ILSVRC2012) 데이터 세트를 이용한 화상 분류 데모를 실행하고, 인식율과 식별 명칭을 화상에 오버레이하여 파일을 출력한다.
    $ cd aarch64/bin
    $ ./imagenet-console orange_0.jpg output_0.jpg
    


    다음은 imagenet-camera 프로그램을 사용한다.
    Jetson에 카메라를 연결하십시오. 인수에 따라 googlenet 또는 alexnet을 TensorRT에로드합니다.
    $ ./imagenet-camera googlenet   # googlenetを使用
    $ ./imagenet-camera alexnet     # alexnetを使用
    

    식별율 및 식별 명칭은 카메라 영상에 오버레이되어 표시된다.
    이번 환경의 경우 1280x720, 30fps로 실시간 추론 가능. 영상 프레임워크에는 Gstreamer를 이용하고 있다.


    맞춤형 모델을 이용한 추론



    위의 프로그램은 이전에 만든 사용자 정의 모델에서 실행됩니다.
    다운로드한 커스텀 모델을 전개해, 다음의 디렉토리에 격납한다.
    $ mkdir ~/jetson-inference/data/networks/GoogleNet-ILSVRC12-subset-2
    $ cd ~/jetson-inference/data/networks/GoogleNet-ILSVRC12-subset-2
    $ tar -zxvf ~/Downloads/20180918-135303-14b6_epoch_30.0.tar.gz
    

    인수에 커스텀 모델의 패스를 지정해 로드한다.
    $ cd ~/jetson-inference/build/aarch64/bin
    
    $ NET=networks/GoogleNet-ILSVRC12-subset-2
    
    $ ./imagenet-console bird_0.jpg output_0.jpg \
    --prototxt=$NET/deploy.prototxt \
    --model=$NET/snapshot_iter_176340.caffemodel \
    --labels=$NET/labels.txt \
    --input_blob=data \
    --output_blob=softmax
    

    왼쪽이 원래 GoogleNet-1000이고 오른쪽이 12가지로 나뉘어진 맞춤 모델의 결과입니다.
    바르게 모델이 로드되고 있는 것을 알 수 있다.
     

    카메라를 이용하는 경우는 다음과 같다.
    $ ./imagenet-camera \
    --prototxt=$NET/deploy.prototxt \
    --model=$NET/snapshot_iter_176340.caffemodel \
    --labels=$NET/labels.txt \
    --input_blob=data \
    --output_blob=softmax
    

    Google 검색 "dog"로 나온 이미지로 시도했다.


    우리 집 고양이로 시험해 보았다.


    가끔 도그가 된다.

    좋은 웹페이지 즐겨찾기