36
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Sipeed M1でTiny YOLOv2の20クラス検出器デモを動かすまで

Last updated at Posted at 2019-04-27

概要

SiPEED M1という、エッジコンピューティング向けの開発ボードがseeed studioで安かったので買ってみた。(購入ページ)
とりあえず既存のモデル(Tiny YOLOv2の顔認識)を動かせたので備忘録。
(開発スピードが速そうなので、すぐ陳腐化するだろう。)

ハードウェア

KENDRYTEというメーカーのK210というコアらしい。デュアルコアのRISC-Vプロセッサと、KPUと呼ばれているCNN用のアクセラレータが載ったチップ。
0.25TOPS @0.3W, 400MHzらしい。
付属していたTypeC→MicroBアダプタ経由でUSBポートにつなぐと、USBシリアルとして認識するとともに電源供給もできた。

開発環境

ダウンロード

githubのリリースページから開発環境MaixPy IDE v0.1.0とフラッシュに焼くファイル(face_model_at_0x300000.kfpkg, maixpy_v0.3.0_full.bin)を入手。
デバイス上にスクリプトをアップロード/ダウンロードするツールuPyLoaderもダウンロードしておく。

Flash焼き込み

公式ドキュメントのUpgrade Firmwareの章の通りにファームを焼く。今回はWindows環境から焼いたので、K-Flashを用いた。
0.2.4では顔認識モデルとSDKが両方入ったバイナリがリリースされていたが、0.3.0は別々だった。最初0.2.4で試していて、SDKだけバージョンアップしたためにハマってしまった。
K-Flashでmaixpy_v0.3.0_full.binを焼いたあと、連続してface_model_at_0x300000.kfpkgを焼けば別々の領域に配置してくれるようだった。
フラッシュを焼き終わるとターミナルが起動するが、後述のIDEのほうが使いやすいのでそのまま閉じる。

MaixPy IDE

上記MaixPy IDEのインストーラでインストールすると、OpenMV IDEという名前でインストールされた。
OpenMV.png
「ツール」->「ターミナルを開く」から新ターミナルまたは以前接続したシリアルポート名を選択すると、ターミナルが開く。
他のボードだと画像プレビューもできるのか!というリッチなターミナル画面。
OpenMV_SerialPort.png
サンプルが実行され、カメラの映像が液晶に表示された。

uPyLoader

uPyLoaderデバイス上のスクリプトファイル操作ツールらしい。
image.png
シリアルポート指定して接続すると、ローカルからのスクリプトファイルのアップロードが楽。OpenMV IDEのシリアルポートと同じポートを使うので、排他なので注意。
Remote側に見えているboot.pyを書き換えておくと、次回ブート時に自動実行されるようになる。OpenMV IDEのデモスクリプトで置き換えると、起動直後にカメラ画像が表示されるようになった。

(4/27追記)
Micro SDカードを刺しておくと、内蔵フラッシュを使わずにSDカードを使用するようになり、boot.pyもSDカードのものを使用するようになる。シリアル経由だとPCとのデータのやり取りが遅いので、SDカードは刺しておくと便利。

KPUのテスト

IDEのサンプルでは肝心のKPUを使用しないので、顔認識デモを焼いてみた。
難なく動作できたし、非常に速い。
https://www.youtube.com/watch?v=wIkQ6JHkOt4

その他のモデルについて

Maix Toolboxで他のTensorFlow Liteのモデルをkmodelに変換できるようなので、Edge TPUのモデルなどを変換してみたが、使用できるレイヤにいろいろと制限があるようでまだうまくいっていない。
そのへんの条件のドキュメントはどこにあるんだろう。
→ KPU用にモデルの変換を行うnncaseのgitにSupported layersの記述があった。

(4/27追記)
SiPEEDのBBSにいろいろなサンプルが上がっていた。

20クラス検出器の動作 (4/28追記)

20クラス検出のデモも動いた。
当初メモリ容量が足りないとのエラーが出たので、task = kpu.load("/sd/20class.kmodel")としてSDからモデルを読むようにした。このロードには数十秒時間がかかるので注意。
再度やったら普通に動いた。モデルもロードもSDカード使わなければ一瞬だった。
上記BBSの投稿から、maixpy_20class.zipをダウンロード・展開し、K-Flashで20class.kfpkgを焼く。
BBSのコードに処理時間の計測を追加して、無事動作した。
https://youtu.be/MjHON3F0mUs

36
34
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?