[RKNN] rknn-toolkit-lite2

rknn-toolkit-lite2 간단 예제
RKNNOrange PiEmbeddedAI
avatar
2025.05.20
·
6 min read

Intro

이전 글에는 RKNPU에서 AI 연산을 위해 rknn-toolkit2를 활용하여 AI 모델을 rknn 형식으로 변환하는 방법에 대해 다뤘다. 그렇다면 RKNPU에서 모델을 연산하려면 어떻게 해야할까?

그것은 바로 rknn-toolkit-lite2를 이용하는 것이다. rknn-toolkit-lite2는 rknn 형식으로 변환된 모델을 RKNPU에서 연산을 할 수 있도록 하는 라이브러리다.

이번 글은 rknn-toolkit-lite2를 이용해 rknn 형식의 모델을 추론하여 결과물을 보여주는 간단한 방법에 대해 알아보고자 한다.

Environment

기본적으로 rknn-toolkit-lite2는 RKNPU 환경에서 AI 모델의 추론 연산을 할 수 있도록 도와주는 장치이다. 다시말하면 RKNPU 환경에서만 rknn-toolkit-lite2가 동작할 수 있는 것이다. RKNPU는 Rockchip 사의 RK 시리즈 등과 같은 ARM AP에 탑재되므로 OS 환경도 aarch에 국한되어 있다.

그러므로 rknn-toolkit-lite2를 동작시키기 위한 최소 환경 조건은 아래와 같다.

구분

내용

Python version

3.7~3.11

OS

Debian 10 / 11 (aarch)

Python version 관련

최신 User Guide v2.3.2에는 rknn-toolkit-lite2에서 지원하는 python version이 3.11까지라고 되어있지만, 실제 github에 들어가면 python 3.12 관련 whl도 존재한다. (🔗)

Installation

rknn-toolkit-lite2 설치 방법은 아래와 같다.

python과 pip 설치가 되어있지 않다면 다음 명령어를 통해 설치한다.

# install python3, pip3
sudo apt-get update
sudo apt-get install -y python3 python3-dev python3-pip gcc

# install dependent modules
sudo apt-get install -y python3-opencv python-numpy

python과 pip 설치가 완료됐다면, rknn-toolkit-lite2 관련 whl을 다운받아 pip로 라이브러리를 설치한다. whl 파일은 해당 링크 (🔗)에서 python 버전에 맞는 환경을 다운받고, 아래의 명령어를 입력해 설치를 완료한다.

# basic
pip install rknn_toolkit_lite2-{rknn version}-cp{python version}-cp{python version}-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

# example) python 3.10 기준
pip install rknn_toolkit_lite2-2.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

whl 파일의 python 버전 구분 방법

whl 파일명에서 cp 다음에 적힌 숫자를 보면 알 수 있다.
cp310 : python 3.10 전용 / cp37 : python 3.7 전용

Basic flow chart

6223

위 이미지는 RKNPU User Guide V2.3.2 중 3.4.3절에 존재하는 이미지 이다. rknn-toolkit-lite2를 이용해 모델 추론을 위해서는 이미지의 순서대로 행동해야 한다.

  1. RKNNLite 객체 초기화 (RKNNLite init)

  2. rknn 모델 불러오기 (load_rknn)

  3. RKNNLite 동작 설정 (init runtime)

  4. 모델 추론 (inference)

  5. release

Python Code

위의 흐름도를 토대로 간단하게 예제 코드를 작성해 보았다.

import RKNNLite

# RKNN Lite init
rknn_lite = RKNNLite()

# Load rknn model
ret = rknn_lite.load_rknn('path.rknn')
if ret != 0:
  print('Load rknn failed') 
  exit(ret)

# Init runtime environment
ret = rknn_lite.init_runtime(core_mask=RKNNLite.NPU_CORE_AUTO)
if ret != 0:
  print('Init runtime environment failed') 
  exit(ret)

# Inference
img = [...] # example input
outputs = rknn_lite.inference(inputs=[img])

# RKNN Release
rknn_lite.release()

회고

rknn-toolkit-lite2의 간단한 사용 방법에 대해 알아보았다.
rknn 관련 코드들이 쉽게 사용할 수 있게도록 되어있지만,
누군가 rknn을 시도할 때, 하나라도 도움이 됐으면 좋겠다는 마음으로 글을 적어보았다.

나 역시 rknn을 다시 쓸 일 있으면 이 글을 다시 보면서 시도하지 않을까... 생각하며 글을 마친다.

참고사이트







- 컬렉션 아티클