« ICCE BERLIN 2019にてLUT-Network発表 | トップページ | LUT-NetのFPGAリソースについて »

2019年9月 2日 (月)

MNIST認識のリアルタイム動作環境更新

先日MNIST環境強化したのですがTwitterに書き込んでそのままだったので今更ながら更新しておきます。

今回は

  • Data Augmentation により、若干のスケール/回転/併進/ネガポジ耐性を付与
  • 数字部分かを判定する2クラス分類器を追加し、判定できない箇所の判定を抑制
  • LPF(ローパスフィルタ)として、1-TAPのIIRを追加(exponential smoothingが可能)

の3点が変更点となります。

 

Mnist_ar

 

これがシミュレーションの結果です。上半分が入力データで、下半分が検出結果を重畳したものです。

色は抵抗のカラーコードでして

黒:0 茶:1 赤:2 橙:3 黄:4 緑:5 青:6 紫:7 灰:8 白:9 となっています。

Sim_result

 

合成後の回路規模です。システム全体の規模となります。

Fpga_result

こんな感じでモノクロ反転した文字も認識しています。

おかげで、手で書いた文字もまあまあ行けました。

 Photo_20190902215501

 

ローパスフィルタは下の図のような感じです。入力と出力の間には遅延素子はなく、あくまで過去のデータも加えて結果を作るというだけで、本質的な点でリアルタイムが可能なデータパスであることが重要です。

なお、1000fps駆動なのでフレーム間の連続性も高く、過去の結果も活用することで認識精度の向上が可能です。

ただし画像の場合は音声などの1次元のデータと異なり、1タップのフィルタを組むのに画像1フレーム分のメモリが必要なところが課題です。

Iir

で、シミュレーションだと、数%程度認識率が上がるのですが、90%越えたあたりで数%変わっても見た目は良くわからないですね。

Lpf

この実物が見たい方は是非ICCE BERLIN 2019にお越しください(私は行けませんが)。

 

なお、現在はさらにDVI出力も付与しております。

Dsc_1204

 

余談ですが、認識結果ではなく画像の方にLPFを掛けると1000fpsの画像を60fpsのモニタに出すときに美しく出来ます。

OLEDなどの1000fpsの表示装置だと人間の目がLPFの役目を果たしてくれるのですが、LCDモニタの場合、そのまま間引いて表示すると露光時間不足でザラザラになってしまうので。

Lpf_dvi

ただしこれもメモリを消費するので、使い方は限定的ですね。

 

ちなみに今、これらの学習を行う BinaryBrain の Python 対応を developブランチで進めております。

まだまだ掛かりそうですが、頑張ります。

 

<追記 2019/09/06>

そういえば最新のリソース状況とかUPできていなかったので追加しておきます。

あくまで合成まで確認できているネットの中での認識率です。ソフトのみの実験とかだともう少しいけてます。

Lutnetwork_resource

« ICCE BERLIN 2019にてLUT-Network発表 | トップページ | LUT-NetのFPGAリソースについて »

FPGA」カテゴリの記事

Deep Learning」カテゴリの記事

コメント

この記事へのコメントは終了しました。