Armadilloフォーラム

Armadillo-loT G4を用いてのYOLOv5又はv3を扱う為の必要事項について

yuki.shigefuji

2023年1月31日 17時25分

お世話になります。

現在Armadillo-loT G4で物体検出にYOLOを用いてUSBカメラによるリアルタイム検出を行う機能の開発を企画しております。

しかしながら前例をほとんど見受けられず、uint8への変換が必要でありNPUを検出し適用させる必要があるという程度の認識しか得られておりません。

前例やソース、又は似た環境で開発を行った記録、共有されている方等はございませんでしょうか。何卒宜しくお願い致します。

コメント

at_akihito.irie

2023年1月31日 19時18分

入江です。

Armadillo-IoT ゲートウェイ G4では、armadillo-demo-experience
というデモアプリケーションをインストールして実行できます。
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…

デモの中にはNPUを利用した機械学習アプリケーションがソースコード付き
で含まれています。
その中のscrew detection demoでは、YOLOv5を使用してネジの物体検出
を行なっています。
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…

ネジ検出が動作している動画も、アットマークテクノの公式YouTubeチャン
ネルにアップロードしています。
https://youtu.be/bnQl_Vz5ApA?t=66

また、上記ネジ検出デモの推論モデルを作成した際に、Google Colaboratory
にて実行したjupyter noteを添付いたします。
(フォーラムのシステムの都合上拡張子がリネームされています。)
ファイルパスなど、私が実行した環境に依存するものもあるためそのままでは
動作しませんが、大体の手順の参考程度にはなると思います。

不明な点がございましたら改めてご質問ください。

ファイル ファイルの説明
YOLOv5_for_G4.ipynb_.txt

yuki.shigefuji

2023年2月1日 15時09分

お世話になっております。

返答ありがとうございます。
demofileでの確認をしたところいくつかお聞きしたいところがございます。
screw_detection.pyを手動で試したところyolov5のdetect.py起動時にオプションとして存在する重みファイル、conf、sourceの選択が確認できませんでした。
これらはscrew_detection.py内部ですべて指定しているのでしょうか。又videocaptureの出力方法などscrew_detectionディレクトリ内の実行ファイルの中身を確認したいのですがarmadilloでのpythonファイルの編集、閲覧は可能でしょうか。可能であれば方法もご教授いただければと思います。

お手数おかけいたしますがご確認よろしくお願いいたします。

> 入江です。
>
> Armadillo-IoT ゲートウェイ G4では、armadillo-demo-experience
> というデモアプリケーションをインストールして実行できます。
> https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
>
> デモの中にはNPUを利用した機械学習アプリケーションがソースコード付き
> で含まれています。
> その中のscrew detection demoでは、YOLOv5を使用してネジの物体検出
> を行なっています。
> https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
>
> ネジ検出が動作している動画も、アットマークテクノの公式YouTubeチャン
> ネルにアップロードしています。
> https://youtu.be/bnQl_Vz5ApA?t=66
>
> また、上記ネジ検出デモの推論モデルを作成した際に、Google Colaboratory
> にて実行したjupyter noteを添付いたします。
> (フォーラムのシステムの都合上拡張子がリネームされています。)
> ファイルパスなど、私が実行した環境に依存するものもあるためそのままでは
> 動作しませんが、大体の手順の参考程度にはなると思います。
>
> 不明な点がございましたら改めてご質問ください。
>

yuki.shigefuji

2023年2月1日 17時18分

お世話になっております。

.pyファイルの確認はこちらで出来るようになったため先ほどの問題は無事解決いたしました。

しかし構成を確認しているのですが学習ファイルを参照する際.pt形式からuint8の.tfliteファイルへと変換を行っていると思うのですが、
どこで行っているかを発見できておりません。
jupyter noteも拝見いたしましたが当方がそちらの環境を使い慣れていないため読み解く点で難航しております。
可能であれば学習ファイルの変換のためにpathを参照している場所を教えていただけたらと思います。

以上お手数ですがご確認よろしくお願いいたします。

