Monthly Archive: 7月 2018

Tensorboardが動かない。(動かすには)

Tensorboard 動かない

Tensorboardがうまく表示されなかったり、そもそもどのタイミングで表示されるのかよくわからないこともあると思います。
そんな時のメモです。

まず、タイミングはTensorFlowを使った学習を行なった後になります。
学習時に

か、その他の方法で、学習用のファイルが置かれているフォルダ(ディレクトリ)を指定していると思います。

TensorFlowで学習(トレーニング)するときは、

などで、学習を行い、その際にファイルを書き出すと思います。
それを、学習後に下記で指定してTensorboardを起動します。

[データの入っているディレクトリ]は、

で指定したディレクトリから数えてどこにあるかの相対的な位置になります。前後に/(スラッシュ)は不要です。

次に、ターミナル上に、下記の表示が出ます。

これをそのままブラウザに貼り付けるのではなく、↓こっちを貼り付けることでTensorboardによるグラフィカルな表示を確認できます。


こんな風な表示も見ることができます。

LINEで送る
[`evernote` not found]
LinkedIn にシェア

【エラー】NameError: name ‘xrange’ is not defined

NameError: name 'xrange' is not defined

Pythonのバージョン違いのエラーのようです。

Python3からは、

のような、xrange関数が廃止されrangeになったため、古いプログラムを現在のPythonのバージョンで動かすとこのようなエラーが出るようです。

1、プログラム中のxrange関数を全てrangeに入れ替える、
2、Python3環境をPython2環境にして実行する。

のどちらかでエラーが解決します。

1の場合は、
プログラム中の関数の中の、

を、エディタ上でコマンド+fで検索し、全て

にリプレイスすれば良いです。

2の場合は、
今のPython3環境のパッケージのバージョンを色々変えるのは大変なので、
新しい環境を作ったほうが早いでしょう。

LINEで送る
[`evernote` not found]
LinkedIn にシェア

ターミナルの背景と文字色の変え方。

ターミナル 環境設定 プロファイル

ターミナルを開くと白背景がデフォルトで、目が疲れるし変えたいなと思ったことはないでしょうか。

ターミナルの背景や文字色は、
1、ターミナル→環境設定→インスペクタから変える
2、シェル→インスペクタを表示→インスペクタから選択

の2通りの変え方があります。どちらも簡単ですが、1の方法は、次に開いたときも設定が変わりません。2の方法は、次に開いたときは設定が戻ります。

それでは、解説します。

1、ターミナル→環境設定→インスペクタから変える

まずメニューバーのターミナルから環境設定を選択します。
ターミナル環境設定

次に、プロファイルを開き、好きな設定を選び、左下のデフォルトを選択すると、次に開くときも同じ設定でひらけます。自分で自由に色を変えることもできます。
ターミナル 環境設定 プロファイル

2、シェル→インスペクタを表示→インスペクタから選択

こちらは、メニューバーのシェルからインスペクタを表示を選択します。
ターミナル インスペクタ

次に、プロファイルから好きな設定を選ぶだけです。すぐに反映されますが、次回ファイルを開いたときは、この選択は引き継がれません。

ターミナル インスペクタ

以上、ターミナルの背景と文字色の変え方でした。

LINEで送る
[`evernote` not found]
LinkedIn にシェア

5GHz映像FPVのドローンを飛ばすまで 免許証、申請、免許状周辺の話。

この記事では、「FPV(First Person View)のドローンを飛ばしたい!!」という方向けに、どんなことが必要かを書いています。

私自身がゴーグルをつけたドローンレーサーに未来感を感じていろいろ調べ始めた中で、間違った情報や適当まとめサイト、アマゾンのレビュー上の情報などに混乱した経緯があるので、なるべく正しく書いていこうと思います。

