Jetson Nano 보드에서 실시간 인공지능 AI World 어디서부터 시작하나!---II

댓글 0

Jetson Nano

2020. 5. 21.

Jetson Nano 보드에 PiCamera 든 웹캠이든 적어도 하나는 설치 완료하자.

Jetson Nano 바탕화면에서 Jetson Zoo를 클릭하면 elinix.org/Jetson_Zoo 사이트로 이동한다. 이 사이트에는 그림과 같이 목차가 있으며 Jetson Nano에서 해 볼 수 있는 인공지능 AI 시스템들을 소개하고 있다. 1.6 Hello AI World 하이퍼 텍스트를 클릭하여 이동하자.

다음 그림의 Hello AI World 타이틀 밑에 Source:https://github∙∙∙ url 주소에서 인공지능 AI 오픈소스 예제들을 찾아 볼 수 있다.

 

Source:https://github∙∙∙ url 주소로 들어가자. url 주소는 구체적으로 github.com/dusty-nv/jetson-inference 이다.

이 사이트는 NVIDIA Jetson Nano/TX1/TX2/Xavier 보드들에 대한 추론엔진(inference) 과 실시간 DNN 라이브러리에 대한 가이드를 소개한다. 이 보고서 즉 repo 는 Jetson 플랫 폼에서 뉴럴 네트워크를 효율적으로 깔아 쓸 수 있도록 NVIDIA TensorRT를 사용하게 된다. TensorRT는 Jetson Nano의 머신 러닝 컴퓨팅을 지원하는 GPU 라이브러리이다. 비록 Jetson Nano 가 손 바닥만한 보드이긴 하지만 그래도 전용 GPU를 내장하고 있는 현 2020년대의 최강 보드임을 인식하자. 아무리 그래도 AMD CPU 칩을 장착한 윈도우즈10 PC 보다 ~3배 느리지만 라즈베리 파이 보다는 ~3배 정도 빠르다는 점을 지적해 둔다.
여기서 해 볼 수 있는 데모 예제는 다음 그림에서 볼 수 있는 3가지 종류이다. 첫번째는 북극곰으로서 사진 이미지 파일을 사용하여 데모가 가능하다. 곰 종류가 다양한데 그 중 ImageNet 에 등록된 몇 가지 곰을 분간해낼 정도의 인공지능으로서 imagenet-console.py 코드를 사용하며 아울러 C++ 코드도 함께 제공한다. 두 번째가 상당히 흥미로운 주제인데 detectNet.py을 사용하여 보행 중인 여러 명의 인간 실시간 인식이 가능하다는 점이다. 세 번째는 세만틱 버전으로 스크린 샷 전체의 각 픽셀 화소별로 속성을 인식해 낸다. 물론 실시간 작업이 가능하지만 DetectNet 에 비해 식별할수 있는 class 들의 수에 제한이 있을 수 있다. 이 세가지 기능만하더라도 자율주행 분야에서 적용이 가능할 정도의 실행 성능을 목격할 수 있다.

한편 이 사이트에 Hello AI World 말고도 DIGITS(Two Days to a Demo)를 소개하고 있는데 말 그대로 사용자가 머신 러닝에 대해서 웬만한 배경이 있다면 유료로 이틀에 걸쳐 온라인 교육을 받을 수 있을 것이다. 참고로 초보자가 Hello AI World 만 해 보는데도 이틀은 족히 걸린다.

첫 번째 도전 예제로서 ImageNet 라이브러리를 사용하는 이미지 식별 예제코드 imagenet-console.py를 실행하여 오렌지와 사과를 식별해 보도록 하자.

Classifying Images with ImageNet을 클릭하면 아래의 모자이크 그림을 볼 수 있다. 아마도 1000종의 이미지 조각들을 모아서 그려놓은 듯하다.

마우스 오른쪽 버튼을 사용하여 터미널을 열도록 한다. cd jetson-inference/build/aarch64/bin 폴더를 열어 리스팅해 보면 다음과 같이 많은 예제 파일들을 볼 수 있다.

다음과 같이 파이선 코드 실행을 위한 command line 명령을 실행하자.

출력 결과 output_0.jpg를 살펴보면 confidence 98.19% 오렌지임을 알 수 있다. 아울러 터미널 출력에서는 CPU GPU 사용 레포트가 실시간으로 출력된다. 오렌지 인식 예제는 비록 정적이지만 만약 imagenet-camera.py를 실행하면 카메라에 실시간으로 잡힌 이미지들을 대상으로 인식 결과를 카메라 화면에 보여 줌과 동시에 터미널에서는 빠른 속도로 스크롤되는 GPU 계산 결과를 보여주게 된다.

터미널에서 PyTorch 기반으로 작성된 컴퓨팅 리소스 사용 현황을 살펴보면 CPU 0.165GPU(CUDA) 0.165 초 도합 0.33초에 인식해냄을 알 수 있다. 이 정도 실행 속도라면 자율주행 차량 응용에서도 충분한 역할을 할 수 있을 것으로 기대된다.

예제 코드에 관해서 살펴보기로 하자.