TensorFlow on Raspberry Pi3

# 参考資料
RaspberyPi用のtensorlow。要RasPi3
https://github.com/samjabrahams/tensorflow-on-raspberry-pi

KaresとOpenJtalkを使うやりかた
http://qiita.com/PonDad/items/9fbdf4d694f825dd1b6e

Tensorflowをビルドしてカメラ画像の認識
http://qiita.com/kei_bility/items/1832ad495c0a88bde9c3

# 試してみる
- Raspbian Jessi 2017-04
- RaspberryPi3
- Python3
- Webインターフェース



## 19:00- 環境を最新に

```sh

sudo apt-get update; sudo apt-get upgrade
```

## 19:10- 関連のインストール

```sh

sudo apt-get install python3-pip python3-dev
sudo apt-get install git
sudo apt-get install vim apache2
```

# Keras 使う場合

## 19:15- 必要なpythonのライブラリ


```sh

sudo apt-get install python3-scipy python3-h5py libyaml-dev
```


## 19:30- KerasとかTensorFlowとか

```sh

 sudo pip3 install keras
 wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/releases/download/v1.1.0/tensorflow-1.1.0-cp34-cp34m-linux_armv7l.whl
```

## 20:10- pipの操作

```sh

sudo pip3 install tensorflow-1.1.0-cp34-cp34m-linux_armv7l.whl
```

mockはアンインストールしてインストールし直す

```sh
sudo pip3 uninstall mock
Cannot uninstall requirement mock, not installed
Storing debug log for failure in /root/.pip/pip.log

 sudo pip3 install mock
```
# 学習モデルをつくる


## ダウンロード

```sh

git clone https://github.com/fchollet/deep-learning-models


```

```console

$ cd deep-learning-models
[deep-learning-models/raspberrypi 20:22:03] $ ls
LICENSE    audio_conv_utils.py  inception_v3.py       resnet50.py  vgg19.py
README.md  imagenet_utils.py    music_tagger_crnn.py  vgg16.py     xception.py
```
象の写真をダウンロード


```console

[deep-learning-models/raspberrypi 20:22:18] $ wget https://qiita-image-store.s3.amazonaws.com/0/47128/27d61878-4275-1ef4-c580-28df98e8bd91.jpeg
--2017-06-03 20:22:43--  https://qiita-image-store.s3.amazonaws.com/0/47128/27d61878-4275-1ef4-c580-28df98e8bd91.jpeg
qiita-image-store.s3.amazonaws.com (qiita-image-store.s3.amazonaws.com) をDNSに問いあわせています... 52.219.68.45
qiita-image-store.s3.amazonaws.com (qiita-image-store.s3.amazonaws.com)|52.219.68.45|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 3226734 (3.1M) [image/jpeg]
`27d61878-4275-1ef4-c580-28df98e8bd91.jpeg' に保存中

27d61878-4275-1ef4- 100%[=====================>]   3.08M  1.07MB/s 時間 2.9s

2017-06-03 20:22:46 (1.07 MB/s) - `27d61878-4275-1ef4-c580-28df98e8bd91.jpeg' へ保存完了 [3226734/3226734]

[deep-learning-models/raspberrypi 20:22:46] $ ls
27d61878-4275-1ef4-c580-28df98e8bd91.jpeg  imagenet_utils.py     vgg16.py
LICENSE                                    inception_v3.py       vgg19.py
README.md                                  music_tagger_crnn.py  xception.py
audio_conv_utils.py                        resnet50.py
[deep-learning-models/raspberrypi 20:22:50] $ mv 27d61878-4275-1ef4-c580-28df98e8bd91.jpeg elephant.jpg
[deep-learning-models/raspberrypi 20:22:58] $ ls
LICENSE              elephant.jpg       music_tagger_crnn.py  vgg19.py
README.md            imagenet_utils.py  resnet50.py           xception.py
audio_conv_utils.py  inception_v3.py    vgg16.py

```

# 実行してみる

象の写真を読ましています

```console


[deep-learning-models/raspberrypi 20:23:16] $ python3 inception_v3.py
Using TensorFlow backend.
Downloading data from https://github.com/fchollet/deep-learning-models/releases/download/v0.5/inception_v3_weights_tf_dim_ordering_tf_kernels.h5
Downloading data from https://s3.amazonaws.com/deep-learning-models/image-models/imagenet_class_index.json
Predicted: [[('n01871265', 'tusker', 0.63436967), ('n02504458', 'African_elephant', 0.2854473), ('n02504013', 'Indian_elephant', 0.033294968), ('n03000134', 'chainlink_fence', 0.00040027319), ('n03980874', 'poncho', 0.0002730588)]]
[deep-learning-models/raspberrypi 20:27:44] $


```