そもそも、FPVドローンとはこの記事では、5.8GHz帯の電波を利用して映像を送受信して操作するドローンと定義します。
この5.8GHz帯の電波には、アマチュア無線4級以上の免許の他に、電波を送信するドローンに対して無線局の登録が必要になります。ドローンを操作するコントローラーとなるプロポの電波は、2.4GHz帯でこれについては免許や登録はいりません。(2.4GHzは、いわゆるWiFi電波帯)
また、映像を2.4GHz帯の電波で送受信することは可能ですが、FPVドローンとしては画像の遅延が発生するために操作不可能となります。この電波利用に関しては、200g以下などの条件は特に関係ありません。
これらのことを知った上で、アマゾンのドローンのレビューを見ると面白いです。
アマゾン「検索:ドローン」

ということで、FPVドローンレースをするには、アマチュア無線4級の資格と、使用するドローンに対して無線局の開局が必要です。

上記を踏まえてこの記事では、下記の順番でFPVドローンレーサーまでの道のりを記載します。

1、ドローンの種類を決める

FPVドローンを、Tiny Whoopなどの小さいドローンで始めるか、本格的なレースドローンで始めるかを決めます。私が一番時間がかかってしまったのはこれです。もちろん、どちらもFPVドローンなので免許と手続きが必要です。どっちがどっちでという説明よりも、動画を見てもらえれば一目瞭然なのでYouTubeを貼っておきます。
Tiny Whoop

レースドローン

Tiny Whoopは屋内でも飛ばせるので、首都圏でも広まりつつあります。レースドローンは200gの上限を超えてしまうのと、速度も170km/hを超える機体もあることから、広い河原や山や広い倉庫とかではないと飛ばせるところが限られます。
ただ、世界的にはレースドローンのイベントは賞金総額1億2千万円のドバイのレースや、今年は韓国レースに日本人が参加するなどの広まりを見せています。

【優勝】岡聖章 決勝飛行映像 | ジャパンドローンチャンピオンシップ in ハウステンボス FPVドローンレース部門

【世界最速】ドローン大会優勝者15歳のフライト【賞金1億1300万】

ちなみに、小型のFPVドローンには、下記のような撮影の可能性も秘められています。大型撮影ドローンにはできない撮影ができます。

オンナノコズ:”Onnanocos” × Micro Drone

で、決まったらドローン本体は早めに購入してください。ドローンについてくる送信機の系統図というものが、ドローンを総務省に申請する時に必要となります。

2、アマチュア無線4級を取得する

これはもうやるしかないです。資格取得には、下記の2通りあります。
・勉強をして試験に合格する。
・養成課程を受講する。
日本無線協会

試験に合格して取得を狙う場合は、テキスト過去問を勉強して受験となります。60〜70%くらいの合格率です。私は、テキストを勉強したのちに、過去問に取り組みましたが、理解より効率的な合格を狙うなら過去問のみで良いと思います。
わからないまま、答えだけ覚えても不安な方はテキストも学習すれば良いと思います。
ちなみに、過去問の中からほぼ丸っと同じ問題が出るので、内容は難しくても答えはわかるという状態になると思います。
私が購入したのは下記でした。2週間前からテキストをパラパラ読み始めて、途中から焦り始めて、半日x4日は勉強しました。焦った割には、問題がそのままだったので当日は大丈夫でした。
試験は、午前中にあり、1時間後には発表され免許の申請をその場で行えます。1〜2週間で免許が届きます。

3、総務省 電波利用 電子申請・届出システムLiteでいろいろする

まず、こちらの総務省 電波利用アマチュア無線4級の免許を受け取ったら電子申請・届出システムLiteで、新規ユーザー登録を済ませてください。
ユーザーIDが電子申請なのに郵送で届きます。割とすぐに。(1〜2日でした)

次に、このサイトで、無線局の開局申請を、途中までします。途中まで行うと、その履歴をzipファイルで自分のMacやPCに保存できます。
このzipファイルを使って、技術基準適合の保証書をゲットします。
JARD(一般財団法人 日本アマチュア無線振興協会)のサイトで、開局申請(途中)zipファイルを提出して、技術適合保証を受けます。

