EmVision 소개
EmVision은 NVIDIA의 첨단 임베디드 AI 기술을 기반으로 하여, 교육 및 초기 프로토타입 개발을 위한 이상적인 플랫폼을 제공합니다. 이는 학생들과 개발자들에게 실제 세계의 AI 응용 프로그램을 실험하고 구현할 수 있는 탁월한 기회를 제공하며, AI 및 컴퓨터 비전 분야의 미래 혁신가들을 양성하는 데 기여합니다.
주요 특징
- 교육적 접근: AI 및 컴퓨터 비전 분야에 관심 있는 학생들과 초보 개발자들을 위해 설계된 사용자 친화적인 인터페이스를 제공합니다.
- 프로토타입 개발: 실제 상황을 모의하는 데 필요한 유연성과 기능을 갖추어, 혁신적인 아이디어의 신속한 프로토타이핑을 지원합니다.
- 임베디드 AI 칩: NVIDIA의 고성능 임베디드 프로세서를 사용하여, 복잡한 AI 알고리즘의 효율적인 실행을 지원합니다.
- 고해상도 카메라: 실시간 이미지 및 비디오 분석을 위한 고해상도 카메라 탑재로, 선명하고 정확한 데이터 수집이 가능합니다.
- 실용적인 학습 도구: AI 및 머신러닝 분야의 핵심 개념과 기술을 실제로 적용해 볼 수 있는 실습 기회를 제공합니다.
응용 분야
- 학술 연구 및 교육: 학생들에게 AI 기술의 기본 원리와 응용을 실질적으로 가르치고, 실습을 통해 학습 효과를 높입니다.
- 창의적인 프로젝트: AI 및 컴퓨터 비전 관련 창의적인 프로젝트와 혁신적인 아이디어를 실현하기 위한 플랫폼으로 활용될 수 있습니다.
- 시작부터 프로토타이핑까지: 아이디어 구상부터 실제 프로토타입 개발까지의 전 과정을 지원, 학생들과 개발자들이 자신의 아이디어를 현실로 구현할 수 있게 돕습니다.
EmVision 사양
공통사양
EmVision은 NVIDIA 기반의 강력한 비전 AI 개발 플랫폼으로, 고급 기능과 뛰어난 사양을 갖추고 있습니다. 이 장치는 512GB의 M.2 MVMe SSD를 탑재하여 빠른 데이터 액세스와 넉넉한 저장 공간을 제공합니다. 1Gbps Ethernet 연결로 빠른 네트워크 속도를 지원하며, 여러 해상도와 프레임 속도를 지원하는 고성능 카메라를 포함하여 다양한 비디오 처리 요구 사항을 충족합니다.
장치에는 또한 12V DC 전원 공급 포트와 2개의 USB 3.0 포트가 포함되어 있어, 안정적인 전력 공급과 빠른 주변기기 연결이 가능합니다. HDMI 2.0a 출력을 통해 고화질 비디오 출력이 가능하며, 내장된 0.96인치 OLED 디스플레이는 기본 정보 표시에 유용합니다. EmVision의 이러한 고급 기능들은 교육, 연구 및 프로토타이핑 작업에 이상적이며, AI 및 컴퓨터 비전 분야의 혁신을 추진하는 데 크게 기여할 것입니다.