うまくいきました



```console

[deep-learning-models/raspberrypi 21:08:48] $ ls
LICENSE              elephant.jpg       music_tagger_crnn.py  vgg19.py
README.md            imagenet_utils.py  resnet50.py           xception.py
audio_conv_utils.py  inception_v3.py    vgg16.py

```

# 別の写真も試してみる

```console

[deep-learning-models/raspberrypi 21:15:27] $ wget https://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Elephas_maximus_%28Bandipur%29.jpg/1024px-Elephas_maximus_%28Bandipur%29.jpg
--2017-06-03 21:15:59--  https://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Elephas_maximus_%28Bandipur%29.jpg/1024px-Elephas_maximus_%28Bandipur%29.jpg
upload.wikimedia.org (upload.wikimedia.org) をDNSに問いあわせています... 198.35.26.112, 2620:0:863:ed1a::2:b
upload.wikimedia.org (upload.wikimedia.org)|198.35.26.112|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 269462 (263K) [image/jpeg]
`1024px-Elephas_maximus_(Bandipur).jpg' に保存中

1024px-Elephas_maxi 100%[=====================>] 263.15K   283KB/s 時間 0.9s

2017-06-03 21:16:01 (283 KB/s) - `1024px-Elephas_maximus_(Bandipur).jpg' へ保存完了 [269462/269462]

[deep-learning-models/raspberrypi 21:16:01] $ mv 1024px-Elephas_maximus_\(Bandipur\).jpg elephant2.jpg
[deep-learning-models/raspberrypi 21:16:08] $ cp elephant2.jpg elephant.jpg     [deep-learning-models/raspberrypi 21:16:18] $ python3 inception_v3.py           Using TensorFlow backend.
Predicted: [[('n01871265', 'tusker', 0.862279), ('n02504458', 'African_elephant', 0.08213596), ('n02504013', 'Indian_elephant', 0.018105704), ('n03075370', 'combination_lock', 0.00025089187), ('n03874599', 'padlock', 0.00019190098)]]
[deep-learning-models/raspberrypi 21:19:22] $ python3 inception_v3.py
Using TensorFlow backend.
Predicted: [[('n01871265', 'tusker', 0.862279), ('n02504458', 'African_elephant', 0.08213596), ('n02504013', 'Indian_elephant', 0.018105704), ('n03075370', 'combination_lock', 0.00025089187), ('n03874599', 'padlock', 0.00019190098)]]

```

# 手を加えてみる

学習済みモデルはどこにあるのかな

