Jetson Nano에서 Darknet+YOLOv3

소개



VGG16을 Chainer와 TensorRT로 실험한 결과, 준비한 이미지는 각각 "장자"와 "라켓"으로 추정되었다. 물론 이것은 틀렸다. 그래서 이번에는 Darknet을 시험해 같은 이미지가 어떻게 판정되는지를 확인한다.

오사라이



지금까지의 작업 결과는 github에 정리했다. 전체 스크래치에서 pipenv를 사용하여 움직이는 곳까지 확인하고 있다. 또 상위 1건의 표시였던 랭킹은 상위 10건까지 표시하도록 했다.

문제 : 아래 이미지는 무엇입니까?



Chainer에서 VGG16을 사용한 추론



자세한 내용은 Jetson Nano에서 VGG16 사용해보기을 참조하십시오.
yamamo-to@jetson-nano:~/Documents/jetson_nano/vgg16_example$ pipenv run python3 vgg16_test.py boss.jpg 
0.23183 789 n04201297 shoji
0.10520 910 n04597913 wooden spoon
0.04276 915 n04613696 yurt
0.03409 752 n04039381 racket, racquet
0.02754 440 n02823428 beer bottle
0.02448 746 n04019541 puck, hockey puck
0.02100 666 n03786901 mortar
0.02028 901 n04579145 whiskey jug
0.01489 722 n03942813 ping-pong ball
0.01293 737 n03983396 pop bottle, soda bottle

1위는 장자로, 2위는 나무의 숟가락으로 나왔다.

TensorRT에서 VGG16을 사용하여 추론.



자세한 내용은 Jetson Nano에서 TensorRT를 사용한 VGG16 모델로 이미지 판별을 참조하십시오.

터미널
yamamo-to@jetson-nano:~/Documents/jetson_nano/vgg16_example$ pipenv run python3 trt_infer.py vgg16.trt boss.jpg 
[TensorRT] INFO: Glob Size is 587064608 bytes.
[TensorRT] INFO: Added linear block of size 12902400
[TensorRT] INFO: Added linear block of size 12845056
[TensorRT] INFO: Added linear block of size 1605632
[TensorRT] INFO: Deserialize required 3732959 microseconds.
0.12717 752 n04039381 racket, racquet
0.04638 440 n02823428 beer bottle
0.03672 898 n04557648 water bottle
0.03265 882 n04517823 vacuum, vacuum cleaner
0.02877 650 n03759954 microphone, mike
0.02658 907 n04591713 wine bottle
0.02322 619 n03637318 lampshade, lamp shade
0.01998 402 n02676566 acoustic guitar
0.01862 804 n04254120 soap dispenser
0.01577 512 n03109150 corkscrew, bottle screw

결과 1위는 라켓, 2위는 맥주병으로 추론되었다.

Darknet 준비



읽으면 요구 조건이 충족되는 것 같습니다.


요청
Jetson Nano (JetPack 4.2)


Windows or Linux
Linux (Ubuntu)

CMake >= 3.8 for modern CUDA support
3.10.2

CUDA 10.0
10.0.166

OpenCV >= 2.4
3.3.1

cuDNN >= 7.0 for CUDA 10.0
7.3.1.28

GPU with CC 1 >= 3.0
5.3

on Linux GCC or Clang, on Windows MSVC 2015/2017/2019
gcc


우선 소스 코드 다운로드.

터미널
yamamo-to@jetson-nano:~/Documents$ git clone https://github.com/AlexeyAB/darknet.git
yamamo-to@jetson-nano:~/Documents$ cd darknet
yamamo-to@jetson-nano:~/Documents/darknet$

컴파일은 Makefile을 직접 편집한 후 make한다.
  • GPU, CUDNN, OPENCV, LIBSO를 1로 변경
  • Tegra X1 (Jetson Nano의 GPU)을 찾아 댓글을 달고 활성화

  • diff를 취하면 다음과 같다.

    터미널
    yamamo-to@jetson-nano:~/Documents/darknet$ git diff
    diff --git a/Makefile b/Makefile
    index 7f0547d..5b32de9 100644
    --- a/Makefile
    +++ b/Makefile
    @@ -1,10 +1,10 @@
    -GPU=0
    -CUDNN=0
    +GPU=1
    +CUDNN=1
     CUDNN_HALF=0
    -OPENCV=0
    +OPENCV=1
     AVX=0
     OPENMP=0
    -LIBSO=0
    +LIBSO=1
     ZED_CAMERA=0
    
     # set GPU=1 and CUDNN=1 to speedup on GPU
    @@ -37,7 +37,7 @@ OS := $(shell uname)
     # ARCH= -gencode arch=compute_60,code=sm_60
    
     # For Jetson TX1, Tegra X1, DRIVE CX, DRIVE PX - uncomment:
    -# ARCH= -gencode arch=compute_53,code=[sm_53,compute_53]
    +ARCH= -gencode arch=compute_53,code=[sm_53,compute_53]
    
     # For Jetson Tx2 or Drive-PX2 uncomment:
     # ARCH= -gencode arch=compute_62,code=[sm_62,compute_62]
    

    터미널
    yamamo-to@jetson-nano:~/Documents/darknet$ make
    

    그리고는 기다릴 뿐.

    또 YOLOv3의 가중치를 떨어뜨린다.

    터미널
    yamamo-to@jetson-nano:~/Documents/darknet$ wget https://pjreddie.com/media/files/yolov3.weights
    

    Darknet + YOLOv3 결과



    앞의 이미지 boss.jpg를 data 디렉토리에 넣은 다음 추론합니다.
    yamamo-to@jetson-nano:~/Documents/darknet$ ./darknet detect cfg/yolov3.cfg YOLOv3.weights data/boss.jpg
    

    결과는 ...



    오, 멋지게 병으로 나왔다. YOLOv3 대단해!

    참고문헌


  • htps : // 기주 b. 코 m / 아아이나 B / 다 rk t
  • h tp // 타케 씨. 하테나 bぉg. 코m/엔트리/2019/04/09/001852
  • htps : // 토라마마. bgs포 t. 이 m/2019/04/지 ぇ ぉ응-인거야-rk네 t. HTML



  • CC는 C 컴파일러가 아닌 Compute Capability의 약어

    좋은 웹페이지 즐겨찾기