Vitis AI Model ZooでPyTorch+YOLOXを動かそうとしたメモ

本サイトはアフィリエイト広告を利用しています。
AI

Vitis AI Model ZooでPyTorch+YOLOXを動かそうとしたメモです。

データセットの入手から学習までの流れを実施しています。

手順を紹介します。

 

スポンサーリンク

Vitis AI Model ZooでPyTorch+YOLOXを動かそうとしたメモ

Vitis AI Model ZooでPyTorch+YOLOXを試そうとしました。

但しサンプルの手順だと学習の所でGPUが必要になりましたので、途中までの記事です

(筆者のPCがノートでGPUを積んでいないためです)

 

YOLOXを動かしたいだけならばAventのサンプルで

今回Vitis AIの学習の流れを確認したく、PyTorch+YOLOXの手順を試してみました。

但し、Ultra96-V2でコンパイルされたものがAvnetのプラットフォームで用意されています。

Ultra96-V2での動かし方は下記記事で紹介しています。(リンク先はこちら)

Ultra96-V2とVitis-AIをAventのplatformsで動かすメモ

Ultra96-V2とVitis-AIをAventのplatformsで動かすメモ
Ultra96-V2でVitis-AI 2.0を動かしてみました。 Aventが提供しているimgファイルを使えばデモ程度は簡単に動作できます。 手順を紹介します。

 

下記のサンプルフォルダがありました。よろしければ試してみて下さい。

/home/root/Vitis-AI/demo/Vitis-AI-Library/samples/yolovx/

Vitis AIを慣れるために

今回記事を書いた背景としては、下記コンテスト時にVitis AIで苦戦していたためです。

サンプル・デモを弄って、少しずつですが経験を積んでいます。

AIエッジコンテストが勉強になった(難しかった)件

AIエッジコンテストが勉強になった(難しかった)件
第5回AIエッジコンテストに参加していました。 (筆者の力量では)コンテストの課題が難しく、最後の実装まで到達できませんでした。 ただ貴重な勉強の機会になりましたし、自身への忘備録としても内容を紹介します。

 

PyTorch+YOLOXの学習までの流れ(途中)

結果的に途中までになりましたが、公式の手順に従って進めていきます。

実施した環境としては下記です。

  • WSL2(Ubuntu-20.04)
  • Vitis AI(2.0.0.1103)

 https://www.hackster.io/AlbertaBeef/vitis-ai-2-0-flow-for-avnet-vitis-platforms-06cfd6

 https://github.com/Xilinx/Vitis-AI

 

Vitis AIを使えるようにする

まずはVitis AIをクローンします。

git clone --recurse-submodules https://github.com/Xilinx/Vitis-AI
cd Vitis-AI/
export VITIS_AI_HOME=$PWD

 

その後dockerを動かそうとしたら、見つからないとエラーが出ました。

WSL2環境でUbuntu-20.04をONにするのを忘れていました。

Docker DesktopからONにしておきます

 

AI-Model-Zooからサンプルを入手する

dockerとVitis AIを立ち上げる前に、必要な環境を整えておきます。

今回はPyTorch+YOLOXの画像認識のサンプルです。

cd /mnt/c/Xilinx/Vitis-AI/models/AI-Model-Zoo
cat model-list/pt_yolox_TT100K_640_640_73G_2.0/model.yaml

 

最終的にはUltra96-v2で動かしたいので「type: float & quantized」のものを使っています。

wget https://www.xilinx.com/bin/public/openDownload?filename=pt_yolox_TT100K_640_640_73G_2.0.zip
unzip openDownload\?filename\=pt_yolox_TT100K_640_640_73G_2.0.zip

 

解凍すると、readme.mdがあるので手順に関してはしっかり見た方が良いです。

ここに一番重要なコンパイルまでの流れが記載されています。

 

学習に使うデータセットを入手する

学習するためのTT100Kのデータセットをダウンロードする必要があります。

(TT100K…道路標識を検出・識別するためのデータセットのようです)

Tsinghua-Tencent 100K Tutorial

 

実際のデータの中身は下記のように写真が一杯詰まっています。

 

ZIPの状態でも約20GBあるのでご注意下さい。

readmeに従い、データセットはZIPの状態でcode→datasetsのフォルダに移動しておきます。

wget http://cg.cs.tsinghua.edu.cn/traffic-sign/data_model_code/data.zip

 

Vitis AIを起動する

Vitis AIを起動して、学習を進めていきます。

cd $VITIS_AI_HOME
sudo ./docker_run.sh xilinx/vitis-ai-cpu:latest
conda activate vitis-ai-pytorch

 

pt_yolox_TT100K_640_640_73G_2.0のフォルダに移動して、下記を実行します。

pip install --user -r requirements.txt
pip install --user -v -e

 

TT100Kのデータセットを学習できるように、変換スクリプトがあるので走らせます。

ダウンロードしたZIPファイルの解凍から実施してくれます。

bash datasets/convert_label.sh

 

学習するスクリプトのrun_train.shを実行させるにあたって下記インストールが必要でした。

bash run_train.sh
pip install loguru
pip install yolox

 

ExpDeploy?という変な名前が使われていた

ただ必要なものをインストールしても、中のPythonのプログラムでエラーが出ていました。

エラー出しているのは"exps/example/custom/yolox_m_tt100k_float.py"です。

ExpDeployの名前が変ということでした。

 

yolox_m_tt100k_float.pyの中身を見ると、最初のインポート箇所で間違っている様子?

「ExpDeploy」→「Exp」にすると動作しました

 

但し、学習するシェルスクリプトがGPU使ってねというエラーが出ました。

筆者のPCがノートなのでGPU(CUDA)を積んでいないためです。

 

ColabでPytorchとYoloxを学習させようとしたメモ

ノートPCにはGPUが無いので、ColabのGPUを使ってPytorchとYoloxの学習を試みました。

但し、デフォルトの設定だと4枚のGPUを使って学習させるスクリプトでした。

またデータセットも約20GBあるので、GPU上のメモリエラーも出てきます。

 

正常な学習にならないかもしれませんが、お試しなので緩くした条件で実施してみました。

  • GPUの使用数を4→1に変更
  • エポック(epoch)数を300→10に変更
  • バッチサイズ(BATCH_SIZE)を64→16に変更

 

Colab上でも学習スクリプトのrun_train.shは動かせれました。

但し、その次のデモや量子化のスクリプトで下記エラーが出ました。

ModuleNotFoundError: No module named 'pytorch_nndct'

 

恐らくconda環境など上手く合わせればエラー解消できそうですが、

量子化含めてGPUあるVITIS AIのdocker環境でないと結構厳しそうです。

一旦ここで止めておきたいと思います。

 

まとめ

Vitis AI Model ZooでPyTorch+YOLOXを動かそうとしたメモです。

よろしければ皆さまも試してみて下さい。

 

実際にFPGA(KV260)でYOLOを動かした記事が下記となります。

KV260でYOLOX+DPUの物体検出をしてみたメモ

KV260でYOLOX+DPUの物体検出をしてみたメモ
FPGAでYOLOXの物体検出をしてみました。 使用したFPGAの評価ボードはKV260です。 Vitis AIのサンプルを使って簡単にテストした内容を紹介します。

コメント