【エッジデバイス】yolov5トレーニングとrknnモデルエクスポートとRK3588へのデプロイ~2.環境検証(プロテスト有効)

乳母レベルのチュートリアルならこれで十分です。
インターネットで多くの情報を読んだところ、情報の多くのバージョンが一致以上であることがわかりました。
環境構築と検証に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

ホスト コンピュータで開きRemminaIP アドレス、ユーザー名、パスワードを入力して開発ボードに接続します。上記のファイルをダウンロードしたら、開発ボードに配置して解凍します。を使用してモデルを実行するには、約 時間がかかる
ここに画像の説明を挿入
ここに画像の説明を挿入
ことがわかりますボード環境はすでに利用可能です。RK3588NPUyolov533.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.solibrga.solibrknnrt.solibrga.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スクリプトを使用してボード側で推論する方法です(コードの開発と運用はすべてボード側で行われます)。

参考文献(以下は本記事をまとめるにあたって引用した参考文献です)

  1. yolov5 は pt モデルをトレーニングして rknn モデルに変換し、RK3588 開発ボードにデプロイします - トレーニングからデプロイまでの全プロセス
  2. RK3588モデル推論の概要
  3. NPUの使用
  4. RK3588 の NPU を使用してコンピューター上で yolov5 をクロスコンパイルし、ARM プラットフォームで実行する方法を段階的に説明します -哔哩哔哩
  5. yolov5s.onnx を rknn モデル RK3588 マザーボードに変換するリアルタイム推論とコンピューター側シミュレーション推論-哔哩哔哩
  6. コンピューターを取り除き、RK3588 プラットフォームで直接推論し、ユーザーが RKNN モデルを展開して AI アプリケーションの実装を加速できるようにします -哔哩哔哩]
  7. ウェアハウスのダウンロードrknn-toolkit チュートリアルを参照して、コミット ID に切り替える必要があります。公式 Web サイトの githubc5360f6e7009eb4d05f14d1cc9dae0963e949213から直接ダウンロードして、ターミナルで実行できますgit checkout c5360f6e7

おすすめ

転載: blog.csdn.net/zhoujinwang/article/details/132320711