KR260とDPU-PYNQでYOLOv3の物体検出してみる

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

KR260で360°カメラの画像を物体検出してみました。

DPU-PYNQのサンプルプログラムを使って、YOLOv3でテストしています。

 

スポンサーリンク

KR260で360°カメラの画像をYOLOv3の物体検出してみる

KR260から360°カメラを撮影してみました。

そして撮影した写真を、KR260でYOLOの物体検出のテストしています。

 

360°の画像を物体検出した結果です。

人は検出できていますが、黄色のボールが検出できていません。

やはり色々と補正が必要そうです。

 

2枚の画像に分割して、縦横比を1:1にするとより検出できるようになります。

 

 

まず普通にスマートフォンで撮影した写真をKR260+Yoloで物体検出してみました。

普通の写真ではボールとして認識できています。

 

実際にjupyter_notebooksでテスト動画としては下記になります。

 

pythonのプログラムにしても同様にテストもしています。

 

元々PYNQ-DPUのサンプルプログラムがありましたので、それを修正した形です。

使用したモデル・修正方法に関して紹介していきます。

 

DPU-PYNQ

DPU-PYNQのサンプルプログラムは下記にあります。

その中に物体検出のYOLOのサンプルが入っています。(dpu_yolov3.ipynb)

DPU-PYNQ/pynq_dpu/notebooks at design_contest_3.5 · Xilinx/DPU-PYNQ
DPU on PYNQ. Contribute to Xilinx/DPU-PYNQ development by creating an account on GitHub.

 

コンテストの主催者側から提供された、下記をインストールすると自動的に入っています。

GitHub - amd/Kria-RoboticsAI
Contribute to amd/Kria-RoboticsAI development by creating an account on GitHub.

 

TensorFlow2 + YOLOv3

サンプルのままだと、若干古いTensorflowのフレームワークとなっています。

またデータセットもVOC2007とかなり古いです。

Vitis-AI/model_zoo/model-list/tf_yolov3_3.5 at master · Xilinx/Vitis-AI
Vitis AI is Xilinx’s development stack for AI inference on Xilinx hardware platforms, including both edge devices and Al...

 

そのため同じyolov3ですが、まだ比較的新しいモデルを用意します。

Vitis AIの下記Tensorflow2のyolov3です。データセットはCOCO2017です

Vitis-AI/model_zoo/model-list/tf2_yolov3_3.5 at master · Xilinx/Vitis-AI
Vitis AI is Xilinx’s development stack for AI inference on Xilinx hardware platforms, including both edge devices and Al...

 

ダウンロード・解凍します。

 

 

Vitis AIでコンパイル

PCでVitis-AIを起動して、TensorFlow2をアクティベートします。

今回はKR260用にモデルを作成しています。

 

モデル作成後はKR260に転送します。.xmodelを使います。

 

またCOCO2017用のリストを作成しときます。80種類のリストとなっています。

coco2017_classes.txt

 

ipynbファイル

実際に動かしたipynbファイルは下記GitHubにファイルを置いています。

 https://github.com/iotengineer22/AMD-Pervasive-AI-Developer-Contest/blob/main/jupyter_notebooks/pynq-dpu/dpu_yolov3_tf2_coco2017.ipynb

 

主に修正した箇所です。

作成したtf2のモデルをロードして、COCO2017のクラスで分類するようにしています。

またimgフォルダのJPGファイルを画像認識させるようにしています。

 

KR260でipynbファイルを開いて、実行を進めていきます。

 

KR260でDPUを使うための.bitファイルはデフォルトのものを使用しています。

 

TensorFlow2のモデルを読み込んでいます。

 

VARTを使って、DPUでYOLOv3の物体検出を行います。

 

COCO2017の80のカテゴリで物体検出しています。

 

今回テストした写真は360°画像が2枚、普通のカメラ画像が1枚です。

 

360°画像は上手く物体検出できていないことが分かります。

手前に並んでいるボールが全く検出できていません。

 

大きい人などは検出できますが、ボールなどは検出できていません。

 

普通のスマホカメラで撮影した画像のボールは物体検出できています。

 

pythonファイル

同様なプログラムをpythonにして実行してみました。

こちらも下記GitHubに置いています

 https://github.com/iotengineer22/AMD-Pervasive-AI-Developer-Contest/blob/main/jupyter_notebooks/pynq-dpu/app_yolov3_tf2_mymodel-name-test.py

 

実行したコマンドの履歴は下記です。

 

オレンジのボールを物体検出したところ、周りの机も検出していることが分かります。

 

Coco2017のリストの49_orangeとして検出されています。

※txtファイルの番号は0ではなく1から数えているので、順番が一つずれています。

 

まとめ

KR260でDPU-PYNQを使って物体検出をしてみました。

.ipynbファイル、また.pyファイルからも実行できました。

 

今回のKR260で実施した内容は、下記記事で紹介したテストの一部です。

AMD(Xilinx)のFPGAコンテストに参加した感想

AMD(Xilinx)のFPGAコンテストに参加した感想
AMD(Xilinx)とHackster(Avnet)が合同主催する、海外のコンテストに参加していました。AMD Pervasive AI Developer Contest の「Robotics AI」部門です。KR260というFPGAボ...

 

コメント