C++ 라이브러리 이해

LiteRT for Microcontrollers C++ 라이브러리는 TensorFlow 저장소. 읽기 쉽고, 수정하기 쉽고, 테스트를 잘 거치고, 통합하기 쉽고, 일반 LiteRT와 호환됩니다.

다음 문서는 C++ 라이브러리의 기본 구조와 에는 자체 프로젝트 만들기에 대한 정보가 나와 있습니다.

파일 구조

micro 드림 루트 디렉터리의 구조는 비교적 간단합니다. 하지만 Kubernetes가 우리는 대규모 TensorFlow 리포지토리 내에서 스크립트와 관련 소스 파일을 격리된 상태로 제공하는 사전 생성된 프로젝트 파일 애플리케이션을 실행할 수 있습니다

키 파일

마이크로컨트롤러용 LiteRT를 사용하기 위해 가장 중요한 파일은 인터프리터가 테스트와 함께 프로젝트의 루트에 있습니다.

[`micro_mutable_op_resolver.h`](https://github.com/tensorflow/tflite-micro/blob/main/tensorflow/lite/micro/micro_mutable_op_resolver.h)
can be used to provide the operations used by the interpreter to run the
model.

마이크로 컨트롤러 시작하기에서 일반적인 사용법 둘러보기

빌드 시스템은 할 수 있습니다. 이는 플랫폼 이름이 있는 디렉터리에 있습니다. 예를 들어 cortex-m

다음을 포함한 여러 다른 디렉터리가 있습니다.

  • kernel님, 여기에는 작업 구현 및 관련 코드가 포함됩니다.
  • tools님, 여기에는 빌드 도구와 출력이 포함됩니다
  • examples님, 샘플 코드가 포함되어 있습니다

새 프로젝트 시작

Hello World 예를 새 프로젝트의 템플릿으로 사용하는 것이 좋습니다. 나 다음 단계에 따라 선택한 플랫폼에 맞는 버전의 패키지를 받을 수 있습니다 이 섹션의 안내를 따르세요.

Arduino 라이브러리 사용

Arduino를 사용하는 경우 Hello World 예제가 Arduino_TensorFlowLite Arduino 라이브러리로, Arduino IDE 및 Arduino Create에 있음.

라이브러리가 추가되면 File -> Examples로 이동합니다. 그러면 TensorFlowLite:hello_world라는 목록 하단 근처에 있습니다. 선택 hello_world를 클릭하여 예시를 로드합니다. 그런 다음 이를 자신의 프로젝트의 기초로 사용할 수 있습니다.

다른 플랫폼용 프로젝트 생성

독립형 프로젝트를 생성할 수 있는 Microcontrollers용 LiteRT Makefile를 사용하여 필요한 모든 소스 파일을 포함합니다. 현재 지원되는 환경에는 Keil, Make, Mbed가 있습니다.

Make로 이러한 프로젝트를 생성하려면 TensorFlow/tflite-micro 저장소 다음 명령어를 실행합니다.

make -f tensorflow/lite/micro/tools/make/Makefile generate_projects

이 작업에는 몇 분 정도 걸립니다. 살펴보겠습니다 완료되면 일부 폴더가 생성된 것을 볼 수 있습니다. gen/linux_x86_64/prj/( 정확한 경로는 호스트 운영체제에 따라 다름). 이 폴더에는 프로젝트 및 소스 파일을 생성할 수 있습니다

명령어를 실행한 후 Hello World 프로젝트를 gen/linux_x86_64/prj/hello_world입니다. 대상 예를 들어 hello_world/keil에는 Keil 프로젝트가 포함됩니다.

테스트 실행

라이브러리를 빌드하고 모든 단위 테스트를 실행하려면 다음 명령어를 사용합니다.

make -f tensorflow/lite/micro/tools/make/Makefile test

개별 테스트를 실행하려면 다음 명령어를 사용합니다. 여기서 <test_name>는 바꿉니다. 테스트 이름으로 바꿉니다.

make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>

테스트 이름은 프로젝트의 Makefile에서 확인할 수 있습니다. 예를 들어 examples/hello_world/Makefile.incHello World 예시

빌드 바이너리

주어진 프로젝트 (예: 예시 애플리케이션)를 위한 실행 가능한 바이너리를 빌드하려면 다음 명령어를 사용하여 <project_name>를 원하는 프로젝트로 바꿉니다. 있습니다.

make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin

예를 들어 다음 명령어는 Hello World용 바이너리를 빌드합니다. 애플리케이션:

make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin

기본적으로 프로젝트는 호스트 운영체제에 맞게 컴파일됩니다. 받는사람 다른 대상 아키텍처를 지정하려면 TARGET=TARGET_ARCH=를 사용하세요. 이 다음 예에서는 일반 Google Cloud의 Hello World 예를 빌드하는 방법을 보여줍니다. Cortex-m0:

make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin

대상이 지정되면 사용 가능한 모든 대상별 소스 파일이 가 원본 코드 대신 사용됩니다. 예를 들어 examples/hello_world/cortex_m_generic에는 SparkFun Edge 구현이 포함되어 있습니다. 파일(constants.ccoutput_handler.cc)이 포함되어 있으며 이는 타겟 cortex_m_generic이(가) 지정되었습니다.

프로젝트 이름은 프로젝트의 Makefile에서 확인할 수 있습니다. 예를 들어 examples/hello_world/Makefile.incHello World 예시

최적화된 커널

tensorflow/lite/micro/kernels의 루트에 있는 참조 커널은 다음과 같습니다. 순수 C/C++로 구현되며 플랫폼별 하드웨어를 포함하지 않음 최적화할 수 있습니다

최적화된 버전의 커널은 하위 디렉터리에 제공됩니다. 예를 들어 kernels/cmsis-nn에는 Arm의 CMSIS-NN 라이브러리를 제공합니다.

최적화된 커널을 사용하여 프로젝트를 생성하려면 다음 명령어를 사용합니다. <subdirectory_name>을 최적화:

make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects

새로운 하위 폴더를 만들어 자체 최적화를 추가할 수 있습니다. 새롭게 최적화된 구현에 대한 pull 요청을 장려합니다.

Arduino 라이브러리 생성

라이브러리의 새 빌드를 생성해야 하는 경우 다음을 실행할 수 있습니다. 스크립트를 실행합니다.

./tensorflow/lite/micro/tools/ci_build/test_arduino.sh

결과 라이브러리는 gen/arduino_x86_64/prj/tensorflow_lite.zip

새 기기로 포팅

마이크로컨트롤러용 LiteRT를 새로운 플랫폼으로 포팅하는 방법과 다음에서 기기를 찾을 수 있습니다. micro/docs/new_platform_support.md