乳母レベルのチュートリアルならこれで十分です。
インターネットで多くの情報を読んだところ、情報の多くのバージョンが一致以上であることがわかりました。
環境構築と検証に1週間かかり、この長文記事を書きました。
プロセス、コード、経験があり、誰もが批判したり修正したりすることができます。
1. 環境準備
[エッジデバイス] yolov5 トレーニングと rknn モデルのエクスポートと RK3588 へのデプロイ ~ 1. 環境準備 (プロテスト有効)
2. 環境検証
[エッジデバイス] yolov5トレーニングとrknnモデルのエクスポートとRK3588への展開 ~ 2. 環境検証(プロテストが有効)
3. yolov5 が独自モデルをトレーニング
[エッジデバイス] yolov5 トレーニングと rknn モデルをエクスポートして RK3588 にデプロイ ~ 3. YOLOv5 が独自モデルをトレーニング (個人テストに効果的)
4. モデルのエクスポート
[エッジデバイス] yolov5 トレーニングと rknn モデルのエクスポートと RK3588 へのデプロイ ~ 4. モデルのエクスポート (個人テストに有効)
5.モデル
[エッジデバイス]のyolov5トレーニングとrknnモデルのエクスポートとRK3588へのデプロイメント ~ 5.モデルのデプロイメント(プロテスト効果)
2. 環境検証
(1) 基板検証
Baidu ネットワーク ディスク-rknn_yolov5_rk3588_v14抽出コード: 8888
ホスト コンピュータで開きRemmina
、IP アドレス、ユーザー名、パスワードを入力して開発ボードに接続します。上記のファイルをダウンロードしたら、開発ボードに配置して解凍します。を使用してモデルを実行するには、約 時間がかかる
ことがわかります。ボード環境はすでに利用可能です。RK3588
NPU
yolov5
33.8 ms
(二)RKNN-Toolkit2-Lite(板端)
1. インストールMiniconda
Miniconda をボードにダウンロードします。バージョンは次のとおりです。
bash Miniconda3-py39_23.3.1-0-Linux-aarch64.sh
成功するまでインストールしてください。
2. 仮想環境
ボードの端を取り付けた後。仮想環境を作成してアクティブ化する
conda create -n rknn python=3.9
conda activate rknn
rknn_toolkit_lite2
ディレクトリに、
3. インストール環境の依存関係
pip install packages/rknn_toolkit_lite2-1.4.0-cp39-cp39-linux_aarch64.whl
インストールが遅い場合は、国内のpip
ソースを変更してください。
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip
他のパッケージ ライブラリが見つからない場合は、を使用して直接インストールします。
4. テスト検証
ディレクトリにexamples/inference_with_lite
、
ただ実行してくださいpython test.py
。
これまでのところ、ボード上の rknn_toolkit_lite2 がインストールされ、検証されています。その後、プログラムを開発してボード側に展開できますpython
。
注記
実行時にまたはライブラリが見つからない
python test.py
というメッセージが表示された場合は、github からダウンロードするか、または を別のディレクトリのディレクトリにコピーしてください。librknnrt.so
librga.so
librknnrt.so
librga.so
/usr/lib
ボード上のターミナルを開いたときにデフォルトでrknnの仮想環境を起動したい場合は、
vi ~/.bashrc
加えるconda activate rknn
(3) ホストマシン
1. 仮想環境を作成してアクティブ化する
rknn
仮想環境をインストールする
conda create -n rknn python=3.8
conda activate rknn
pytorch
仮想環境をインストールする
conda create -n pytorch
pytorch
ここでは、環境の依存関係を作成するか、pytorch
公式チュートリアルに従って対応するパッケージをダウンロードする方が簡単です。
pip install ultralytics
何が足りないのか、何を補うべきなのか:pip install xx
2. 依存関係をインストールする
rknn 仮想環境に入り、rknn-toolkit2
ディレクトリに入ります。
source activate rknn
pip install -r doc/requirements_cp38-1.4.0.txt
requirements_cp38-1.4.0.txtファイルの内容は次のとおりです。
# if install failed, please change the pip source to 'https://mirror.baidu.com/pypi/simple'
# base deps
numpy==1.19.5
protobuf==3.12.2
flatbuffers==1.12
# utils
requests==2.27.1
psutil==5.9.0
ruamel.yaml==0.17.4
scipy==1.5.4
tqdm==4.64.0
bfloat16==1.1
opencv-python==4.5.5.64
# base
onnx==1.9.0
onnxoptimizer==0.2.7
onnxruntime==1.10.0
torch==1.10.1
torchvision==0.11.2
tensorflow==2.6.2
3. 設置環境
rknn仮想環境に入り、rknn-toolkit2
ディレクトリを入力します。
source activate rknn
pip install packages/rknn_toolkit2-1.4.0_22dcfef4-cp38-cp38-linux_x86_64.whl
4. rknn 仮想環境に入り、インストールが成功したかどうかを確認します。rknn
source activate rknn
python
開発環境に入る
from rknn.api import RKNN
エラーが報告されない場合は、RKNN
インストールが成功したことを意味します。
5. テスト
ホスト マシンでrknn
仮想環境に入り、
cd examples/onnx/yolov5/
tree .
.
├── bus.jpg
├── dataset.txt
├── test.py
└── yolov5s.onnx
python test.py
6.rknn
検証のためにモデルをボード上に置きます
上記の手順で生成されたものをyolov5s.rknn
テストのためにボード端に配置します。
.
├── lib
│ ├── librga.so
│ └── librknnrt.so
├── model
│ ├── RK356X
│ │ └── yolov5s-640-640.rknn
│ ├── RK3588
│ │ ├── yolov5s-640-640.rknn
│ │ └── yolov5s.rknn
│ ├── RV110X
│ │ └── yolov5s-640-640.rknn
│ ├── bus.jpg
│ └── coco_80_labels_list.txt
├── out.jpg
├── rknn_yolov5_demo
└── testYolov5_rk3588.sh
ボードファイルを変更する
bash testYolov5_rk3588.sh
中的
./rknn_yolov5_demo model/RK3588/yolov5s-640-640.rknn model/bus.jpg
のために
./rknn_yolov5_demo model/RK3588/yolov5s.rknn model/bus.jpg
。
そしてボード側で実行しますbash testYolov5_rk3588.sh
ztl@ztl:~/workspace/demo_rknn_yolov5_rk3588_v14$ bash testYolov5_rk3588.sh
post process config: box_conf_threshold = 0.25, nms_threshold = 0.45
Read model/bus.jpg ...
img width = 640, img height = 640
Loading mode...
E RKNN: [05:25:08.050] failed to check rknpu hardware version: 0x46495245
E RKNN: [05:25:08.050] This rknn model is for RK3566, but current platform is RK3588
E RKNN: [05:25:08.050] rknn_init, load model failed!
rknn_init error ret=-1
エラーメッセージが表示された場合は、ホストプラットフォームにプラットフォーム情報を再設定してください。
意思
rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]])
着替える
rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform='rk3588')
そして再実行する
python test.py
モデルを生成しyolov5s.rknn
、ボード上の対応する位置にアップロードします。
ボード側で再実行するとbash testYolov5_rk3588.sh
、動作効果は正常です。
これまでのところ、指定された変換モデルはホスト コンピュータで使用でき、モデルはボードにアップロードでき、正しく実行できます。demo
注: 開発と展開には 4 つの方法があります
- 1 つ目は、
RKNN-Toolkit2
関数を使用してシミュレーション上でモデルNPU
を実行しRKNN
、(PC 側で) 推論結果を取得することです。- 2つ目は
RKNN-Toolkit2
、 の機能を持つボードをPC
接続し、推論用にRKNN
指定されたデバイスにモデルを配布しNPU
、推論結果を取得する方法です(ネットワーク推論はボード側で、スクリプトは側で記述しますPC
)- 3 番目は、言語を呼び出して
RKNN SDK
テストC/C++
コードAPI
を作成し、クロスコンパイラーでコンパイルし、実行可能ファイルをボードにコピーして実行します (開発とコンパイルはボード側で、PC
ボード側で実行)。ボード側を接続しVS Code
、ボード側でアプリケーションを開発します。- 4つ目は、
rknn-toolkit2-lite
ボード側にツールをインストールし、python
スクリプトを使用してボード側で推論する方法です(コードの開発と運用はすべてボード側で行われます)。
参考文献(以下は本記事をまとめるにあたって引用した参考文献です)
- yolov5 は pt モデルをトレーニングして rknn モデルに変換し、RK3588 開発ボードにデプロイします - トレーニングからデプロイまでの全プロセス
- RK3588モデル推論の概要
- NPUの使用
- RK3588 の NPU を使用してコンピューター上で yolov5 をクロスコンパイルし、ARM プラットフォームで実行する方法を段階的に説明します -哔哩哔哩
- yolov5s.onnx を rknn モデル RK3588 マザーボードに変換するリアルタイム推論とコンピューター側シミュレーション推論-哔哩哔哩
- コンピューターを取り除き、RK3588 プラットフォームで直接推論し、ユーザーが RKNN モデルを展開して AI アプリケーションの実装を加速できるようにします -哔哩哔哩]
- ウェアハウスのダウンロードrknn-toolkit チュートリアルを参照して、コミット ID に切り替える必要があります。公式 Web サイトの github
c5360f6e7009eb4d05f14d1cc9dae0963e949213
から直接ダウンロードして、ターミナルで実行できます。git checkout c5360f6e7