注: SOPHGO SE5 マイクロサーバーの CPU は ARM アーキテクチャに基づいているため、一部の手順は x86 アーキテクチャ CPU に基づいた開発環境で完了します。 1. 開発環境の初期化 (x86 アーキテクチャに基づいた開発環境で完了
) CPU) 3. YOLOv5 モデル展開テスト (SOPHGO SE5 マイクロサーバーで実行
)
実験的なコードとモデルは、「接続中...」からダウンロードできます。
1. 開発環境の初期化(x86アーキテクチャCPUベースの開発環境で完了)
1.1 開発環境の初期化
1.2 Dockerコンテナ開発環境の構成
次の手順は Docker コンテナで実行されます。
1. nntc をインストールし、環境変数を構成します
# root 権限に切り替えます
sudo -i
# Docker イメージをダウンロードします
wget https://sophon-file.sophon.cn/sophon-prod-s3/drive / 22/07/19/10/x86_sophonsdk
_ubuntu18.04_py37_dev_22.06_docker.zip
# unzip がインストールされている環境であることを確認してから解凍します phonsdk3_ubuntu18.04_py37_dev_22.06_docker docker
load -i x86_sophonsdk3_ubuntu18 .04_py3 7_dev_22.06.docker # SOPHON SDK3.0.0をダウンロードwget https://sophon-file.sophon.cn/sophon-prod-s3/drive/22/07/18/11/ sophonsdk_v3.0.0_20220716.zip unzip sophonsdk_v3. 0.0_20220716.zip cd sophonsdk_v3.0.0 # 作成して入力しますスクリプト ファイルを介した Docker コンテナ
# root なしでdocker コマンドの実行に関する上記の設定操作を行っていない場合は、コマンドの前に
sudoを追加する必要がありますsource envsetup_pcie.sh # 環境変数の設定 - [PCIe アクセラレータ カードなし] source envsetup_cmodel.sh
エクスポートされた環境変数は現在のターミナルでのみ有効であり、コンテナーに入るたびに再度実行する必要があります。または、これらの環境変数を
~/.bashrcに書き込むことで、毎回環境変数が自動的に設定されるようにすることもできます。ログイン
2. モデル変換(x86アーキテクチャCPUベースの開発環境で完了)
BMNNSDKのPyTorchモデル コンパイル ツールであるBMNETP はPyTorchのJITモデル(TorchScriptモデル)のみを受け入れるため、ユーザーはトレーニング済みのPytorchモデルを自分で変換する必要があります。JIT ( Just-In-Time ) は、 PyTorch の研究と運用の間のギャップを埋めるために使用されるコンパイル ツールのセットです。これにより、 Pythonインタープリターに依存せ、より積極的に最適化することができます。既存のPyTorch Pythonモデル (基本クラスはtorch.nn.Module ) の場合、JITモデルはtorch.jit.trace ( python_model ,torch.rand(input_shape) など) を通じて取得できます。 ) .save('jit_model') . BMNETP は、制御フローを使用した操作を一時的にサポートしません (たとえば、 ステートメントまたはループ)なので、torch.jit.scriptの代わりにtorch.jit.trace を使用します。これは、テンソル上の操作をトレースおよび記録するだけであり、制御フロー操作は記録しません。
2.1トレーニング済みのPytorchモデルをJITモデルに変換する
2.1.1 変換されたJITモデルを直接取得する
sleep/sleep-aug-640.yolov5pytorch/yolov5s6/weights/best.trace.pt で変換された JIT モデル
2.1.2トレーニング済みのPytorchモデルを自分でJITモデルに変換する
Ultralytics公式YOLOv5ソース コードをダウンロード
#コンテナ内で、例としてpython3.7 docker を取り上げますcd ${YOLOv5} # yolov5ソースコードをダウンロードgit clone https://github.com/ultralytics/yolov5.git yolov5_github # yolov5プロジェクトに切り替えdirectory cd yolov5_github #タグを使用して、リモートgit ブランチ v6.1 v6.1からローカルv6.1ブランチを作成します。 git checkout -v6.1 #ダウンロードしたスリープをyolov5_githubにインポートします
異なる出力を実現するために、models/yolo.pyのDetectクラスのforward関数の最後のreturnステートメントを変更します。
#このモデルは単一の出力です
def forward(self, x):
return x if self.training else (torch.cat(z, 1)) # 1 つの出力
#return x if self.training else x # 3 つの出力
# return x if self.training else (torch.cat(z, 1), x) # 4 つの出力
JITモデルのエクスポート
cd ${yolov5}/yolov5_githubディレクトリ
#Python仮想環境を作成するvirtualenv pip3 install virtualenv #仮想環境に切り替えるvirtualenv -p python3 --system-site-packages env_yolov5 source env_yolov5/bin/activate #インストールはpip3 install -rrequirements.txtに依存します#このプロセスでは依存関係の競合が発生しますまたはエラーは正常です#Export jit model python3 export.py --weights ${sleep}/ sleep-aug-640.yolov5pytorch / yolov5s6/weights/best.pt --include torchscript #仮想環境を終了します deactivate #良好なjitを生成しますモデルbest.torchscriptを${YOLOv5}/buildフォルダーmkdir ../buildにコピーします。
cp best.torchscript ../build/sleep_best_1output.trace.pt
#コピーを${YOLOv5}/data/modelsフォルダーにコピーします
mkdir ../data/models
cp best.torchscript ../data/models/sleep_best_1output.trace.ポイント
2.2 モデル変換: FP32 BModelの生成
FP32 BModelを生成するPythonコマンド
BMNETP は、 pytorchのモデル コンパイラーであり、 pytorchモデルをBMRuntimeで必要な実行命令に直接コンパイルできます。FP32 BModelモデルの直接生成は、次のコマンドで実現できます(生成されたJITモデルが${YOLOv5}/data/modelsパスにコピーされていることを確認してください)。
cd ${YOLOv5}/data/models/
python3 -m bmnetp --mode="compile" \
--model=sleep_best_1output.trace.pt \
--outdir=sleep_best_1output \
--target="BM1684" \
--shapes= [[1,3,640,640]] \
--net_name=yolov5s_fp32_b1 \
--opt= 2 \
--dyn=False \
--cmp=True \
--enable_profile=True
上記のスクリプトは、 ${YOLOv5}/data/models/sleep_best_1outputにCOMPILIATION.BMODELファイルを生成します。
モデル固有の情報を表示するには、次のコマンドを使用します:
bm_model.bin –info Compilation .bmodel
bmrt_test --bmodelコンパイル.bmodel
3. YOLOv5モデル導入テスト(コンピューティングエネルギークラウド開発プラットフォーム上で実施)
3.1サンプルプログラムの準備
以下の手順は、x86アーキテクチャCPUに基づく開発環境で実行されます
。 1. 開発環境を初期化します。
https://cloud.sophgo.com/developer
使用方法については、クラウド開発プラットフォームのマニュアルを参照してください。
クラウド スペース ファイル システムは、コマンド ラインの /tmp ディレクトリに対応します。
2. 処理された YOLOv5プロジェクト ファイルをクラウド開発プラットフォームにコピーします。
スリープ ファイル モデルをクラウド開発プラットフォームにコピーします。
3.2 BModel テスト (Pythonルーチン)
cd ${sleep}/bmodel/python
# BModelとイメージのパス名は参照専用です。それぞれのパスに従って変更します
python3 yolov5_opencv.py --bmodel
../bmodels/sleep_best_1output/compilation.bmodel --input../。 ./sleep-aug-640.yolov5pytorch/test/images/ _
python3 yolov5_bmcv.py --bmodel
../bmodels/sleep_best_1output/compilation.bmodel --input../../ sleep-aug-640.yolov5pytorch/test/images/
出力結果