| 항목 | 성능 및 규격 |
|---|---|
| 스토리지 | M.2 MVMe SSD 512GB |
| 네트워크 | 1Gbps Ethernet |
| 전원공급 포트 | 12V DC (외경: 5.5 mm 내경: 2.1) |
| USB | 2x USB 3.0 Type-A |
| HDMI | 1x HDMI 2.0a |
| 내장 디스플레이 | 0.96” I2C OLED 128x64 |
| 카메라 출력 포맷 | Raw 10bit Bayer |
| 카메라 모드 | 3280x2464(21fps) 3280x1848(28fps) 1920x1080(30fps) 1640x1232(30fps) 1280x720(60fps) |
각 모델의 연산 성능 및 전력 소모
-
AI 성능: 다양한 모델에서 AI 처리 능력이 다릅니다. ON4는 20 TOPs, ON8은 40 TOPs, OX8은 70 TOPs, OX16은 100 TOPs로, AI 학습 및 응용 프로그램 개발에 따라 적합한 모델을 선택할 수 있습니다.
-
CPU와 GPU: 모든 모델은 고성능 Arm Cortex-A78AE CPU를 사용하며, GPU의 성능도 모델에 따라 다릅니다. 이는 컴퓨터 비전과 딥러닝 알고리즘의 효율적인 처리에 중요한 요소입니다.
-
공유 메모리: ON4는 4GB, ON8과 OX8은 8GB, OX16은 16GB의 메모리를 제공합니다. 이는 복잡한 데이터 세트와 알고리즘의 처리에 필요한 메모리 용량을 결정하는 데 중요합니다.
-
비디오 처리 능력: 모델에 따라 다양한 해상도의 비디오 인코딩 및 디코딩을 지원합니다. 이는 머신 비전, 비디오 분석 등의 응용 프로그램에 중요합니다.
이러한 요소들을 고려하여 AI 및 컴퓨터 비전 프로젝트를 위한 EmVision 모델을 선택하세요.
| EmVision ON4 | EmVision ON8 | EmVision OX8 | EmVision OX16 | |
|---|---|---|---|---|
| AI 성능* | 20 Tops | 40 TOPs | 70 TOPs | 100 TOPs |
| CPU | 6-core Arm® Cortex®-A78AE v8.2 64-bit CPU 1.5MB L2 + 4MB L3 |
8-core Arm® Cortex®-A78AE v8.2 64-bit CPU 2MB L2 + 4MB L3 |
||
| GPU | 512-core NVIDIA Ampere architecture GPU with 16 Tensor Cores |
1024-core NVIDIA Ampere architecture GPU with 32 Tensor Cores |
||
| 공유 메모리 | 4 GB 64-bit LPDDR5 34 GB/s |
8 GB 128-bit LPDDR5 68 GB/s |
8 GB 128-bit LPDDR5 102.4GB/s |
16 GB 128-bit LPDDR5 102.4GB/s |
| 비디오 인코딩 | 1080p30 supported by 1-2 CPU cores | 1x 4K60 (H.265) 3x 4K30 (H.265) 6x 1080p60 (H.265) 12x 1080p30 (H.265) |
||
| 비디오 디코딩 | 1x 4K60 (H.265) 2x 4K30 (H.265) 5x 1080p60 (H.265) 11x 1080p30 (H.265) |
1x 8K30 (H.265) 2x 4K60 (H.265) 4x 4K30 (H.265) 9x 1080p60 (H.265) 18x 1080p30 (H.265) |
||
| 전력 | 7W - 10W | 7W - 15W | 10W - 20W | 10W - 25W |
AI 성능: TOPs(Tera Operations Per Second)는 초당 테라 연산 수를 나타내는 지표로, 주로 AI 및 딥러닝 하드웨어의 성능을 측정하는 데 사용됩니다. 이는 하드웨어가 초당 처리할 수 있는 연산의 총량을 의미하며, 높은 TOPs 값은 더 많은 연산을 빠르게 처리할 수 있음을 나타냅니다. AI 프로세서나 그래픽 카드에서 TOPs는 특히 중요한 지표로, 복잡한 딥러닝 모델과 알고리즘의 효율적인 처리 능력을 반영합니다. 따라서 AI 응용 프로그램과 태스크에 대한 하드웨어의 적합성을 평가하는 데 TOPs는 핵심적인 역할을 합니다.
소프트웨어 개발 환경
운영체제
EmVision은 L4T(Linux for Tegra) 운영체제를 사용합니다. L4T는 NVIDIA Jetson 시리즈의 모듈에 탑재되어 있는 운영체제로, 기본 탑재되어있는 L4T 35.4.1은 Ubuntu 20.04 LTS를 기반으로 하고 있습니다.
EmVision은 NVIDIA Jetson 시리즈의 모듈을 사용합니다. 따라서, ROS등 NVIDIA Jetson 시리즈의 모듈이 지원하는 운영체제를 사용하는 것이 가능하지만 현재 하늘소프트는 L4T에 대한 기술지원만 제공하고 있습니다.
JetPack
NVIDIA JetPack SDK는 NVIDIA Jetson 플랫폼을 위한 포괄적인 소프트웨어 번들로, 이를 통해 AI 및 컴퓨터 비전 애플리케이션을 더 빠르고 쉽게 구축할 수 있습니다. JetPack은 Linux 운영 체제, NVIDIA CUDA, cuDNN, TensorRT와 같은 핵심 라이브러리 및 API, 그리고 Jetson 보드를 위한 드라이버 및 툴을 포함하고 있습니다.
EmVision은 출고시 JetPack 5.1.2을 기반으로 하고 있습니다. 다음 항목의 버전은 JetPack 5.1.2 기준으로 작성되었습니다.
-
CUDA 11.4: CUDA는 NVIDIA의 병렬 컴퓨팅 플랫폼 및 프로그래밍 모델입니다. 이를 통해 NVIDIA GPU를 사용하여 복잡한 계산 작업을 가속화할 수 있습니다. CUDA 11.4 버전은 성능 개선, 새로운 기능, 그리고 하드웨어 지원을 포함합니다.
-
cuDNN 8.6.0: NVIDIA CUDA Deep Neural Network 라이브러리(cuDNN)는 딥러닝 프레임워크를 위한 GPU 가속화 기능을 제공합니다. cuDNN은 고성능의 GPU 가속화를 제공하며, 딥러닝 알고리즘을 위한 맞춤형 라이브러리를 포함하고 있습니다.
-
TensorRT 8.5.2: TensorRT는 딥러닝 모델을 위한 추론(inference) 엔진입니다. 이는 모델의 성능을 최적화하고, 낮은 지연 시간과 높은 처리량을 달성하기 위해 딥러닝 모델을 최적화합니다.
-
DLA 3.12.1: DLA(Deep Learning Accelerator)는 NVIDIA의 AI 가속기입니다. 이는 딥러닝 연산을 위해 특별히 설계되었으며, 효율적인 처리를 위해 사용됩니다.
-
VPI 2.3: NVIDIA Vision Programming Interface(VPI)는 컴퓨터 비전 및 이미지 처리를 위한 라이브러리입니다. VPI는 다양한 하드웨어 가속기에서 작동하며, 효율적인 이미지 처리 및 컴퓨터 비전 알고리즘을 구현하는 데 사용됩니다.
-
OpenCV 4.5.4: OpenCV는 오픈 소스 컴퓨터 비전 라이브러리로, 이미지 및 비디오 처리, 객체 감지, 얼굴 인식 등 다양한 기능을 제공합니다. 이 버전은 여러 최신 기능과 개선 사항을 포함합니다.
-
DeepStream 6.2: DeepStream SDK는 스트리밍 분석, 비디오 처리 및 AI 기반의 인사이트 추출을 위한 도구입니다. 이는 주로 감시, 주차, 소매 등의 분야에서 실시간 비디오 분석에 사용됩니다.
-
Nvidia-Docker 24.0.5: Nvidia-Docker는 Docker 컨테이너 내에서 NVIDIA GPU를 사용할 수 있게 해주는 도구입니다. 이를 통해 개발자는 도커 컨테이너를 통해 쉽게 GPU 가속 애플리케이션을 배포하고 실행할 수 있습니다.
제공하는 주변장치
- EmVision
- 19V 4.74A AC 어뎁터
- 5.5mm x 2.1mm DC 단자를 가진 EmVision 전원 케이블
- 품질보증서
- 사용자 메뉴얼
AC 어뎁터에 연결하는 220V 파워코드는 제공되지 않습니다.
추천하는 주변장치
개발이나 시연에 유용한 주변기기를 소개합니다.
전원 공급 장치: USB PD 지원 충전 허브 및 PD to DC 어뎁터
다음 조건을 만족하는 USB PD 지원 충전 허브를 사용하여 EmVision에 전원을 공급할 수 있습니다.
- 동시충전 출력: 25W 이상(Emvision OX16) / 20W 이상(Emvision OX8) / 15W 이상(Emvision ON8) / 10W 이상(Emvision ON4)
- 전원 공급 단자가 USB-C인 충전 허브
최대 출력이 아닌 동시 충전 출력이라는 점에 유의하세요. 예를 들어, 120W 충전 허브는 120W의 최대 출력을 가지지만, 25W 이상의 동시 충전 출력을 가지지 않을 수 있습니다.
PD to DC 어뎁터를 사용하여 USB PD 지원 충전 허브와 EmVision을 연결할 수 있습니다. 어뎁터는 USB PD 충전 허브의 USB-C 케이블에 단자에 연결한 다음 EmVision의 전원 단자에 연결합니다.
- DC 단자: 5.5mm x 2.1mm
휴대용 모니터
터치 기능이 있는 휴대용 모니터를 사용하여 EmVision을 키오스크나 스마트 디스플레이로 활용할 수 있습니다. 휴대용 모니터는 HDMI 입력이 가능하고, USB-C 단자를 통해 전원을 공급받을 수 있어야 합니다.
유선 공유기 및 스위치 허브
EmVision은 1Gbps 이더넷을 지원합니다. 이더넷 연결을 위해 유선 공유기와 스위치 허브를 사용하여 내부/외부 네트워크에 연결할 수 있습니다.
EmVision 시작하기
EmVision에서 개발 시작하기
필요한 장치 및 케이블
- EmVision 개발 플랫폼 본체
- HDMI 포트를 지원하는 모니터와 HDMI 케이블
- USB 연결을 지원하는 키보드와 마우스
- 전원공급장치 및 전원 케이블
- 네트워크 케이블(UTP 케이블) *
안드로이드 스마트폰을 사용하는 경우 USB 테더링을 이용해서 네트워크 접속이 가능합니다.
주변 장치 연결하기

