9.1 Overview of NXP eIQ Machine Learning
9.1.1 Introduction (ML)
Machine Learning(ML)은 1960년대에 뿌리를 둔 컴퓨터 과학 영역이다. ML은 데이터에서 패턴과 규칙을 찾을 수 있는 알고리즘을 제공한다. ML은 소프트웨어 애플리케이션이 명시적으로 프로그램하지 않고도 결과를 보다 정확하게 예측할 수 있도록 하는 알고리즘의 범주이다. ML의 기본 전제는 입력 데이터를 수신할 수 있는 알고리즘을 구축하고 통계 분석을 사용하여 출력을 예측하는 동시에 새로운 데이터를 사용할 수 있게 되면 출력을 업데이트하는 것이다. 2010년에 Deep Learning이라고 하는 거대한 붐이 시작되었다. Deep Learning은 Neural Networks(NN: 신경망)을 기반으로 하는 ML의 서브도메인으로 빠르게 성장하고 있다. 인간의 두뇌에서 영감을 받은 Deep Learning은 다양한 작업(예: 컴퓨터 비전(CV), 자연어 처리(NLP))에서 놀라운 결과를 달성했다. Neural Nets은 수백만 개의 견본에서 복잡한 패턴을 학습할 수 있다. NXP가 선두주자인 임베디드 세계에서 엄청난 적용이 예상된다. NXP는 고객을 지원하기 위한 지속적인 노력을 통해 i.MX 8 QuadMax 디바이스에서 ML 애플리케이션을 개발 및 배포할 수 있는 ML 도구 세트인 i.MX용 NXP® eIQTM를 만들었다. 이 장에는 NXP eIQ 기계 학습 기술의 특정 영역에 대한 개요가 포함되어 있다. 기계 학습 명령의 자세한 실행은 i.MX Machine Learning User's Guide (IMXMLUG)를 참조한다.
9.1.2 OpenCV
OpenCV는 오픈 소스 컴퓨터 비전 라이브러리이며, ML이라는 모듈 중 하나는 기존 기계 학습 알고리즘을 제공한다. OpenCV의 또 다른 중요한 모듈은 DNN이다. 이는 신경망 알고리즘을 지원한다.
OpenCV는 신경망 추론(DNN 모듈)과 기존 기계 학습 알고리즘(ML 모듈) 모두에 대한 통합 솔루션을 제공한다. 많은 컴퓨터 비전 함수를 포함한 OpenCV는 다른 라이브러리에 종속되지 않고, 짧은 시간에 복잡한 기계 학습 애플리케이션을 쉽게 구축할 수 있도록 한다.
OpenCV는 Computer Vision 분야에서 널리 채택되었으며, 강력하고 매우 활동적인 커뮤니티의 지원을 받는다. 주요 알고리즘은 다양한 디바이스와 명령어 세트에 특별히 최적화되어 있다. i.MX의 경우, OpenCV는 Arm NEON 가속을 사용한다. Arm Neon 기술은 Arm Cortex-A 시리즈를 위한 고급 SIMD(single instruction multiple data) 아키텍처 확장이다. Neon 기술은 오디오와 비디오 인코딩/디코딩, 사용자 인터페이스, 2D/3D 그래픽이나 게이밍을 가속화하여 멀티미디어 사용자 경험을 개선하기 위한 것이다. 또한, Neon은 신호 처리 알고리즘과 함수를 가속화하여 오디오와 비디오 처리, 음성과 얼굴 인식, 컴퓨터 비전과 딥 러닝과 같은 애플리케이션의 속도를 높일 수 있다.
핵심적으로 OpenCV DNN 모듈은 추론 엔진의 구현이며, 신경망 학습을 위한 기능은 제공하지 않는다. 지원되는 모델과 지원되는 계층에 대한 자세한 내용은 공식 OpenCV Deep Learning 페이지를 확인한다.
OpenCV ML 모듈에는 기계 학습 문제(예: 분류, 회귀 또는 클러스터링)를 해결하기 위한 클래스와 함수가 포함되어 있다. 여기에는 서포트 벡터 머신(SVM), 의사 결정 트리, 랜덤 트리, 기댓값 최대화, k-최근접 이웃, 클래식 베이즈(Bayes) 분류기, 로지스틱 회귀와 부스트 트리와 같은 알고리즘이 포함된다.
9.1.3 Arm Compute
Arm Compute Library는 이미지 처리, 컴퓨터 비전과 머신 러닝을 대상으로 하는 Arm CPU와 GPU 아키텍처에 최적화된 저수준 함수의 모음이다. Arm 컴퓨터는 개발자가 개별적으로 소싱하거나 복잡한 파이프라인의 일부분을 사용하여 알고리즘과 애플리케이션을 가속화할 수 있는 최적화된 함수의 편리한 저장소이다. Arm compute library는 NEON의 가속도 지원한다. ARM 컴퓨터는 임의의 가중치와 입력이 있는 DNN 모델과 그래프 API를 사용하는 Alex Net을 사용하는 예제와 함께 표시될 수 있다.
9.1.4 TensorFlow Lite
TensorFlow Lite는 TensorFlow의 경량화 버전이자 다음 단계이다. TensorFlow Lite는 모바일과 임베디드 디바이스에서 머신 러닝 모델을 실행하는 데 중점을 둔 오픈 소스 소프트웨어 라이브러리이다(www.tensorflow.org/lite에서 사용 가능). 짧은 지연 시간과 작은 바이너리 크기로 머신 러닝 추론을 디바이스에서 가능하게 한다. TensorFlow Lite는 Android OS Neural Networks API를 사용하여 하드웨어 가속도 지원한다. TensorFlow Lite는 모바일 플랫폼에 맞게 조정된 핵심 연산자 세트(양자화와 부동소수점 모두)를 지원한다. 사전-융합된 활성화와 편향을 통합하여 성능과 양자화된 정확도를 더욱 향상시킨다. 또한, TensorFlow Lite는 모델에서 사용자 지정 작업의 사용을 지원한다.
TensorFlow Lite는 FlatBuffers를 기반으로 하는 새로운 모델 파일 형식을 정의한다. FlatBuffers는 크로스 플랫폼 직렬화 라이브러리의 효율적인 오픈 소스이다. 프로토콜 버퍼와 유사하지만, 주요 차이점은 FlatBuffers는 종종 개체별 메모리 할당과 결합되어 데이터에 액세스하기 전에 보조 표현에 대한 parsing/unpacking 단계가 필요하지 않다는 것이다. 또한 FlatBuffers의 코드 풋프린트는 프로토콜 버퍼보다 훨씬 작다.
TensorFlow Lite에는 앱을 간결하고 빠르게 유지하는 것이 핵심 목표인 모바일에 최적화된 새로운 인터프리터가 있다. 인터프리터는 정적 그래프 순서와 사용자 지정(덜 동적인) 메모리 할당자를 사용하여 로드, 초기화와 실행 대기 시간을 최소화한다.
9.1.5 Arm NN
Arm NN은 Arm에서 개발하고 다양한 신경망 모델 형식을 지원하는 오픈 소스 추론 엔진 프레임워크이다:
- Caffe
- TensorFlow
- TensorFlow Lite
- ONNX
i.MX 8의 경우, Arm NN은 NEON이 있는 CPU에서 실행되며 멀티 코어를 지원한다. Arm NN은 현재 i.MX 8 GPU에서 충족되지 않는 Arm NN OpenCL 요구 사항으로 인해 i.MX 8 GPU를 지원하지 않는다. Arm NN에 대한 자세한 내용은 공식 Arm NN SDK 웹페이지를 확인한다.
9.1.6 ONNX Runtime
ONNX Runtime은 ONNX 모델 형식을 지원하는 Microsoft에서 개발한 오픈 소스 추론 엔진 프레임워크이다. ONNX Runtime은 NEON이 있는 CPU에서 실행되며, 실행 공급자를 사용하여 GPU/NPU 하드웨어 가속기를 지원한다. ONNX Runtime에 대한 자세한 내용은 공식 ONNX Runtime 프로젝트 웹페이지를 확인한다.
9.1.7 PyTorch
PyTorch는 컴퓨터 비전과 자연어 처리같은 애플리케이션에 사용되는 오픈 소스 기계 학습 라이브러리이다. 무료이고 오픈 소스 소프트웨어이다. PyTorch는 텐서 계산과 같은 고급 기능을 위한 Python 패키지를 제공한다. PyTorch에 대한 자세한 내용은 공식 웹페이지 www.pytorch.org를 확인한다.
'NXP i.MX SoC Family > i.MX Linux Reference Manual' 카테고리의 다른 글
i.MX Linux Reference Manual - Unit Tests - System (0) | 2022.08.29 |
---|---|
i.MX Linux Reference Manual - Unit Tests (0) | 2022.08.29 |
i.MX Linux Reference Manual - NXP eIQ Machine Learning (0) | 2022.08.26 |
i.MX Linux Reference Manual - Security - SNVS Real Time Clock (SRTC) (0) | 2022.08.26 |
i.MX Linux Reference Manual - Security - Secure Non-Volatile Storage (SNVS) (0) | 2022.08.26 |