MNIST認識のリアルタイム動作環境更新
先日MNIST環境強化したのですがTwitterに書き込んでそのままだったので今更ながら更新しておきます。
今回は
- Data Augmentation により、若干のスケール/回転/併進/ネガポジ耐性を付与
- 数字部分かを判定する2クラス分類器を追加し、判定できない箇所の判定を抑制
- LPF(ローパスフィルタ)として、1-TAPのIIRを追加(exponential smoothingが可能)
の3点が変更点となります。
これがシミュレーションの結果です。上半分が入力データで、下半分が検出結果を重畳したものです。
色は抵抗のカラーコードでして
黒:0 茶:1 赤:2 橙:3 黄:4 緑:5 青:6 紫:7 灰:8 白:9 となっています。
合成後の回路規模です。システム全体の規模となります。
こんな感じでモノクロ反転した文字も認識しています。
おかげで、手で書いた文字もまあまあ行けました。
ローパスフィルタは下の図のような感じです。入力と出力の間には遅延素子はなく、あくまで過去のデータも加えて結果を作るというだけで、本質的な点でリアルタイムが可能なデータパスであることが重要です。
なお、1000fps駆動なのでフレーム間の連続性も高く、過去の結果も活用することで認識精度の向上が可能です。
ただし画像の場合は音声などの1次元のデータと異なり、1タップのフィルタを組むのに画像1フレーム分のメモリが必要なところが課題です。
で、シミュレーションだと、数%程度認識率が上がるのですが、90%越えたあたりで数%変わっても見た目は良くわからないですね。
この実物が見たい方は是非ICCE BERLIN 2019にお越しください(私は行けませんが)。
なお、現在はさらにDVI出力も付与しております。
余談ですが、認識結果ではなく画像の方にLPFを掛けると1000fpsの画像を60fpsのモニタに出すときに美しく出来ます。
OLEDなどの1000fpsの表示装置だと人間の目がLPFの役目を果たしてくれるのですが、LCDモニタの場合、そのまま間引いて表示すると露光時間不足でザラザラになってしまうので。
ただしこれもメモリを消費するので、使い方は限定的ですね。
ちなみに今、これらの学習を行う BinaryBrain の Python 対応を developブランチで進めております。
まだまだ掛かりそうですが、頑張ります。
<追記 2019/09/06>
そういえば最新のリソース状況とかUPできていなかったので追加しておきます。
あくまで合成まで確認できているネットの中での認識率です。ソフトのみの実験とかだともう少しいけてます。
« ICCE BERLIN 2019にてLUT-Network発表 | トップページ | LUT-NetのFPGAリソースについて »
「FPGA」カテゴリの記事
- LUT-Networkの蒸留とMobileNet風構成とセマンティックセグメンテーション(2020.03.09)
- LUT-Networkの蒸留(Distillation)について(2019.12.29)
- FPGAでのDNN(Deep Neural Network)の整理(LUT-Netまとめ)(2019.12.15)
- LUT-NetのFPGAリソースについて(2019.12.08)
- MNIST認識のリアルタイム動作環境更新(2019.09.02)
「Deep Learning」カテゴリの記事
- Deep Learning の開発フロー(2020.03.23)
- LUT-Networkの蒸留とMobileNet風構成とセマンティックセグメンテーション(2020.03.09)
- LUT-Networkの蒸留(Distillation)について(2019.12.29)
- FPGAでのDNN(Deep Neural Network)の整理(LUT-Netまとめ)(2019.12.15)
- LUT-NetのFPGAリソースについて(2019.12.08)
この記事へのコメントは終了しました。
コメント