```console

[deep-learning-models/raspberrypi 21:22:51] $  find . -name imagenet_class_index.json
[deep-learning-models/raspberrypi 21:23:12] $ find . -name *.h5
[deep-learning-models/raspberrypi 21:23:30] $ ls
LICENSE              elephant1.jpg      music_tagger_crnn.py  xception.py
README.md            elephant2.jpg      resnet50.py
audio_conv_utils.py  imagenet_utils.py  vgg16.py
elephant.jpg         inception_v3.py    vgg19.py
[deep-learning-models/raspberrypi 21:23:34] $ du --max-depth=1 -h
592K    ./.git
4.3M    .
[deep-learning-models/raspberrypi 21:23:47] $ ls -alh
合計 3.7M
drwxr-xr-x 3 pi pi 4.0K  6月  3 21:16 .
drwxr-xr-x 5 pi pi 4.0K  6月  3 20:23 ..
drwxr-xr-x 8 pi pi 4.0K  6月  3 20:21 .git
-rw-r--r-- 1 pi pi 1.1K  6月  3 20:21 LICENSE
-rw-r--r-- 1 pi pi 3.7K  6月  3 20:21 README.md
-rw-r--r-- 1 pi pi 2.8K  6月  3 20:21 audio_conv_utils.py
-rw-r--r-- 1 pi pi 264K  6月  3 21:16 elephant.jpg
-rw-r--r-- 1 pi pi 3.1M  1月  2 01:06 elephant1.jpg
-rw-r--r-- 1 pi pi 264K 10月 30  2013 elephant2.jpg
-rw-r--r-- 1 pi pi 1.6K  6月  3 20:21 imagenet_utils.py
-rw-r--r-- 1 pi pi  15K  6月  3 20:21 inception_v3.py
-rw-r--r-- 1 pi pi 5.8K  6月  3 20:21 music_tagger_crnn.py
-rw-r--r-- 1 pi pi  12K  6月  3 20:21 resnet50.py
-rw-r--r-- 1 pi pi 8.6K  6月  3 20:21 vgg16.py
-rw-r--r-- 1 pi pi 8.8K  6月  3 20:21 vgg19.py
-rw-r--r-- 1 pi pi  12K  6月  3 20:21 xception.py
[deep-learning-models/raspberrypi 21:23:59] $ cd ..
[~/raspberrypi 21:24:08] $ pwd
/home/pi
[~/raspberrypi 21:24:10] $ du --max-depth=1 -h
92M     ./.keras
4.3M    ./deep-learning-models
281M    ./tensorflow-on-raspberry-pi
432M    .
[~/raspberrypi 21:24:14] $ ls
deep-learning-models
tensorflow-1.1.0-cp27-none-linux_armv7l.whl
tensorflow-1.1.0-cp34-cp34m-linux_armv7l.whl
tensorflow-on-raspberry-pi
[~/raspberrypi 21:24:21] $ cd .keras
[.keras/raspberrypi 21:24:28] $ ls
keras.json  models
[.keras/raspberrypi 21:24:29] $ find . -name *.h5
./models/inception_v3_weights_tf_dim_ordering_tf_kernels.h5
[.keras/raspberrypi 21:24:38] $ ls models
imagenet_class_index.json  inception_v3_weights_tf_dim_ordering_tf_kernels.h5
[.keras/raspberrypi 21:25:09] $ ls -alh models
合計 92M
drwxr-xr-x 2 pi pi 4.0K  6月  3 20:27 .
drwxr-xr-x 3 pi pi 4.0K  6月  3 20:25 ..
-rw-r--r-- 1 pi pi  35K  6月  3 20:27 imagenet_class_index.json
-rw-r--r-- 1 pi pi  92M  6月  3 20:26 inception_v3_weights_tf_dim_ordering_tf_kernels.h5

```

これか。
さて、元のディレクトリに戻って書き換えてみる

```console

[deep-learning-models/raspberrypi 21:26:18] $ cp inception_v3.py inception_v3_p.py

```

あれこれ手を加えて

```console
[deep-learning-models/raspberrypi 22:34:23] $ python3 inception_v3_p.py
2017-06-03 22:34:46.486806 python module importing..
Using TensorFlow backend.
2017-06-03 22:35:01.378615  model making...
>> https://upload.wikimedia.org/wikipedia/commons/f/f9/Zoorashia_elephant.jpg
d: 2017-06-03 22:37:10.923091
Predicted: [[('n02504013', 'Indian_elephant', 0.88748741), ('n02504458', 'African_elephant', 0.013440695), ('n01871265', 'tusker', 0.009208966), ('n02398521', 'hippopotamus', 0.0010945746), ('n02134084', 'ice_bear', 0.00081141439)]]
>> https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Blue_tang_surgeonfish.jpg/1280px-Blue_tang_surgeonfish.jpg
d: 2017-06-03 22:38:18.114109
Predicted: [[('n09256479', 'coral_reef', 0.90472144), ('n10565667', 'scuba_diver', 0.013638749), ('n04296562', 'stage', 0.0080893962), ('n02488291', 'langur', 0.0036474653), ('n04251144', 'snorkel', 0.0025966684)]]
>> ^CTraceback (most recent call last):
  File "inception_v3_p.py", line 410, in <module>
    url_path = input('>> ')
KeyboardInterrupt
^C
[deep-learning-models/raspberrypi 22:39:12] $ ^C
[deep-learning-models/raspberrypi 22:39:12] $ vim inception_v3_p.py

```



## 喋らせる