1週間くらいで、技術基準適合の保証書がメールでPDFファイルになって届くので、再度総務省 電波利用 電子申請・届出システムLiteにて、開局申請(途中)zipファイルをアップロードして途中から申請を再開します。
この時に、保証書のPDFファイルを追加ファイルとしてサイト上にアップロードして、申請を完了させます。

これで、2〜3週間待てば、ドローンから5.8GHzの映像を乗せた電波を発射できるようになります。

ちなみに、下記のようにMacで申請できるかチェックしてみたところできなそうな表示が出ますが、普通に最後までエラーなく進みました。
電波利用申請Macでも申請できました

LINEで送る
[`evernote` not found]
LinkedIn にシェア

【エラー】TypeError: (‘Keyword argument not understood:’, ‘data_format’)

TypeError: ('Keyword argument not understood:', 'data_format')

以前作成した画像分類機を起動したところ下記のエラーが出てしまった。

この対処法を探してみると、
stackoverflowのサイトに同じエラーの投稿があった。
https://stackoverflow.com/questions/50830736/typeerror-keyword-argument-not-understood-data-format

Kerasのバージョン不一致によるエラーとのこと。解決策として、作成済みファイルを作った時のKerasと、このファイルを実行しようとしている時のKerasのバージョンを合わせることでエラーが解決するらしい。

リンク先のサイトでは、

こちらの実行で、Kerasを最新版にアップグレードすることで解決するとのこと。
で、私の環境では、以前の実行しようとしているファイルを作成した時のKerasのバージョンが調べられず、作った日時はわかっていたので、その時の最新のKerasのバージョンを予測して、Kerasをインストールしなおしたがエラーは変わらず。

一応、Kerasのバージョンを遡って実行した方法を書きます。

Kerasのバージョン確認

Kerasをアンインストール

Kerasのバージョン指定してインストール

で、拒否される場合は、

と、

をつけて実行する。

他のライブラリのバージョン確認やインストールについては、
Python、TensorFlow周辺の環境設定まとめを参照。

結局、Pythonの環境を現在の最新のバージョンで作り直し、KerasやTensorflowなどをインストールして、以前のKerasを用いて作ったファイルを作り直した。その後、同じ実行環境で、画像分類機を実行したところ成功した。

このような、バージョン管理については、成功した環境を、

これで書き出したあとに、.txtファイルに保存しておき、再現したいときに

これを実行して一括インストールすることでうまくいくと思う。
このrequirements.txtの書き方は、

このように羅列する。

他にも似たようなエラーの投稿を見つけた。
こっちは、末尾の文字列が、data formatではなく、nb depthになっている。
https://stackoverflow.com/questions/44135232/keras-typeerror-keyword-argument-not-understood-nb-depth

この場合は、カーネルサイズを指定する必要があるとのこと。

「フィルタの数の直後にカーネルサイズを指定する必要があります。たとえば、次のようになります。」

LINEで送る
[`evernote` not found]
LinkedIn にシェア

Python、TensorFlow周辺の環境設定まとめ

tensorflow

Environmentを有効化

例、$ source activate tf140

Pythonのバージョン確認

TensorFlowのバージョン確認

Kerasのバージョン確認

Kerasのバージョン指定してインストール

で、拒否される場合は、

と、

をつけて実行する。

最新版のKerasをインストール

Kerasをアンインストール

現在どの環境で作業しているか調べる

現在のpipバージョンを調べる

現在のPythonのバージョンを調べる

現在のパッケージのバージョンを調べる

パッケージのインストール

*バージョン指定したいときは、パッケージの名前の後に==バージョン

例、

パッケージのアンイントール

pipで一括インストール

*requirements.txtの書き方。
numpy==1.11.0
six==1.10.0
(成功したテスト時のバージョンを記録しておくと再現性が高まる。上記のパッケージのバージョンを調べる

で書き出して残しておけばOK)

ディレクトリの指定

ディレクトリの中身の確認

Tensorflowのインストール