- ETH 포트에 공유기와 연결되어 있는 UTP 케이블을 연결합니다.
- HDMI 포트에 모니터와 HDMI 케이블을 연결합니다.
- USB 포트에 키보드와 마우스를 연결합니다.
- 장치와 연결한 모니터의 전원을 켭니다.
- 전원 케이블을 PWR 포트에 연결합니다.
EmVision은 전원 케이블을 연결하는 즉시 냉각팬이 동작하면서 부팅을 시작합니다. 만약 전원 케이블을 연결했는데 부팅이 시작되지 않는 경우 다음 조치를 시도해 볼 수 있습니다.
- 전원이 정격전력(약 25W)을 안정적으로 공급하고 있는지 확인합니다.
- 전원 케이블을 분리한 후 10초 정도 기다린 후 전원 케이블을 다시 연결합니다.
EmVision 초기화면

부팅 완료 후 보이는 모니터 화면입니다. 여기서부터는 Ubuntu 20.04와 동일한 방식으로 사용하실 수 있습니다.
Jetson Stats 실행

터미널에서 jtop을 실행하면 Jetson Stats가 실행됩니다.
Jetson Stats는 키보드 및 마우스를 사용하여 제어할 수 있습니다.
Jetson Stats는 EmVision의 CPU, GPU, 메모리, 전력 소비 등의 상태를 실시간으로 모니터링할 수 있는 도구입니다.
또한, CTRL 탭을 선택하여 팬 사용 정책 및 전력 모드 설정을 수행할 수 있습니다.
개발용 PC와 연결해서 원격 개발 시작하기
필요한 장치
- 개발용 PC
- 네트워크로 연결한 EmVision
- 공유기를 이용해 내부 네트워크에 연결
- Micro USB 케이블을 이용해서 개발용 PC와 연결
개발용 PC에서 SSH 접속하기

