アメリカに出張へ行ってきますー [徒然日記]
急遽、アメリカに1週間ほど出張にいくことになりました。今回は、いろんな都市を巡ってくるので仕事とはいえ少し楽しみなんですが、各都市一泊のハードな日程です。身体壊さないといいけどなぁ。
SPRESENSE in ラズパイゼロケース! [SPRESENSE]
部屋を漁っていたら、ラズパイゼロのケースを見つけました。全く使っていなかったので、すっかり忘れていたのですが、せっかくなので使ってみることにしました。
表をみるとまったく変哲のないカメラ付きのラズパイゼロですが…。裏をみると!
ケースを改造してSPRESENSEを収めてみました!。各種アドオンボードもつけられるようピンソケットも出しています。我ながら会心の出来栄え。こんなことができるのも、SPRESENSEカメラ と ラズパイカメラ の基板形状がまったく同じだからなんです。
中をあけてみるとこんな感じ。
一つ難点なのは、プログラムの書き換えと電源の供給。カメラフレキがUSBを覆ってしまうので、ケースに入れたままでUSBケーブルが挿せません。電源はバッテリ供給用のピンを使ってなんとかするとして、プログラムは書き換えるたびに蓋を外さないといけないので少し面倒。
前から少し不便には思っていたけど、カメラフレキとUSBコネクタの向きが同じなのはちょっとなぁ。
┐(´~`)┌
表をみるとまったく変哲のないカメラ付きのラズパイゼロですが…。裏をみると!
ケースを改造してSPRESENSEを収めてみました!。各種アドオンボードもつけられるようピンソケットも出しています。我ながら会心の出来栄え。こんなことができるのも、SPRESENSEカメラ と ラズパイカメラ の基板形状がまったく同じだからなんです。
中をあけてみるとこんな感じ。
一つ難点なのは、プログラムの書き換えと電源の供給。カメラフレキがUSBを覆ってしまうので、ケースに入れたままでUSBケーブルが挿せません。電源はバッテリ供給用のピンを使ってなんとかするとして、プログラムは書き換えるたびに蓋を外さないといけないので少し面倒。
前から少し不便には思っていたけど、カメラフレキとUSBコネクタの向きが同じなのはちょっとなぁ。
┐(´~`)┌
Raspberry Pi カメラ マウント Pi Camera Mount Pimoroni
- 出版社/メーカー: Pimoroni
- メディア: エレクトロニクス
タグ:Spresense
SPRESENSEをProcessingを使ってPCと通信させてみた! [SPRESENSE]
SPRESENSEからPCにデータを直接取り込めるといろいろと便利なので検討をしてみました。いくつか方法が考えられます。
(1)拡張ボードのUSB機能を使って、SDカードに蓄積されたデータを取得する
(2)拡張ボードのUARTを使って、PCとシリアル通信をしてデータを取得する
(3)メインボードのUARTを使って、PCとシリアル通信してデータを取得する
せっかくなら拡張ボードなしで通信をしたいところです。なので、今回は(3)の方法を試してみることにしました。一番の問題は、メインボードのIO電圧が1.8VでUART変換基板の電圧が3.3Vという点。
手元にあるUSB-UART変換基板はFTDI製のチップですが、3.3V設定で入力閾値電圧は1.2Vなので、Spresenseからの出力はうまくいきそう。一方で、FTDIからの出力電圧つまりSpresenseへの入力電圧が2.7VなのでここがSpresenseが受け付けてくれるかどうか微妙なところ。
まぁ、壊れることはないだろうということで試してみました。接続を次に示します。
Spresenseと通信するためのプログラムツールとして、Processingを選択しました。Arduino IDEはProcessingをベースにしているので、並べるとUIが似ていていい感じですね。
Spresense側のスケッチを次に示します。
Processingのコードを以下に示します。
実際に動かしてみました。
なんとレベル変換なしでもうまく通信ができました!Baudrate も高めに設定していますが、かなり安定して通信しています。
これで、メインボードとPCとの間のデータのやりとりが楽になりました。SpresenseのメインボードとProsessingを使えば、データ解析は捗りそうです!
(^^)/~
(1)拡張ボードのUSB機能を使って、SDカードに蓄積されたデータを取得する
(2)拡張ボードのUARTを使って、PCとシリアル通信をしてデータを取得する
(3)メインボードのUARTを使って、PCとシリアル通信してデータを取得する
せっかくなら拡張ボードなしで通信をしたいところです。なので、今回は(3)の方法を試してみることにしました。一番の問題は、メインボードのIO電圧が1.8VでUART変換基板の電圧が3.3Vという点。
手元にあるUSB-UART変換基板はFTDI製のチップですが、3.3V設定で入力閾値電圧は1.2Vなので、Spresenseからの出力はうまくいきそう。一方で、FTDIからの出力電圧つまりSpresenseへの入力電圧が2.7VなのでここがSpresenseが受け付けてくれるかどうか微妙なところ。
まぁ、壊れることはないだろうということで試してみました。接続を次に示します。
Spresenseと通信するためのプログラムツールとして、Processingを選択しました。Arduino IDEはProcessingをベースにしているので、並べるとUIが似ていていい感じですね。
Spresense側のスケッチを次に示します。
void setup() { Serial.begin(115200); Serial2.begin(921600); while (Serial.available() > 0) Serial.read(); while (Serial2.available() > 0) Serial2.read(); } void loop() { while (Serial.available() > 0) { int inByte0 = Serial.read(); Serial2.write(inByte0); } while (Serial2.available() > 0) { int inByte1 = Serial2.read(); Serial.write(inByte1); } }
Processingのコードを以下に示します。
import processing.serial.*; Serial myPort; PFont gothic; void setup() { size(500, 500); background(0); gothic = createFont("MS Gothic", 24); printArray(Serial.list()); myPort = new Serial(this, Serial.list()[1], 921600); } int cnt = 0; void draw() { if (myPort.available() > 0) { String message = myPort.readString(); message = trim(message) + ":" +cnt; textSize(24); text(message, 50, 50+cnt*30); String ret = "Hi!" + cnt + "\r\n"; myPort.write(ret); ++cnt; } }
実際に動かしてみました。
なんとレベル変換なしでもうまく通信ができました!Baudrate も高めに設定していますが、かなり安定して通信しています。
これで、メインボードとPCとの間のデータのやりとりが楽になりました。SpresenseのメインボードとProsessingを使えば、データ解析は捗りそうです!
(^^)/~
FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)
- 出版社/メーカー: スイッチサイエンス(Switch Science)
- メディア: おもちゃ&ホビー
【朗報】倒産した Maker Madia が Maker Community として活動再開! [徒然日記]
突如倒産した Maker Media ですが、Make Community という団体を立ち上げ活動を再開するらしいです。世界中で開催される Maker Faire のライセンスは元CEOのデール・ドーハティ氏がポケットマネーで買い戻し、事業は担保されるようです。
倒産したMaker Faireが新たにMake Communityとして復活
https://jp.techcrunch.com/2019/07/11/2019-07-10-maker-faire-now-make-community/
まだこの組織は営利組織となるか協同組合のような非営利組織として運営をしていくか決まっていないので、まだ支援を受け付ける団体という扱いです。しばらくはデール・ドーハティ氏のポケットマネーで運営をしていくようですが、やはり限界がありますよね。
早く支援者が表れて、Maker文化の表舞台に戻ってきてほしいですね。
デール・ドーハティ氏のコメントが胸に刺さります。
「シリコンバレーにはこれだけ大勢の億万長者たちがいるのに、Maker Faireを支援するのが私しかいないと思うと残念でなりません」
ほんこれ…。(´;ω;`)
倒産したMaker Faireが新たにMake Communityとして復活
https://jp.techcrunch.com/2019/07/11/2019-07-10-maker-faire-now-make-community/
まだこの組織は営利組織となるか協同組合のような非営利組織として運営をしていくか決まっていないので、まだ支援を受け付ける団体という扱いです。しばらくはデール・ドーハティ氏のポケットマネーで運営をしていくようですが、やはり限界がありますよね。
早く支援者が表れて、Maker文化の表舞台に戻ってきてほしいですね。
デール・ドーハティ氏のコメントが胸に刺さります。
「シリコンバレーにはこれだけ大勢の億万長者たちがいるのに、Maker Faireを支援するのが私しかいないと思うと残念でなりません」
ほんこれ…。(´;ω;`)
退屈をぶっとばせ! ―自分の世界を広げるために本気で遊ぶ (Make: Japan Books)
- 作者: Joshua Glenn
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/05/26
- メディア: 単行本
作ることで学ぶ ―Makerを育てる新しい教育のメソッド (Make:Japan Books)
- 作者: Sylvia Libow Martinez
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/03/25
- メディア: 単行本(ソフトカバー)
「もの」はどのようにつくられているのか? ―プロダクトデザインのプロセス事典 (Make: Japan Books)
- 作者: Chris Lefteri
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/05/24
- メディア: 単行本(ソフトカバー)
タグ:Maker Faire
SPRESENSEでSony Neural Network Console を使ってみた! [SPRESENSE]
Sony Neural Network Console (以下 NNC)が使えるようになったので、今回はNNCで出力した学習済データを SPRESENSE で使ってみたいと思います。例によって動画にしてみたので、お時間のある方はどうぞ。
最初に、NNC を使って機械学習を行います。今回は、前回使った”4”、”9”を判別するネットワークを使います。
学習済データは、学習結果の履歴を右クリックで出てくるメニューの”Export”で取得することができます。このとき、フォーマットは"NNB"を選択します。
すると"model.nnb"が出力されていますので、それを使います。
次にArduino IDEを開きます。”スケッチ例”の”DNNRT”から”number_recognition”サンプルを起動します。このサンプルでは、学習済データの名前が”network.nnb”となっていますので、"model.nnb"へ変更します。
SPRESENSEは、メインボードと拡張ボードを使います。出力した "model.nnb"とサンプルに使う画像をSDカードにコピーをして拡張ボードのSDカードスロットに差し込みます。
サンプルの画像は自作したものを使ってみました。こちらから取得ください。
number4.pgm を読み込ませてみた結果です。
number9.pgm を読み込ませてみた結果です。
うまく動きました!
Arduino IDE でAIプログラミングができるなんてすごく便利ですね。次はカメラから取得した画像を認識できるようにしてみたいと思います!
(^^)/~
最初に、NNC を使って機械学習を行います。今回は、前回使った”4”、”9”を判別するネットワークを使います。
学習済データは、学習結果の履歴を右クリックで出てくるメニューの”Export”で取得することができます。このとき、フォーマットは"NNB"を選択します。
すると"model.nnb"が出力されていますので、それを使います。
次にArduino IDEを開きます。”スケッチ例”の”DNNRT”から”number_recognition”サンプルを起動します。このサンプルでは、学習済データの名前が”network.nnb”となっていますので、"model.nnb"へ変更します。
#include <SDHCI.h> #include <NetPBM.h> #include <DNNRT.h> DNNRT dnnrt; // NNCの学習済データを使うためのライブラリ SDClass SD; void setup() { Serial.begin(115200); File nnbfile = SD.open("model.nnb"); // NNCの学習済データを読み込み(拡張ボードが必要) if (!nnbfile) { Serial.print("nnb not found"); return; } int ret = dnnrt.begin(nnbfile); if (ret < 0) { Serial.print("Runtime initialization failure. "); if (ret == -16) { Serial.println("Please update bootloader!"); } else { Serial.println(ret); } return; } // Image size for this network model is 28 x 28. File pgmfile("number4.pgm"); // 識別したいファイルを指定 NetPBM pgm(pgmfile); unsigned short width, height; pgm.size(&width, &height); DNNVariable input(width * height); float *buf = input.data(); int i = 0; // Normalize pixel data into between 0.0 and 1.0. // PGM file is gray scale pixel map, so divide by 255. // This normalization depends on the network model. for (int x = 0; x < height; x++) { for (int y = 0; y < width; y++) { buf[i] = float(pgm.getpixel(x, y)) / 255.0; i++; } } dnnrt.inputVariable(input, 0); dnnrt.forward(); DNNVariable output = dnnrt.outputVariable(0); // Get index for maximum value. // In this example network model, this index represents a number, // so you can determine recognized number from this index. int index = output.maxIndex(); Serial.print("Image is "); Serial.print(index); Serial.println(); Serial.print("value "); Serial.print(output[index]); Serial.println(); if (output[index] < 0.2) Serial.println("the result is 4"); else if (output[index] > 0.8) Serial.println("the result is 9"); dnnrt.end(); } void loop() { }
SPRESENSEは、メインボードと拡張ボードを使います。出力した "model.nnb"とサンプルに使う画像をSDカードにコピーをして拡張ボードのSDカードスロットに差し込みます。
サンプルの画像は自作したものを使ってみました。こちらから取得ください。
number4.pgm を読み込ませてみた結果です。
number9.pgm を読み込ませてみた結果です。
うまく動きました!
Arduino IDE でAIプログラミングができるなんてすごく便利ですね。次はカメラから取得した画像を認識できるようにしてみたいと思います!
(^^)/~
ソニー開発のNeural Network Console入門【増補改訂・クラウド対応版】--数式なし、コーディングなしのディープラーニング
- 作者: 足立 悠
- 出版社/メーカー: リックテレコム
- 発売日: 2018/11/14
- メディア: 単行本(ソフトカバー)
Sony Neural Network Console を OMEN HP15 で動かしてみた! [AI]
Deep Learning をするために GPU付ノートパソコン "OMEN HP15" を購入したので、早速ソニーのディープラーニングのフレームワーク「Neural Network Console」を動かしてみることにしました。
例によって動画でまとめていますので、お時間のある方はこちらをどうぞ。
”Neural Network Console”は、Windows版と、クラウド版がありますが、もちろんGPUを活かせるWindows版をダウンロードして使います。
https://dl.sony.com
”Neural Network Console”のWindows版の最新版は”1.4.0”です。メールアドレスを登録すると、ダウンロード用のURLが記載されたメールが届くので、そこからダウンロードします。
ダウンロードした、”neural_network_console_140.zip” ファイルを解凍するとと ”neural_network_console_140” フォルダの下に、"neural_network_console.exe" があるので、それを起動します。
プロセッサーの設定をします。メニューのセットアップをクリックして、”ENGINE” メニューの ”Processor Type” をGPUに設定します。
”EDIT”を押すと、ニューラルネットワークのプロジェクト画面が出てきます。
この画面の "Training" の再生ボタン(三角ボタン)を押すと学習が開始されるはずですが、なんと "`status == CUDNN_STATUS_SUCCESS`:NOT INITIALIZED" というエラーが出てしまいました。
トホホ…
いろいろと試行錯誤をしましたが、なんのことはないディスプレイアダプタのドライバをアップデートすることで問題が解決できました。
学習が終わると学習経過がグラフで表示されます。
次にプロジェクト画面の "Evalution" の再生ボタン(三角ボタン)を押すと、学習したニューラルネットワークの評価ができます。評価結果はこのニューラルネットの場合、"0" に近いと "4"、"1" に近いと "9" になります。
これでは、どれくらいの認識率かよくわからないので統計画面で確認します。
統計結果を見ると、認識率は "0.952" になりました。
さて、これをどう使うかですが、同じくソニーから出ている "SPRESENSE" で活用できます。次は、”Neural Network Console” と "SPRESENSE" の連携について試してみたいと思います。
(^^)/~
例によって動画でまとめていますので、お時間のある方はこちらをどうぞ。
”Neural Network Console”は、Windows版と、クラウド版がありますが、もちろんGPUを活かせるWindows版をダウンロードして使います。
https://dl.sony.com
”Neural Network Console”のWindows版の最新版は”1.4.0”です。メールアドレスを登録すると、ダウンロード用のURLが記載されたメールが届くので、そこからダウンロードします。
ダウンロードした、”neural_network_console_140.zip” ファイルを解凍するとと ”neural_network_console_140” フォルダの下に、"neural_network_console.exe" があるので、それを起動します。
プロセッサーの設定をします。メニューのセットアップをクリックして、”ENGINE” メニューの ”Processor Type” をGPUに設定します。
”EDIT”を押すと、ニューラルネットワークのプロジェクト画面が出てきます。
この画面の "Training" の再生ボタン(三角ボタン)を押すと学習が開始されるはずですが、なんと "`status == CUDNN_STATUS_SUCCESS`:NOT INITIALIZED" というエラーが出てしまいました。
トホホ…
いろいろと試行錯誤をしましたが、なんのことはないディスプレイアダプタのドライバをアップデートすることで問題が解決できました。
学習が終わると学習経過がグラフで表示されます。
次にプロジェクト画面の "Evalution" の再生ボタン(三角ボタン)を押すと、学習したニューラルネットワークの評価ができます。評価結果はこのニューラルネットの場合、"0" に近いと "4"、"1" に近いと "9" になります。
これでは、どれくらいの認識率かよくわからないので統計画面で確認します。
統計結果を見ると、認識率は "0.952" になりました。
さて、これをどう使うかですが、同じくソニーから出ている "SPRESENSE" で活用できます。次は、”Neural Network Console” と "SPRESENSE" の連携について試してみたいと思います。
(^^)/~
ソニー開発のNeural Network Console入門【増補改訂・クラウド対応版】--数式なし、コーディングなしのディープラーニング
- 作者: 足立 悠
- 出版社/メーカー: リックテレコム
- 発売日: 2018/11/14
- メディア: 単行本(ソフトカバー)