LINEで送る
[`evernote` not found]
LinkedIn にシェア

Flaskで OSError: [Errno 48] Address already in use が表示された時の対処法。

The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

Flaskで

を実行したら、下記のようなエラーが出てしまいました。

 

解決策は、該当のprocessIDをオフにすれば良いらしいです。
まず、processIDを下記のコマンドで調べます。

*5000の部分は、http://127.0.0.1:5000/の5000を開きたい場合は、5000を記述します。他の数列の場合は、それに置き換えてコマンドを実行してください。

このコマンドを入力すると、

OSError: [Errno 48] Address already in use

このように、processIDを調べることができます。調べた数列を、下記のコマンドのprocessIDの部分と置き換えて入力するとオフにすることができます。

例、

 

killコマンドがちょっと怖いですが、思い切ってやってみたら解決しました。

LINEで送る
[`evernote` not found]
LinkedIn にシェア

Deep Learning(深層学習)で画像分類機を作成 その3

前回の「Deep Learning(深層学習)で画像分類機を作成 その3」でAnacondaを準備し、EnvironmentsにTensorFlowをインストールしました。

PythonやAnacondaをすでにインストールしている場合は、余程メモをつけたり記憶力がよくないと、色々やっているうちにどの環境に何をインストールしたかわからなくなることもあります。

そんなときは、ターミナルから

を打ってみましょう。Anacondaの他にも過去に設定したことのあるディストリビューションも一覧できます。
ここで現在の環境は、環境名とディレクトリの間に「*」が表示されています。

 

で、この表示の中から、前回使用した環境を選んでアクティベートします。

xxxは前回の「tf140」を選択したい場合は、

とコマンド入力を行えば、その環境に切り替わります。

*Windowsの場合は、

と、

は不要です。

 

また、AnacondaやPythonのバージョンをアップデートしたい場合は、

など、それぞれ必要に応じて行います。

LINEで送る
[`evernote` not found]
LinkedIn にシェア

Deep Learning(深層学習)で画像分類機を作成 その2

Anaconda

今回は、AnacondaでTensorFlowを開発するための環境設定を行います。

Anacondaのインストールが完了して開くと、Anaconda Navigatorのホーム画面が表示されます。

Anaconda Environments

次に、Environmentsを開き、環境を設定します。下方にあるCreateのアイコンをクリックしてください。

Environments Create

環境を作るため、Nameにわかりやすい名前(今回はTensorFlowのバージョン1.4.0を使用するためtf140と入力します)、PackagesはPythonにチェックを入れて、バージョンを選択します。今回は、3.6にします。(*Pythonは2系と3系で互換性がないため、書籍やウェブを参考に開発を進めるときは、このバージョンが何で開発されているかに注意が必要です。)

設定が終わったら、Createをクリックすると新しいEnvironmentsが1つ追加されます。少し時間がかかるので待ちましょう。

Anaconda Environments

Environmentsが追加されたら、▶︎のアイコンをクリックします。

Open Terminal

そうすると、上記のポップアップが開くので、Open Terminalをクリックします。

 

Terminal

ターミナルが開き、最後の行を確認すると先ほどEnvironmentsの設定でNameに入力した文字列が丸括弧の中に表示されています。(tf140)

もし、pipが最新版じゃない場合は、

でアップグレードできます。ここで、TensorFlowがインストールできたかどうかを確認するため、

とコマンドを打ち、Enterを押します。
すると、Pythonの対話的な実行環境に入ることができます。

とコマンドラインが出るので

と入力します。

しばらくして、このようにコマンドラインが表示され入力待ちの状態になれば、tensorflowのインストールは完了です。

と入力して Pythonを終了し、次に

と入力しコマンドプロンプトを終了します。

以上で、開発の準備が完了です。

 

再開するときは、AnacondaのEnvironmentsから、該当のEnvironmentを開きOpen Terminalを選択し、Terminal上で

とコマンドすることで再開できます。

LINEで送る
[`evernote` not found]
LinkedIn にシェア