- EmVision을 내부 네트워크에 연결한 경우 상단 LCD에 표시되는 IP 주소를 이용해서 개발용 PC에서 SSH 접속
- EmVision을 Micro USB 케이블을 이용해서 연결하는 경우 개발용 PC와 연결한 후 외장디스크를 인식하면 개발용 PC에서
192.168.551.1로 접속 - 개발용 PC에서 터미널을 열고 다음 명령어를 입력
1
2
3
4
# 내부 네트워크에 연결한 경우
ssh hanul@192.168.XXX.XXX
# Micro USB 케이블을 이용해서 연결한 경우
ssh hanul@192.168.55.1
- 비밀번호는
hanul로 입력
VNC 사용하기
VNC를 이용하면 개발용 PC에서 EmVision의 화면을 볼 수 있습니다. EmVision은 리소스 절약을 위해 HDMI이 없는 경우 GUI 환경을 실행하지 않습니다. 따라서 HDMI로 모니터를 연결하지 않은 경우 VNC를 연결하면 NVIDIA 로고만 표시됩니다.
HDMI에 모니터를 연결한 경우에는 다음 명령어를 입력해서 VNC를 실행합니다.
1
2
3
4
5
# VNC 서버인 vino의 기본 설정
gsettings set org.gnome.Vino prompt-enabled false
gsettings set org.gnome.Vino require-encryption false
# vino-server 실행
DISPLAY=:0 /usr/lib/vino/vino-server
HDMI에 모니터를 연결하지 않은 경우는 TigerVNC를 이용해서 VNC 서버를 실행합니다.
TigerVNC를 이용해서 VNC를 사용하는 방법은 추후 업데이트 예정입니다. 기존 VINO 서버에 디스플레이를 직접 할당하는 방법에 비해 훨씬 간단하며 모니터가 없는 경우에도 VNC를 사용할 수 있는 TigerVNC의 일반적인 사용법을 소개할 예정입니다.
데모 앱 실행하기
추론 파이프라인 데모 앱 실행하기
Python3를 이용해서 사전에 설치되어있는 Jetson Inference의 데모를 실행하는 파이프라인을 제공합니다. 각 파이프라인은 GStreamer의 NVIDIA 플러그인을 활용하여 영상을 제어하며, TensorRT를 이용하여 모델 추론을 수행합니다.
1
2
cd ~/jetson-Demos
python3 app.py