```console

[deep-learning-models/raspberrypi 22:45:06] $ sudo apt-get install espeak
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  espeak-data libasyncns0 libespeak1 libflac8 libice6 libjack-jackd2-0 libogg0
  libopus0 libportaudio2 libpulse0 libsm6 libsndfile1 libsonic0 libvorbis0a
  libvorbisenc2 libx11-xcb1 libxi6 libxtst6 x11-common
提案パッケージ:
  jackd2 opus-tools pulseaudio
以下のパッケージが新たにインストールされます:
  espeak espeak-data libasyncns0 libespeak1 libflac8 libice6 libjack-jackd2-0
  libogg0 libopus0 libportaudio2 libpulse0 libsm6 libsndfile1 libsonic0
  libvorbis0a libvorbisenc2 libx11-xcb1 libxi6 libxtst6 x11-common
アップグレード: 0 個、新規インストール: 20 個、削除: 0 個、保留: 0 個。
2,783 kB のアーカイブを取得する必要があります。
この操作後に追加で 6,382 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://archive.raspberrypi.org/debian/ jessie/main x11-common all 1:7.7+16 [251 kB]
取得:2 http://mirrordirector.raspbian.org/raspbian/ jessie/main libasyncns0 armhf 0.8-5 [11.4 kB]

...

espeak (1.48.04+dfsg-1) を設定しています ...
libc-bin (2.19-18+deb8u9) のトリガを処理しています ...
systemd (215-17+deb8u7) のトリガを処理しています ...

```


```console

[deep-learning-models/raspberrypi 22:45:57] $ espeak test
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround40
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
```

喋らない


```console

[deep-learning-models/raspberrypi 22:46:02] $ amixer
Simple mixer control 'PCM',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined
  Playback channels: Mono
  Limits: Playback -10239 - 400
  Mono: Playback -2000 [77%] [-20.00dB] [on]
[deep-learning-models/raspberrypi 22:46:16] $ amixer cset numid=3 1
numid=3,iface=MIXER,name='PCM Playback Route'
  ; type=INTEGER,access=rw------,values=1,min=0,max=2,step=0
  : values=1
```


```console

[deep-learning-models/raspberrypi 22:47:21] $ espeak test
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround40
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
```

聞こえない

```console

[deep-learning-models/raspberrypi 22:47:27] $ alsamixer

```
ボリューム100%にして

```console

[deep-learning-models/raspberrypi 22:47:39] $ espeak test
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround40
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
[deep-learning-models/raspberrypi 22:47:42] $ espeak test
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround40
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started

```

聞こえた

連動させる

```console

[deep-learning-models/raspberrypi 22:54:49] $ vim inception_v3_p.py
[deep-learning-models/raspberrypi 22:55:30] $ python3 inception_v3_p.py
2017-06-03 22:55:33.585649 python module importing..
Using TensorFlow backend.
2017-06-03 22:55:48.815163  model making...
>> https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Le_carrelet_sur_ponton_%C3%A0_la_Pointe_du_Chay_Nord_%281%29.JPG/800px-Le_carrelet_sur_ponton_%C3%A0_la_Pointe_du_Chay_Nord_%281%29.JPG
d: 2017-06-03 22:58:07.282015
This is  drilling_platform
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround40
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
>> 
```
結果、作ったもの。

```py

# diff inception_v3.py inception_v3_p.py 
17a18,24
> import datetime
> import urllib.request
> import subprocess
> 
> d = datetime.datetime.today()
> print(d,'python module importing..')
> 
398a406,407
>     d = datetime.datetime.today()
>     print(d,' model making...')
401,409c410,423
<     img_path = 'elephant.jpg'
<     img = image.load_img(img_path, target_size=(299, 299))
<     x = image.img_to_array(img)
<     x = np.expand_dims(x, axis=0)
< 
<     x = preprocess_input(x)
< 
<     preds = model.predict(x)
<     print('Predicted:', decode_predictions(preds))
---
>     while 1:
>       url_path = input('>> ')
>       urllib.request.urlretrieve(url_path, 'check.jpg')
>       img_path = ('check.jpg')
> 
>       img = image.load_img(img_path, target_size=(299, 299))
>       x = image.img_to_array(img)
>       x = np.expand_dims(x, axis=0)
>       x = preprocess_input(x)
>       preds = model.predict(x)
>       recognize = decode_predictions(preds)
>       identification = recognize[0][0][1]
>       print('This is ', identification)
>       subprocess.check_output(["espeak","-k5","-s150",identification])

```

主な変更点

- 準備処理の時間をわかりやすくするために、時刻表示をつけている
- 準備が終わると入力待ちになり、URLを入力するとダウンロードして処理する
- 最有力候補のみ表示するように変更
- 最有力候補を音声出力
- １回処理しても終わらず次の入力を待つ