> > 入江です。
> >
> > Armadillo-IoT ゲートウェイ G4では、armadillo-demo-experience
> > というデモアプリケーションをインストールして実行できます。
> > https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
> >
> > デモの中にはNPUを利用した機械学習アプリケーションがソースコード付き
> > で含まれています。
> > その中のscrew detection demoでは、YOLOv5を使用してネジの物体検出
> > を行なっています。
> > https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
> >
> > ネジ検出が動作している動画も、アットマークテクノの公式YouTubeチャン
> > ネルにアップロードしています。
> > https://youtu.be/bnQl_Vz5ApA?t=66
> >
> > また、上記ネジ検出デモの推論モデルを作成した際に、Google Colaboratory
> > にて実行したjupyter noteを添付いたします。
> > (フォーラムのシステムの都合上拡張子がリネームされています。)
> > ファイルパスなど、私が実行した環境に依存するものもあるためそのままでは
> > 動作しませんが、大体の手順の参考程度にはなると思います。
> >
> > 不明な点がございましたら改めてご質問ください。
> >

at_akihito.irie

2023年2月1日 17時57分

入江です。

まずご存知でしたら読み飛ばしていいのですが、一応誤解の無いように改めてお伝えしますと、
Armadillo上で「推論」は出来ますが、「学習」はできないです。

なので、
学習とモデル変換→PCやクラウド上で行なう(添付のjupyter note)
推論→Armadillo上で行なう(demo内のPythonスクリプト)
となっています。
この点にご注意ください。

> しかし構成を確認しているのですが学習ファイルを参照する際.pt形式からuint8の.tfliteファイルへと変換を行っていると思うのですが、
> どこで行っているかを発見できておりません。

jupyter noteは、Google Colaboratory や JupyterLabなどの、jupyter notebook
形式を読める環境で読み込んでいただくと読めると思います。

jupyter noteが読めるならばそちらを見ていただくのが一番早いのですが、
簡単に説明しますと、uint8 tfliteへの変換は以下の流れで行なっています。

pt -> savedmodel -> tflite(uint8 quantized)

pt -> savedmodelは、YOLOv5に含まれるexport.pyによって変換を行なっています。
https://github.com/ultralytics/yolov5/blob/master/export.py

savedmodel -> tfliteは、TensorflowのTFliteConverterでPost-training quantizationを行なっています。
https://www.tensorflow.org/lite/performance/post_training_quantization?…

今改めて見ると、export.pyでuint8 tfliteに直接できそうではありますが、私は上記の手順を踏みました。

yuki.shigefuji

2023年2月7日 9時45分

いつもお世話になっております。

tfliteに変換を行ったところ問題なく動作することを確認いたしました。
ありがとうございます。

一つ質問なのですが、.pt形式から.tflite形式に変換したことによって認識率などへの影響はどのくらいあるのでしょうか。
調査しておりましたらご教授いただければ幸いです。

> 入江です。
>
> まずご存知でしたら読み飛ばしていいのですが、一応誤解の無いように改めてお伝えしますと、
> Armadillo上で「推論」は出来ますが、「学習」はできないです。
>
> なので、
> 学習とモデル変換→PCやクラウド上で行なう(添付のjupyter note)
> 推論→Armadillo上で行なう(demo内のPythonスクリプト)
> となっています。
> この点にご注意ください。
>
> > しかし構成を確認しているのですが学習ファイルを参照する際.pt形式からuint8の.tfliteファイルへと変換を行っていると思うのですが、
> > どこで行っているかを発見できておりません。
>
> jupyter noteは、Google Colaboratory や JupyterLabなどの、jupyter notebook
> 形式を読める環境で読み込んでいただくと読めると思います。
>
> jupyter noteが読めるならばそちらを見ていただくのが一番早いのですが、
> 簡単に説明しますと、uint8 tfliteへの変換は以下の流れで行なっています。
>
>

> pt -> savedmodel -> tflite(uint8 quantized)
> 

>
> pt -> savedmodelは、YOLOv5に含まれるexport.pyによって変換を行なっています。
> https://github.com/ultralytics/yolov5/blob/master/export.py
>
> savedmodel -> tfliteは、TensorflowのTFliteConverterでPost-training quantizationを行なっています。
> https://www.tensorflow.org/lite/performance/post_training_quantization?…
>
> 今改めて見ると、export.pyでuint8 tfliteに直接できそうではありますが、私は上記の手順を踏みました。

at_akihito.irie

2023年2月7日 10時33分

入江です。

> 一つ質問なのですが、.pt形式から.tflite形式に変換したことによって認識率などへの影響はどのくらいあるのでしょうか。
> 調査しておりましたらご教授いただければ幸いです。

申し訳ございませんが、変換前後の認識率の違いのデータについてご紹介できる情報はございません。

実際に量子化したモデルをご使用の際には、お客様の方で認識の精度をよくご確認の上ご使用いただけばと思います。

以上、よろしくお願いいたします。