버튼을 눌러 각 파이프라인을 수행할 수 있습니다.
- actionnet : 행동 분류 모델
- backgroundnet : 배경 제거 모델
- depthnet : 깊이 인식 모델
- detectnet : 객체 탐지 모델
- imagenet : 이미지 분류 모델
- posenet : 포즈 인식 모델
- segnet : 시맨틱 세그멘테이션 모델
온라인 예제 활용하기
하늘소프트는 EmVision에서 시험을 완료한 예제를 오픈소스로 제공합니다.
LED 디스플레이에 표시하는 내용 변경하기
- GitHub 저장소: hanulsoft/EmVision-PiOLED
LED 디스플레이의 화면에 출력되는 내용을 직접 변경하는 예제입니다. 아래 내용을 다루고 있습니다.
- 디스플레이에 한글을 출력하는 방법
- 출력 내용에 애니메이션 효과를 주는 방법
- 터미널 명령어의 출력 결과를 디스플레이에 표시하는 방법
Jetson Inference 데모
- GitHub 저장소: hanulsoft/EmVision-Jetson-Inference-Demo
EmVision에서 Jetson Inference의 데모 애플리케이션을 실행하는 예제입니다. 아래 내용을 다루고 있습니다.
- PyQt5를 사용하여 GUI 애플리케이션을 만드는 방법
- 터미널 출력을 GUI에 표시하는 방법
- Jetson Inference의 종류와 실행 방법
시작하기 단계의 문제 해결
HDMI 모니터에 화면이 나타나지 않을 때
- 전원을 연결했을 때 냉각팬이 작동하는 소리가 들리는지 확인합니다.
- 부팅이 되지 않은 상태에서는 냉각팬이 작동하지 않습니다.
- 부팅이 되지 않을 때 항목을 참고하여 문제를 해결합니다.
- 전원을 연결한 후 시간이 경과한 상태에서 HDMI케이블을 연결한 경우
- 모니터에 따라 부팅 후에는 HDMI연결을 인식하지 못하는 경우가 있습니다.
- HDMI케이블을 연결한 후 전원을 껐다가 다시 켜서 확인합니다.
부팅이 되지 않을 때
- 전력이 부족한 경우
- 보조배터리 등을 이용해 전원을 공급하는 경우 보조배터리가 PD출력을 지원해야 합니다.
- 일반 5V/2A 충전기나 전원장치를 사용하는 경우 전력이 부족하여 부팅이 되지 않을 수 있습니다.
- 부팅 후 VNC 화면이 NVIDIA 로고에서 멈춘 경우
- 모니터를 연결하지 않은 상태에서는 VNC로 출력하는
DISPLAY=:0이 정의되지 않습니다.
- 모니터를 연결하지 않은 상태에서는 VNC로 출력하는
- 연결한 모니터에서 화면이 NVIDIA 로고에서 멈춘 경우
- 많은 경우
gnome-session이 실행되기 전에 오류가 발생했거나 사용자가 gnome을 시작하지 않도록 설정한 경우입니다. - ssh 접속을 통해
dmesg명령어를 실행하여 부팅 시의 오류 메시지를 확인합니다.
- 많은 경우
SSH 접속이 되지 않을 때
known_hosts파일 관련- 동일한 IP로 다른 장비를 사용하는 경우
known_hosts파일에 기존의 IP와 관련된 정보가 저장되어 있어 접속이 되지 않을 수 있습니다. - 이 경우 보안관련 경고 메시지가 출력되며 접속이 되지 않습니다.
{유저}/.ssh/known_hosts파일을 삭제하거나 수정하여 문제를 해결할 수 있습니다.
- 동일한 IP로 다른 장비를 사용하는 경우
- 네트워크 환경 관련
- 동일한 네트워크에 연결되어 있는지 확인합니다.
- 표시되는 IP주소가
192.168.0.XXX라고 하더라도 다른 게이트웨이(공유기)에 연결되어 있을 수 있습니다.
- USB 연결을 통해 SSH 연결을 시도하는 경우
- USB 연결 후
L4T-README드라이브가 새로 생성되었는지 확인합니다.L4T-README드라이브가 생성되지 않은 경우 USB 연결이 제대로 되지 않았거나 부팅때 문제가 발생한 것입니다.\
ssh hanul@192.168.55.1명령어의 IP와 유저이름을 다시 한 번 확인합니다.
- USB 연결 후
- WIFI 연결을 지원하는 HOST PC와 USB 연결을 시도할 경우 알려진 DHCP 할당 오류가 있습니다
- 네트워크 설정에서
Remote NDIS Compatible Device를 가진 이더넷 장치를 찾아 어뎁터 옵션을 확인합니다. - 네트워킹 속성의
Internet Protocol Version 4 (TCP/IPv4)의 속성을 편집합니다. - 수동 IP 사용 설정을 선택한 뒤 IP 주소를
192.168.55.100, 서브넷 마스크를255.255.255.0으로 설정합니다. - 이후 ssh 접속을 시도합니다.
- 네트워크 설정에서
딥스트림 활용하기
NVIDIA DeepStream은 실시간 스트리밍 비디오 분석을 위한 강력한 프레임워크입니다. 이는 특히 IoT(사물 인터넷) 및 스마트 시티 애플리케이션에 적합하며, 복잡한 비디오 분석 작업을 위해 설계되었습니다.
주요 기능 및 장점
- 멀티스트림 처리 능력: DeepStream은 동시에 여러 비디오 스트림을 처리할 수 있으며, 이를 통해 대규모 감시 및 모니터링 시스템에서 유용하게 사용됩니다.
- AI 기반 분석: 이 프레임워크는 AI 및 머신러닝 모델을 활용하여 객체 인식, 분류, 추적 등의 고급 비디오 분석 기능을 제공합니다.
- 고성능 및 최적화: NVIDIA의 GPU 가속을 활용하여 고성능 처리가 가능하며, 다양한 환경에서 최적화된 성능을 제공합니다.
- 유연성 및 확장성: 다양한 입력 소스와 연동이 가능하며, 사용자 정의 모델과 알고리즘을 쉽게 통합할 수 있어 다양한 애플리케이션에 적용할 수 있습니다.
응용 분야
- 도시 감시 및 안전: 도시 규모의 감시 시스템에서 실시간 비디오 분석을 통해 안전을 향상시킬 수 있습니다.
- 교통 관리: 도로 상황, 교통 흐름 분석 등을 통해 교통 관리의 효율성을 높일 수 있습니다.
- 소매 및 서비스 산업: 고객 행동 분석, 재고 관리 등에 활용하여 서비스 품질을 개선할 수 있습니다.
- 산업 자동화: 제조 공정 모니터링, 품질 관리 등에서 실시간 비디오 분석을 통한 자동화 솔루션을 제공합니다.
고려사항
DeepStream을 활용한 어플리케이션 개발에 앞서 다음 사항을 고려해야 합니다.
- GStreamer 기반: DeepStream은 GStreamer를 기반으로 구축되어 있으며, GStreamer의 기본 개념 및 구조에 대한 이해가 필요합니다.
- Plugin 및 Pipeline: DeepStream은 다양한 플러그인을 조합하여 파이프라인을 구성하는 방식으로 동작합니다. 이에 대한 이해가 필요합니다.
- Model 및 Inference: 사용자 정의 모델을 통한 추론 작업을 위해 TensorRT 및 DeepStream SDK에 대한 이해가 필요합니다.
DeepStream-App
EmVision에는 DeepStream 6.2 이상이 사전 설치되어 있습니다.
1
2
# DeepStream 버전 확인
deepstream-app --version
DeepStream-App 예제 실행
DeepStream-App의 예시 설정 파일이 있는 경로로 이동합니다.
1
cd /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/
DeepStream-App을 통해 카메라 영상을 실시간으로 확인할 수 있습니다.
1
DISPLAY=:0 deepstream-app -c source1_csi_dec_infer_resnet_int8.txt
Jetson 추론 라이브러리
Jetson Inference는 NVIDIA Jetson 시스템에서 딥러닝 추론 및 영상 및출력, 어플리케이션 통합을 위한 라이브러리입니다. Jetson Inference는 오픈소스로 유지 관리 하고 있으며 NVIDIA 및 여러 기여자의 지원을 받고 있습니다.
EmVision에는 사전 컴파일된 Python 및 C++ 라이브러리와 예제 응용프로그램이 설치되어 있습니다. 여기서는 EmVision에서 Jetson Inference를 사용하는 방법을 설명합니다.
재설치 및 업그레이드
EmVision의 초기 유저명은
hanul이며 비밀번호는hanul입니다.
Jetson Inference 업그레이드
사전 컴파일을 완료한 Jetson Inference의 깃허브 로컬 저장소는 ~/Jetson-Inference(/home/hanul/Jetson-Inference)에 위치합니다. 이 저장소를 업데이트 하기 위해서는 다음 명령을 사용합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Jetson Inference 저장소로 이동
cd ~/Jetson-Inference
rm -rf build
# 저장소의 수정내역을 모두 되돌리고 서버로부터 최신 내용을 받아옴
git reset --hard HEAD
git pull
git submodule update --init --recursive
# 패키지 목록 최신화 및 빌드 디렉토리 생성
sudo apt-get update
mkdir build
cd build
# 빌드 시작
cmake ../
make -j$(nproc)
sudo make install
sudo ldconfig
빌드 중에는 CLI를 통해 사용자 선택사항이 발생할 수 있습니다. 작업 중인 터미널의 너비와 높이를 충분히 크게(120자x80자 이상) 설정한 뒤 빌드를 수행하는 것을 추천합니다.
Jetson Inference 재설치
~/Jetson-Inference(/home/hanul/Jetson-Inference)을 삭제한 경우나 완전 초기화를 수행한 경우에는 다음 명령을 사용하여 처음부터 설치를 수행합니다.
1
2
3
4
5
6
7
8
9
10
sudo apt-get update
sudo apt-get install git cmake libpython3-dev python3-numpy
git clone --recursive --depth=1 https://github.com/dusty-nv/jetson-inference
cd jetson-inference
mkdir build
cd build
cmake ../
make -j$(nproc)
sudo make install
sudo ldconfig
빌드 중에는 CLI를 통해 사용자 선택사항이 발생할 수 있습니다. 작업 중인 터미널의 너비와 높이를 충분히 크게(120자x80자 이상) 설정한 뒤 빌드를 수행하는 것을 추천합니다.
EmVision의 유지관리
L4T의 유지관리
EmVision은 Ubuntu 20.04를 기반으로 합니다. Ubuntu 20.04의 유지관리 방법을 참고하시기 바랍니다.
EmVision의 초기 유저명은
hanul이며 비밀번호는hanul입니다.
OS 및 패키지 업데이트
다음 명령을 사용하여 패키지 목록을 업데이트 합니다. 이 단계에서는 패키지를 업그레이드 하지 않습니다.
1
sudo apt update
패키지를 업그레이드 하는 경우 간혹 EmVision의 데모소프트웨어 등이 동작하지 않을 수 있습니다. 필요한 경우에만 패키지를 업그레이드 하고, 업그레이드 전에 백업을 권장합니다.
다음 명령을 통해 패키지 및 OS를 업그레이드 합니다.
1
sudo apt -y upgrade
캐시 삭제
간혹 패키지 설치 중에 오류가 발생하거나 패키지의 설치 / 제거를 많이 한 경우 /var/cache의 크기가 커질 수 있습니다.
1
2
3
4
5
# 캐시의 크기 확인
sudo du -sh /var/cache
# 캐시가 불필요하게 큰 경우
sudo apt clean
EmVision 보안 관리
SSH 접속에 사용되는 비밀번호 변경
EmVision의 초기 비밀번호는 hanul입니다.
외부네트워크 접속을 허용하거나 공용 네트워크에 연결된 경우에는 비밀번호를 변경하는 것이 좋습니다.
다음 명령을 사용하여 EmVision의 비밀번호를 변경할 수 있습니다.
1
2
3
4
5
6
sudo passwd hanul
# 기존 비밀번호 입력
# 새 비밀번호 입력
# 새 비밀번호 재입력
# 출력:
# passwd: password updated successfully
문제 해결
EmVison에서 발생하는 문제를 해결하는 방법을 안내합니다.
카메라 인식 문제
진단을 위해 EmVision 내부에서 다음 명령을 수행합니다.
1
ls /dev/video*
이 명령은 /dev/video으로 시작하는 모든 파일을 나열합니다.
여기서 /dev/video0을 찾을 수 없다면 다음 명령을 수행합니다.
1
sudo dmesg | grep -i imx
EmVision의 카메라 모듈은 imx219이며 관련하여 어떤 오류가 발생했는지 확인할 수 있습니다. 만일 i2c칩 인식 관련 오류인 경우 EmVision을 외부네트워크와 연결하여 다음 명령을 수행합니다.
메시지 출력이 없거나 이외의 인식불량인 경우 내부 케이블의 단선 문제 등을 확인해야 하므로 하늘소프트에 문의하여 제품을 수리해야 합니다.
1
2
sudo apt-get update
sudo apt-get install -y v4l-utils
설치를 완료하면 재부팅합니다.
1
sudo reboot
재부팅 후 다시 카메라를 인식했는지 확인합니다.
1
DISPLAY=:0 nvgstcapture-1.0
EmVision
Embedded Vision AI Prototyping Platform
임베디드 비전 AI 프로토타이핑 플랫폼