おじさん、五歳の娘に「アニアは夜になると動くんだよ」と言ったところ、うちの娘はおじさんが寝ている間にアニアをリビングに移動させ、おじさんが起きた時に「アニアがほんとうに動いてた」と言ってました。五歳児の人をまねる能力って本当にすごいです。おじさんがやろうとしていることを想像して先に自分がやるんですね。
これとくらべると最近話題の機械学習も人間のやることをまねしているだけなんですが、猿まねというか五歳児以下ですね。
おじさん、五歳児に嘘を見破られてくやしいので、頭をよくするために車の自動運転のソフトウェア技術を勉強してみました。
しばらく勝手に車の自動運転の技術について勝手に解説しようと思っています。
車の自動運転では、信号とか歩行者や対向車などを判別しないといけないんですが、まずは歩行者などを判別するところまで。
映像の中から物体を識別するには
1. 物体候補領域抽出
2. 画像認識
という二段階が必要らしいです。
映像の中からなんか人とか物がありそうな領域を抽出して、その領域一つ一つに対して画像認識をして、画像が何かを判別するんですね。
2に関しては前回のブログで比較的最先端なものをやったので今回はパス。
今回は1の部分をやってみたいと思います。
物体候補領域抽出アルゴリズムはBING(Binarized Normed Gradients for Objectness Estimation)とかSelectiveSearchとかいうものがあるそうです。
この部分、結構処理が重たいらしく、いろいろな企業や研究機関で高速物体候補領域
抽出の研究がされているようです。
この辺のライブラリ、Pythonで書かれていることが多いのですが、将来商品に入れることを考えると、PCのフルPythonでしか動かないライブラリを使うのではなくて、やはりC++でやりたいですね。
ということで今回はDlibというライブラリでSelectiveSearchをやってみたいと思います。最新の19.2はVisualStudio2015以上でしか動かないので、僕は18.16を取ってきました。
このライブラリも面白いですね。allというディレクトリにあるsource.cppというファイルを一つコンパイルするだけで、ライブラリが使えます。
Selective SearchのC++のソースコードはここにあるのでそのまま取ってきます。
http://nonbiri-tereka.hatenablog.com/entry/2016/07/15/110000
先ほどのファイルと上記のメイン関数のファイル、二つをコンパイルすると実験ができちゃうんです。この10分くらいでサクッとビルドできて実験できちゃう感じがほんと便利。ライブラリの作者の頭の良さが伝わってきます。
ということで、アニアの画像を物体候補領域抽出してみました。
僕のPCでは20秒くらいかかる・・・・。
でもなんか正しいっぽいいじゃん。
2016年10月17日月曜日
2016年9月16日金曜日
TensorFlowのライブラリをC++から使って画像認識してみた
TensorFlowのライブラリをC++から使うにはどうしたらよいのか。
https://www.tensorflow.org/versions/r0.7/tutorials/image_recognition/index.html
上記のドキュメントにはC++のサンプルのビルド方法は書かれているのですが、bazelを使わない自分で作ったアプリのビルド方法はまったくGoogleno公式ドキュメントに書かれていません。
bazelを使わないで、自分のビルドシステムでmakeしたいときはどうすればいいんだろ。
なので調べてみました。
1. Tensorflowをソースからビルドする
まず、tensorflowのsoを作りたいのですが、soを作るにはTesnsorflowをソースからビルドする環境が必要です。以下のサイトをもとに頑張ってTensorflowをソースからビルドします。
https://www.tensorflow.org/versions/r0.10/get_started/os_setup.html#installing-from-sources
2. Tensorflowのsoを作る。
libtensorflow*.soをビルドしたいのですが、ビルド方法が公式ドキュメントには載ってないですよね。bazelのビルドファイルであるtensorflow/BUILDを読むと、なんとなくsoのビルド方法がわかります。
bazel build -c opt //tensorflow:libtensorflow.so
bazel build -c opt //tensorflow:libtensorflow_c.so
bazel build -c opt //tensorflow:libtensorflow_cc.so
上記のように入力するとsoが出来上がります。
bazel/binのフォルダに出来上がるようです。
3. includeファイルを集めてとってくる
これがめんどくさいのですが、以下の四つのフォルダーのヘッダーファイルを
取ってくるかビルド時にパスで指定します。
bazel-tensorflowはシンボリックリンクとかがあるので取ってくるのがめんどくさいです。
bazel-tensorflow
bazel-genfiles
~/.cache/bazel/_bazelユーザー名 /長い文字列/external/eigen_archives
~/.cache/bazel/_bazelユーザー名 /長い文字列/external/protobuf
僕はこれらのファイルをincludeディレクトリを作り、全部入れました。
4. ビルドする
試しに、Tensorflowに入っている画像認識のサンプルをビルドします。
3で作ったファイルをWindowsに持ってきて、前回の記事のbashでビルドしてみたいと思います。
tensorflow/examples/label_image/main.ccをビルドするには以下のように入力
$ g++ main.cc -std=c++11 -Iinclude/eigen_archive -I include/protobuf/src -Iinclude -L. -ltensorflow_cc -Wl,-rpath=.
びるどできたー
5. 学習データを取ってくる
いつものように以下のサイトから学習アルゴリズムと学習結果を取ってきます。
https://storage.googleapis.com/download.tensorflow.org/models/inception_dec_2015.zip
6. 実行させる
$ ./a.out
military uniform (866): 0.647298
suit (794): 0.0477196
academic gown (896): 0.0232406
bow tie (817): 0.0157355
bolo tie (940): 0.0145024
おー、結果が出た。
この写真は軍の制服らしい。
確かにスーツにも見えるね。
これでsoとヘッダーファイルさえとってこれれば、どんなビルドシステムでもコンパイルすることができます。
Windowsのbash on ubuntu on Windsowsはjavaがまだ安定して動かないため、bazelも動かないのですが、ubuntuでビルドしたsoとヘッダーファイルを取ってくれば、Windows上でTensorflowのC++開発も行うこともできます。
Pythonでディープラーニングをすることが流行っていますが、スマホや組み込みではフルスペックのPythonは動きません。
しかし、Tensorflowは演算部分がC++で書かれているので、Tensorflowでグラフを作れば、スマホや組み込みですぐにその学習結果を利用することができるます。
ディープラーニングを使ったアプリを簡単に商品化できるだけでなく、大変時間のかかる学習もGPUを使ったサーバで簡単に分散処理できます。
Tensorflowって深層学習のアプリを実際に商品化する時に発生するたくさんの問題をすべて解決してくれます。
本当によく考えられています。すごいです。
https://www.tensorflow.org/versions/r0.7/tutorials/image_recognition/index.html
上記のドキュメントにはC++のサンプルのビルド方法は書かれているのですが、bazelを使わない自分で作ったアプリのビルド方法はまったくGoogleno公式ドキュメントに書かれていません。
bazelを使わないで、自分のビルドシステムでmakeしたいときはどうすればいいんだろ。
なので調べてみました。
1. Tensorflowをソースからビルドする
まず、tensorflowのsoを作りたいのですが、soを作るにはTesnsorflowをソースからビルドする環境が必要です。以下のサイトをもとに頑張ってTensorflowをソースからビルドします。
https://www.tensorflow.org/versions/r0.10/get_started/os_setup.html#installing-from-sources
2. Tensorflowのsoを作る。
libtensorflow*.soをビルドしたいのですが、ビルド方法が公式ドキュメントには載ってないですよね。bazelのビルドファイルであるtensorflow/BUILDを読むと、なんとなくsoのビルド方法がわかります。
bazel build -c opt //tensorflow:libtensorflow.so
bazel build -c opt //tensorflow:libtensorflow_c.so
bazel build -c opt //tensorflow:libtensorflow_cc.so
上記のように入力するとsoが出来上がります。
bazel/binのフォルダに出来上がるようです。
3. includeファイルを集めてとってくる
これがめんどくさいのですが、以下の四つのフォルダーのヘッダーファイルを
取ってくるかビルド時にパスで指定します。
bazel-tensorflowはシンボリックリンクとかがあるので取ってくるのがめんどくさいです。
bazel-tensorflow
bazel-genfiles
~/.cache/bazel/_bazelユーザー名 /長い文字列/external/eigen_archives
~/.cache/bazel/_bazelユーザー名 /長い文字列/external/protobuf
僕はこれらのファイルをincludeディレクトリを作り、全部入れました。
4. ビルドする
試しに、Tensorflowに入っている画像認識のサンプルをビルドします。
3で作ったファイルをWindowsに持ってきて、前回の記事のbashでビルドしてみたいと思います。
tensorflow/examples/label_image/main.ccをビルドするには以下のように入力
$ g++ main.cc -std=c++11 -Iinclude/eigen_archive -I include/protobuf/src -Iinclude -L. -ltensorflow_cc -Wl,-rpath=.
びるどできたー
5. 学習データを取ってくる
いつものように以下のサイトから学習アルゴリズムと学習結果を取ってきます。
https://storage.googleapis.com/download.tensorflow.org/models/inception_dec_2015.zip
6. 実行させる
$ ./a.out
military uniform (866): 0.647298
suit (794): 0.0477196
academic gown (896): 0.0232406
bow tie (817): 0.0157355
bolo tie (940): 0.0145024
おー、結果が出た。
この写真は軍の制服らしい。
確かにスーツにも見えるね。
これでsoとヘッダーファイルさえとってこれれば、どんなビルドシステムでもコンパイルすることができます。
Windowsのbash on ubuntu on Windsowsはjavaがまだ安定して動かないため、bazelも動かないのですが、ubuntuでビルドしたsoとヘッダーファイルを取ってくれば、Windows上でTensorflowのC++開発も行うこともできます。
Pythonでディープラーニングをすることが流行っていますが、スマホや組み込みではフルスペックのPythonは動きません。
しかし、Tensorflowは演算部分がC++で書かれているので、Tensorflowでグラフを作れば、スマホや組み込みですぐにその学習結果を利用することができるます。
ディープラーニングを使ったアプリを簡単に商品化できるだけでなく、大変時間のかかる学習もGPUを使ったサーバで簡単に分散処理できます。
Tensorflowって深層学習のアプリを実際に商品化する時に発生するたくさんの問題をすべて解決してくれます。
本当によく考えられています。すごいです。
2016年9月8日木曜日
コンピュータにゲームをさせてみた
「コンピュータにゲームをさせてみる」のいよいよクライマックスです。
今日はコンピュータにゲームを学習させたり、その結果でコンピュータにゲームを
させます。
コンピュータにゲームをさせるにはたくさんのライブラリをいれないといけないので、設定がめんどくさくてなかなかハードルが高いです。なので順を追って説明していきます。
ソースコードは学習することも含めて367行しかないのに。
1. OpenAI GYMをインストール
まずOpenAI GYMをWindowsで動くようにします。
Windows用って書いてますが、実はLinuxでもやることは全部同じです。
なので同じやり方でLinuxでもコンピュータにゲームをさせることができます。
以下のサイトを参考にどんどんいろんなソフトを入れていきます。
Windows 10のLinux/Ubuntu互換環境でbashを使う
http://www.atmarkit.co.jp/ait/articles/1608/08/news039.html
Windows上でOpenAI/gymを実行してみる
http://qiita.com/onelittlenightmusic/items/11eefde5ddad57fd0727
2. いろいろインストール
上記で一応OpanAI GYMだけは動くようになったのですが、Atariのゲームや、機械学習のライブラリのTensorflowとKerasがまだ入っていません。なのでインストールします。
apt-get install python-dev
apt-get install python-opengl
apt-get install python-skimage
apt-get install cmake
apt-get install zlib1g-dev
apt-get install tensorflow
apt-get install git
pip install gym
pip install gym[atari]
pip install keras
export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0-cp27-none-linux_x86_64.whl
pip install $TF_BINARY_URL
こんな感じでどんどんインストールします。
3. Kerasのバックエンドを設定
次にKerasはデフォルトではtheanoを使うように設定されているのでtensorflowを使うように設定を変更します。
KerasをTensorFlowバックエンドで試してみた
http://tjo.hatenablog.com/entry/2016/06/09/190000
上記のサイトを参考に
~/.keras/keras.json
を変更します。
変更前
{"epsilon": 1e-07, "floatx": "float32", "backend": "theano"}
変更後
{"epsilon": 1e-07, "floatx": "float32", "backend": "tensorflow"}
4. Atariのゲームをするプログラムと学習結果をとってくる
ゲームをするプログラムと学習データを取ってきます。
DQNをKerasとTensorFlowとOpenAI Gymで実装する
https://elix-tech.github.io/ja/2016/06/29/dqn-ja.html
上記のサイトにコードとデータがあるので取ってきます。
サイトでは
python dqn.py
と入力すればコンピュータがゲームをしてくれると書いてありますが、実際にはデフォルトではゲームの学習を始めてしまいます。
学習はGPUがあるPCでも非常に時間がかかるので今回は省略します。
5. ソースを一部直す
dqn.pyのソースを以下のように変更し、学習結果をテストするモードにします。
学習結果をテストするくらいならばGPUが載っていない普通のPCでもできます。
変更前
LOAD_NETWORK = False
TRAIN = True
変更後
LOAD_NETWORK = True
TRAIN = False
6. コンピュータにゲームをさせる。
python dqn.py
と入力します。
やったーーーーーー。
きちんとゲーム画面が表示されて生意気にもゲームしてるじゃん。
長かったけどついに僕のWindowsマシンでコンピュータにゲームをさせることができました。
冒頭にも書きましたが、ゲームを学習したりプレーする部分のソースコードは367行しかありません。たったそれだけでゲームすることができちゃうんです。深層強化学習って面白いですね。
今日はコンピュータにゲームを学習させたり、その結果でコンピュータにゲームを
させます。
コンピュータにゲームをさせるにはたくさんのライブラリをいれないといけないので、設定がめんどくさくてなかなかハードルが高いです。なので順を追って説明していきます。
ソースコードは学習することも含めて367行しかないのに。
1. OpenAI GYMをインストール
まずOpenAI GYMをWindowsで動くようにします。
Windows用って書いてますが、実はLinuxでもやることは全部同じです。
なので同じやり方でLinuxでもコンピュータにゲームをさせることができます。
以下のサイトを参考にどんどんいろんなソフトを入れていきます。
Windows 10のLinux/Ubuntu互換環境でbashを使う
http://www.atmarkit.co.jp/ait/articles/1608/08/news039.html
Windows上でOpenAI/gymを実行してみる
http://qiita.com/onelittlenightmusic/items/11eefde5ddad57fd0727
2. いろいろインストール
上記で一応OpanAI GYMだけは動くようになったのですが、Atariのゲームや、機械学習のライブラリのTensorflowとKerasがまだ入っていません。なのでインストールします。
apt-get install python-dev
apt-get install python-opengl
apt-get install python-skimage
apt-get install cmake
apt-get install zlib1g-dev
apt-get install tensorflow
apt-get install git
pip install gym
pip install gym[atari]
pip install keras
export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0-cp27-none-linux_x86_64.whl
pip install $TF_BINARY_URL
こんな感じでどんどんインストールします。
3. Kerasのバックエンドを設定
次にKerasはデフォルトではtheanoを使うように設定されているのでtensorflowを使うように設定を変更します。
KerasをTensorFlowバックエンドで試してみた
http://tjo.hatenablog.com/entry/2016/06/09/190000
上記のサイトを参考に
~/.keras/keras.json
を変更します。
変更前
{"epsilon": 1e-07, "floatx": "float32", "backend": "theano"}
変更後
{"epsilon": 1e-07, "floatx": "float32", "backend": "tensorflow"}
4. Atariのゲームをするプログラムと学習結果をとってくる
ゲームをするプログラムと学習データを取ってきます。
DQNをKerasとTensorFlowとOpenAI Gymで実装する
https://elix-tech.github.io/ja/2016/06/29/dqn-ja.html
上記のサイトにコードとデータがあるので取ってきます。
サイトでは
python dqn.py
と入力すればコンピュータがゲームをしてくれると書いてありますが、実際にはデフォルトではゲームの学習を始めてしまいます。
学習はGPUがあるPCでも非常に時間がかかるので今回は省略します。
5. ソースを一部直す
dqn.pyのソースを以下のように変更し、学習結果をテストするモードにします。
学習結果をテストするくらいならばGPUが載っていない普通のPCでもできます。
変更前
LOAD_NETWORK = False
TRAIN = True
変更後
LOAD_NETWORK = True
TRAIN = False
6. コンピュータにゲームをさせる。
python dqn.py
と入力します。
やったーーーーーー。
きちんとゲーム画面が表示されて生意気にもゲームしてるじゃん。
長かったけどついに僕のWindowsマシンでコンピュータにゲームをさせることができました。
冒頭にも書きましたが、ゲームを学習したりプレーする部分のソースコードは367行しかありません。たったそれだけでゲームすることができちゃうんです。深層強化学習って面白いですね。
2016年9月7日水曜日
WindowsでLinuxのアプリを動かしてみた
Windows10をアップデートするとWindows Subsystem for Linuxという機能が使えるようになるらしいので、8月にリリースされたばかりのWindows10 Anniversary Updateを自分のパソコンにいれてみました。
Windows Subsystem for Linux とはどういう機能かというと、WindowsでLinuxの実行形式のファイルをそのまま実行できる機能です。
すごいですね、LinuxのアプリがそのままWindowsで実行できてしまうのです。
Linuxのgccとかpythonとかapt-getとかのバイナリーがそのままみんなWindowsで動くのです。
ということで、Windows Subsystem for Linuxを動かして、gccやxeyesをapt-getでいれて、本当に動くのか実験してみました。
おーすげー。本当に動く。
この機能は、Linuxで数値計算や深層学習をやっているデータサイエンティストや研究者にとっては大変便利な機能でLinuxしかサポートしていないさまざまなソフトをWindowsで動かすことができます。
これでWindowsでOpenAI GYMを動かして、「ゲームをするコンピュータ」を動かすことができる!
ということで次回はWindowsでOpenAI GYMを動かして「ゲームをするコンピュータ」が本当にゲームをするのか見てみたいと思います。
Windows Subsystem for Linux とはどういう機能かというと、WindowsでLinuxの実行形式のファイルをそのまま実行できる機能です。
すごいですね、LinuxのアプリがそのままWindowsで実行できてしまうのです。
Linuxのgccとかpythonとかapt-getとかのバイナリーがそのままみんなWindowsで動くのです。
ということで、Windows Subsystem for Linuxを動かして、gccやxeyesをapt-getでいれて、本当に動くのか実験してみました。
おーすげー。本当に動く。
この機能は、Linuxで数値計算や深層学習をやっているデータサイエンティストや研究者にとっては大変便利な機能でLinuxしかサポートしていないさまざまなソフトをWindowsで動かすことができます。
これでWindowsでOpenAI GYMを動かして、「ゲームをするコンピュータ」を動かすことができる!
ということで次回はWindowsでOpenAI GYMを動かして「ゲームをするコンピュータ」が本当にゲームをするのか見てみたいと思います。
2016年9月6日火曜日
コンピュータをしゃべらせてみた。
忙しくてしばらく放置していましたが、しゃべるロボットを作ろうとしているおじさん。やっとしゃべる部分を作ることができたので、今日はロボットをどうやってしゃべらすかについて書きます。
音声認識の方はいろいろな書籍がそろっているのですが、音声合成の本ってあまり見かけません。不思議です。まぁいいや。
オープンソースのOpenJTalkというライブラリを使うとコンピュータに日本語をしゃべらすことができます。正確に言うとテキストファイルを音声に変えることができます。
http://open-jtalk.sourceforge.net/
しかし、使っておいて文句を言うのも何なんですが、このページとてもわかりずらい。
ドキュメントをよーくよむとどうやら以下のものが必要らしいです。
(1) Open?JTalk本体
open_jtalk-1.xx
(2) 解析用辞書ファイル
open_jtalk_dic-1.xx
(3) 音声合成エンジン
hts_engine_API-1.xx
(4) 音響モデルデータ
hts_voice_nitech_jp_atr503_m001-1.xx
(1)、(2)、(4)は上記のサイトから入手可能なようですが、(3)は以下の別サイトから取ってくるようです。
http://hts-engine.sourceforge.net/
この四つのファイルを全部取ってきて、ビルドします。
Windowsはサポート対象に含まれていないようなんですが、Windowsでも問題なくビルドできるようです。
ビルド方法も通常のLinuxビルドのようにConfigureをかけるほうもあるのですが、使う漢字コードとライブラリのバージョンの#defineを設定すればどのコンパイラでもビルドできるようです。
ぼくはソースを全部同じフォルダにぶち込んで、適当に#defineを設定してVisualStudio2015でビルドしました。
フォルダがたくさんあって大変なんですが、全部同じフォルダにぶち込んでコンパイルすれば意外と簡単にビルドできます。
input.txtに「こんにちは、ばーか」などと打ち込んで、以下のコマンドを実行すれば話すみたいです。
open_jtalk -m nitech_jp_atr503_m001.htsvoice -x dic -ow output.wav input.txt
喋る部分って意外と簡単。
ラズベリーパイなんかでも余裕で動きます。
これで「音声からテキスト」-->「いろいろ処理」--->「テキストから音声」ができるので、人がしゃべったことを理解して何かを処理して結果をしゃべるロボットを作ることができます。
最近なんでもオープンソースなので、オープンソースを使えたり自由に変更できたりするといろんなことができる気がします。オープンソースがどの程度自由に使えるか?これがソフトウェア技術者として重要な気がします。
音声処理飽きたので、次回は、OpenAI GYMで自動制御とかゲームをするコンピュータでも作ってみようかなぁ。
おじさん、大学時代に音声信号処理と自動制御の研究をしていたのですが、最近ロボットの自動制御に深層強化学習を利用していたりして、なんか勝手に10年以上前の技術が旬になっています。でもおじさんはなぜか仕事がありません。誰か雇ってくれないかなぁ。
音声認識の方はいろいろな書籍がそろっているのですが、音声合成の本ってあまり見かけません。不思議です。まぁいいや。
オープンソースのOpenJTalkというライブラリを使うとコンピュータに日本語をしゃべらすことができます。正確に言うとテキストファイルを音声に変えることができます。
http://open-jtalk.sourceforge.net/
しかし、使っておいて文句を言うのも何なんですが、このページとてもわかりずらい。
ドキュメントをよーくよむとどうやら以下のものが必要らしいです。
(1) Open?JTalk本体
open_jtalk-1.xx
(2) 解析用辞書ファイル
open_jtalk_dic-1.xx
(3) 音声合成エンジン
hts_engine_API-1.xx
(4) 音響モデルデータ
hts_voice_nitech_jp_atr503_m001-1.xx
(1)、(2)、(4)は上記のサイトから入手可能なようですが、(3)は以下の別サイトから取ってくるようです。
http://hts-engine.sourceforge.net/
この四つのファイルを全部取ってきて、ビルドします。
Windowsはサポート対象に含まれていないようなんですが、Windowsでも問題なくビルドできるようです。
ビルド方法も通常のLinuxビルドのようにConfigureをかけるほうもあるのですが、使う漢字コードとライブラリのバージョンの#defineを設定すればどのコンパイラでもビルドできるようです。
ぼくはソースを全部同じフォルダにぶち込んで、適当に#defineを設定してVisualStudio2015でビルドしました。
フォルダがたくさんあって大変なんですが、全部同じフォルダにぶち込んでコンパイルすれば意外と簡単にビルドできます。
input.txtに「こんにちは、ばーか」などと打ち込んで、以下のコマンドを実行すれば話すみたいです。
open_jtalk -m nitech_jp_atr503_m001.htsvoice -x dic -ow output.wav input.txt
喋る部分って意外と簡単。
ラズベリーパイなんかでも余裕で動きます。
これで「音声からテキスト」-->「いろいろ処理」--->「テキストから音声」ができるので、人がしゃべったことを理解して何かを処理して結果をしゃべるロボットを作ることができます。
最近なんでもオープンソースなので、オープンソースを使えたり自由に変更できたりするといろんなことができる気がします。オープンソースがどの程度自由に使えるか?これがソフトウェア技術者として重要な気がします。
音声処理飽きたので、次回は、OpenAI GYMで自動制御とかゲームをするコンピュータでも作ってみようかなぁ。
おじさん、大学時代に音声信号処理と自動制御の研究をしていたのですが、最近ロボットの自動制御に深層強化学習を利用していたりして、なんか勝手に10年以上前の技術が旬になっています。でもおじさんはなぜか仕事がありません。誰か雇ってくれないかなぁ。
2016年9月2日金曜日
グラスサウンドスピーカーを聞いてみた。
最近まで、ものすごい忙しくて全然ブログを更新できませんでした。
やっと遅めの夏休み。
機械学習とかの本はほとんど買い尽くして読んで、テレビゲームをやるAIや囲碁をするAIも作り方がわかったので、夏休みはハイレゾオーディオで遊びます。
オラソニックのCD-1とUA-1とソニーのグラスサウンドスピーカーLSPX-S1をつないで聞いてみました。
スピーカーはハイレゾ対応ではないんですが、ハイレゾまでの音は出るようです。
このグラスサウンドスピーカーは音を聞くとその解像度がかなり凄い。
本当にクリアに聞こえます。
シャカシャカしないというか圧迫されないというか疲れない音というかなんというかずっと聴きたくなるような音が出ます。
いろんな音源を聴いてみましたが、ジャズとか女性ボーカルが特に良いです。
スピーカーが1つだと音がモノラルなのでこれ確かにもう1ついるなあ。
やっと遅めの夏休み。
機械学習とかの本はほとんど買い尽くして読んで、テレビゲームをやるAIや囲碁をするAIも作り方がわかったので、夏休みはハイレゾオーディオで遊びます。
オラソニックのCD-1とUA-1とソニーのグラスサウンドスピーカーLSPX-S1をつないで聞いてみました。
スピーカーはハイレゾ対応ではないんですが、ハイレゾまでの音は出るようです。
このグラスサウンドスピーカーは音を聞くとその解像度がかなり凄い。
本当にクリアに聞こえます。
シャカシャカしないというか圧迫されないというか疲れない音というかなんというかずっと聴きたくなるような音が出ます。
いろんな音源を聴いてみましたが、ジャズとか女性ボーカルが特に良いです。
スピーカーが1つだと音がモノラルなのでこれ確かにもう1ついるなあ。
2016年7月11日月曜日
人工無能を試してみた。
おじさんには1歳の子供がいるんです。
おじさんのまねをして扉をあけて外にでる動作をしたいらしいんですが、扉を開けるのは簡単にできるので興味はなく、扉を閉める動作に興味があり、扉を開けて自分は動かないで扉を閉めるのでいつまでも外に出れなくて怒っています。
きっとなんかの拍子にたまたま外に出られたときにそれが学習されて扉の開け方を学んでいくんだなぁと思うと、同じことをCNNでロボットに学習させてあげると、扉を開けることができるロボットができるんじゃないかと思ってしまいます。
まぁそれはさておいて、Siriのようなものを作る二回目です。
順序でいうと自然言語処理をするところです。
人工無能とかチャットボットって言われてるところですね。
以前このブログで紹介したWord2Vecと必要な技術と原理は同じなのです。
ざっとの原理はここに書かれているのでこれを参考にしていただければと思います。
http://robotstart.info/2016/05/17/kozaki_shogeki-no20.html
最近この分野のAIが人気で古本が高値を更新しつづけています。
https://www.amazon.co.jp/%E6%81%8B%E3%81%99%E3%82%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E2%80%95Ruby%E3%81%A7%E3%81%A4%E3%81%8F%E3%82%8B%E4%BA%BA%E5%B7%A5%E7%84%A1%E8%84%B3-%E7%A7%8B%E5%B1%B1-%E6%99%BA%E4%BF%8A/dp/4839917299
https://www.amazon.co.jp/gp/product/4274066649/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1
なんでこれらの本が高いかというと、これらの原理を研究していた方がもう現役でなく、これらの本だけに原理とソースコードが添付してあるのです。
おそろしいですねぇ、こんなところに日本の高齢化社会の歪が。
おじさんもこれらの本を持ってるんですが、たとえ本を持っていても、学習させるのが本当に大変で、個人レベルのPCでは本のようなひどい結果しかでないのです。
上記の人の場合、会話の結果はこんな感じですね
http://robotstart.info/2016/02/23/report-tensorflow2.html
なので、ソースコードがほしい方は本買ってください。
また、よい学習結果がほしい方はamazonのGPUインスタンスを何万台も買ってください。
本をもとにTensorFlowやamazonなどで何万台かのPCで高速分散処理させると、一番上の方のように、とりあえず文字で何か入力すると何か文字を返してくれる、そんなものを作ることができます。
おじさん、前回書いたロボットを作りたい会社の面談で言ったんですよ。NLPのところはまだまだ全然できていないのでこれからどんどん開発していかないといけないと思いますと。そうしたら面接官に言われました。NLPだと喋んないロボットになっちゃうじゃんと。
そうだよね。まだこれだけだとロボット喋んないよね。
次回はロボットがしゃべる方法について書きたいと思います。
おじさんのまねをして扉をあけて外にでる動作をしたいらしいんですが、扉を開けるのは簡単にできるので興味はなく、扉を閉める動作に興味があり、扉を開けて自分は動かないで扉を閉めるのでいつまでも外に出れなくて怒っています。
きっとなんかの拍子にたまたま外に出られたときにそれが学習されて扉の開け方を学んでいくんだなぁと思うと、同じことをCNNでロボットに学習させてあげると、扉を開けることができるロボットができるんじゃないかと思ってしまいます。
まぁそれはさておいて、Siriのようなものを作る二回目です。
順序でいうと自然言語処理をするところです。
人工無能とかチャットボットって言われてるところですね。
以前このブログで紹介したWord2Vecと必要な技術と原理は同じなのです。
ざっとの原理はここに書かれているのでこれを参考にしていただければと思います。
http://robotstart.info/2016/05/17/kozaki_shogeki-no20.html
最近この分野のAIが人気で古本が高値を更新しつづけています。
https://www.amazon.co.jp/%E6%81%8B%E3%81%99%E3%82%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E2%80%95Ruby%E3%81%A7%E3%81%A4%E3%81%8F%E3%82%8B%E4%BA%BA%E5%B7%A5%E7%84%A1%E8%84%B3-%E7%A7%8B%E5%B1%B1-%E6%99%BA%E4%BF%8A/dp/4839917299
https://www.amazon.co.jp/gp/product/4274066649/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1
なんでこれらの本が高いかというと、これらの原理を研究していた方がもう現役でなく、これらの本だけに原理とソースコードが添付してあるのです。
おそろしいですねぇ、こんなところに日本の高齢化社会の歪が。
おじさんもこれらの本を持ってるんですが、たとえ本を持っていても、学習させるのが本当に大変で、個人レベルのPCでは本のようなひどい結果しかでないのです。
上記の人の場合、会話の結果はこんな感じですね
http://robotstart.info/2016/02/23/report-tensorflow2.html
なので、ソースコードがほしい方は本買ってください。
また、よい学習結果がほしい方はamazonのGPUインスタンスを何万台も買ってください。
本をもとにTensorFlowやamazonなどで何万台かのPCで高速分散処理させると、一番上の方のように、とりあえず文字で何か入力すると何か文字を返してくれる、そんなものを作ることができます。
おじさん、前回書いたロボットを作りたい会社の面談で言ったんですよ。NLPのところはまだまだ全然できていないのでこれからどんどん開発していかないといけないと思いますと。そうしたら面接官に言われました。NLPだと喋んないロボットになっちゃうじゃんと。
そうだよね。まだこれだけだとロボット喋んないよね。
次回はロボットがしゃべる方法について書きたいと思います。
登録:
投稿 (Atom)






