Edited at

Sipeed M1 dock suit (Dan Dock) で手書き数字認識(mnist)を動かそうとしたら動かなかった話

基本的に下記ブログの記事に記載されている通りの手順を踏めばできます。

・・・と思ってたのですがいろいろ躓いて無限に時間を溶かした挙句なんか無理っぽかったのでその手順を残します

Ubuntu 18.04って書いてるのに16.04で無理やりやろうとしたのがアカンかったんやろうなあ・・・

(30分でできるらしいです、僕は無理でした)

http://blog.sipeed.com/p/518.html#


モデルを用意する


mnistの学習をする

学習ツール的なものも全部Sipeedさんが用意してくれているので、モデル生成までさくっとできます

(じゃあ学習ツールではなくモデルを配布したほうが・・・?とか思うのは僕だけでしょうか)

ツールにはtensorflowが必要です。tensorflowのインストールにはpython3とpipが必要です。

python3とpipについては前の記事にも書いたのでここでは省略します。

pip3 install tensorflow

ここで、ブログに書いてあるとおりPythonは3.6以上じゃないとこの先tocotflite_convertも動かなくて死にます。僕は死にました。とてもつらい

Ubuntu 16.04でも無理やりPython 3.6をインストールする方法があるので、それに従って3.6をインストールした後にtensorflowをインストールしたらtocoコマンドが動くようになります。めでたい

mnistの学習ツールをダウンロードし、さくっと実行します。

git clone https://github.com/sipeed/Maix-TF-workspace.git

cd Maix-TF-workspace/mnist
python3 mnist.py

実行すると学習が始まります。大体5000ステップくらいで終了し、mnist.pyと同じディレクトリにmnist.pbが生成されます。


モデルを変換する

次に、モデルの変換などを行ってくれるコマンドを集めたMaix_Toolboxをcloneします。

git clone https://github.com/sipeed/Maix_Toolbox.git

ブログ記事には特に書いていないのですが、.tflite.kmodelの変換を行うnncaseを取得してやる必要があります。ので、cloneしたフォルダに移動して中にあるget_nncase.shを実行します。

cd Maix_Toolbox

./get_nncase.sh

Maix_Toolboxフォルダ内にworkspaceフォルダを作成し、その中に先ほど作成したmnist.pbを移します。

その後、コマンドを実行します。以下のように対話的になるので、適切な値をその都度入力します。

($ で始まる行が、ユーザーが入力する必要がある箇所です。実際には$は出ません。)

$ ./pb2tflite.sh workspace/mnist.pb

This script help you generate cmd to convert *.pb to *.tflite

Please put your pb into workspace dir

1. pb file name: (don't include workspace)

$ mnist.pb

2. input_arrays name:

$ inputs

3. output_arrays name:

$ output

4. input width:

$ 28

5. input height:

$ 28

6. input channel:

$ 1

-----------------------------------

The command you need is:

...

この後tocoコマンドが自動実行され、mnist.tfliteファイルが自動生成されます。

あとはこれを.kmodelに変換してぶち込むだけ!さあ変換しよう!

$ ./tflite2kmodel.sh workspace/mnist.tflite

uasge: ./tflite2kmodel.sh xxx.tflite
2019-04-12 03:36:44.146834: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
Fatal: Exception has been thrown by the target of an invocation.

死!現在時刻午前3時36分!明日一限から授業!なんでこんな時間までやった!アホ!死!!


おわりに

最後のエラーがパソコンのせいなのかUbuntu16.04のせいなのかわかんないです・・・・

Tensorflowが関係してるっぽいですが・・・・

早く動かしたい・・・・

とりあえず環境を変えて再挑戦します・・・