> For the complete documentation index, see [llms.txt](https://zito.gitbook.io/rknn_usermanual/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zito.gitbook.io/rknn_usermanual/1.-rknn.md).

# 1. RKNN이란?

[오렌지 파이](http://www.orangepi.org/)는 간단히 말해서 NPU (Neural Processing Unit)이 탑재된 싱글보드 컴퓨터입니다. NPU가 달린 라즈베리파이라고 생각하시면 쉽습니다.&#x20;

만약 딥러닝 모델이 돌아가는 작은 컴퓨터를 저렴한 가격에 쓰고 싶다면 오렌지 파이는 꽤 좋은 선택입니다.&#x20;

<figure><img src="/files/CG5vL22Dd25L5cuJeK65" alt="" width="320"><figcaption></figcaption></figure>

오렌지 파이 5에는 Rockchip이라는 회사에서 만든 NPU인 RK3588이 탑재되어 있습니다.

오렌지 파이 뿐 아니라, [바나나파이](https://wiki.banana-pi.org/Banana_Pi_BPI-M7)에도 RK3588이 들어 있습니다. 바나나 파이와 오렌지 파이는 크게 차이는 없으므로, 도큐먼트를 더 많이 제공해 주는 플랫폼을 사용하시는 것이 좋겠습니다.&#x20;

*🍌바나나 파이를 쓸까 ? 🍊 오렌지 파이를 쓸까?*&#x20;

## RKNN

다만 오렌지파이에서는 일반적인 딥러닝 모델 (ONNX, PyTorch 등) 을 바로 쓸 수가 없습니다. Nvidia 칩이 아니기 때문에 CUDA도 없습니다.&#x20;

따라서 우리는 일반적인 딥러닝 모델을 오렌지 파이 NPU가 이해할 수 있는 포맷으로 변경해 줘야 하는데, 그게 바로 RKNN이고, 이 변환은 Rockchip에서 제공해주는 rknn-toolkit을 통해 이루어집니다.&#x20;

#### rknn-toolkit2

{% embed url="<https://github.com/airockchip/rknn-toolkit2>" %}

rknn-toolkit2에는 다음과 같은 기능들이 있습니다.&#x20;

<figure><img src="/files/QlaxBn2zvyfFNRMRSgfQ" alt="" width="563"><figcaption></figcaption></figure>

1. **Model Conversion** : \
   Caffe, Tensorflow, ONNX, Darknet 모델들을 RKNN 모델로 변환할 수 있습니다.
2. **Quantization** : \
   float 모델을 quantization 모델로 변환할 수 있습니다.
3. **Model Inference**&#x20;
4. **Performance Evaluation**
5. **Memory Evaluation**
6. **Model pre-compilation :** \
   pre-compilation을 이용해서 모델을 로드하는 시간을 줄일 수 있습니다. 또한 어떤 모델에 대해서는 모델 사이즈도 줄일 수 있습니다. 다만 pre-compiled RKNN 모델은 x86\_64 Ubuntu 기반의 NPU 가 있는 하드웨어 플랫폼에서만 구동될 수 있습니다.
7. **Model Segmentation** : \
   이 함수는 여러 개의 모델들이 동시에 구동될 때 사용될 수 있습니다. 하나의 모델이 여러 개의 조각으로 분리되어 NPU 에서 실행됨으로써 실행 시간을 줄일 수 있습니다.

따라서 이러한 기능을 잘 활용하여 모델 및 알고리즘을 최적화한다면, 오렌지 파이는 임베디드 시스템 및 로봇, 드론 등에서 딥러닝 inference 를 수행하는 보드로 활용될 수 있습니다.&#x20;
