Help us understand the problem. What is going on with this article?

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

概要

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away