こんにちは,けいです.
今回はM5stickVで畳み込みニューラルネットワークを演算する方法について解説します.
今回の話は,今までの応用となるので,まだ以前の記事を読んでいない方はぜひ読んでみてください.
今回作るものは,畳み込みニューラルネットワークで顔認識を行い,もし,デバイスのカメラにひょっこり顔が現れたら,「はい,ひょっこりはん!」というシステムを作ることです.
これで,飲み会のむちゃぶり一発芸も乗り切ることができますね(笑)
目次
コード解説
コード
SDカード内に以下のファイルを作成してください.
上のリンクのboot.py
初めのロゴのpicture3.jpg
ロゴの後の起動音logo.wav
ひょっこりはん!というためのhyokkori.wav
jpgファイルやwavファイルの注意点や作り方は以前の記事で説明したので,それを参考にしてください.
KPUモジュール
M5stickV上で畳み込みニューラルネットワークを行うためには,KPUモジュールを用います.
KPUモジュールに入っているYOLO2を使います。
yoloは高速で計算することができるモデルなので、M5stickVでもリアルタイムで動作させることができます。
import KPU as kpu
task = kpu.load(offset or file_path)
anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)
kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
上の文はyolo2の初期化を行っています。
kpu.load関数で引数に渡したモデルをロードします。
デフォルトの顔認証はフラッシュ内の 0xd00000 を渡します。
kpu.run_yolo2(task, img)
この関数で、畳み込み演算を実行します。
taskにはネットワークオブジェクト、imgには画像オブジェクトを入れます。
返り値は、モデルを見つけたら、Trueを返すようです。
まだ、やっていないのですが、kpuモジュールは画像オブジェクトしか計算できないのですが、データを画像オブジェクトに成形して、色々な学習ができそうです。
参考にさせて頂いたサイト
まとめ
最後までみて下さって、ありがとうございました。
下の記事にモジュールの解説をまとめてあるので、ぜひ読んでみて下さい。
コメントを残す