活動報告No.138 進捗状況 + α ~ ROBO-ONE auto
カテゴリ: 未分類

どうもおはこんばんにちは、無事に夏休みに入れた2年のマエダです。


学期末考査は今までで一番きつい科目群でしたが、単位はありそうです。




進捗状況の前にいうことがあるのですが、それは、


OBの先輩方がサポート募金をしてくださったようです。

感謝っ・・・

圧倒的 感謝っ・・・!!!



1年生が機体つくるのに予算請求しておけばよかったモノがちょいちょいあるので、そこに行くのかな?



さてさて、今回は私が夏休みに入ったというわけで、夏休み明けに控える2足歩行ロボット大会「ROBO-ONE」に向け、今の進捗状況と、この夏にやることを整理して行こうかなと思います。


去年の夏休みでは、1年性の私は無計画でロボ以外のいろんなことをやっていたので、時間を無駄に浪費した感がありました。


そんな堕落した夏を送るなら、大学に来ている意味はないので、自分で夏休みの課題を課そうと思います。


ヒュー研でも夏休みの一番最初の会議で、各々が今季やることを明確にした方が今後の活動のためになるんじゃないかなと思いますが、果たして、全然やらなかったわー はっはっは! となる人は何十人いようか。。。



1、目指すもの



大きな目標としては、今度の9月中旬にある「ROBO-ONE auto」に出場することです。autoの方に興味があるので、まあそっち目指します。


本当は自分で機体を製作してそいつに処理エンジン載せようと思っていたのですが、部内にあるサーボモータの個数が足りないため、既存の機体を拝借して、それに無理やり処理エンジンを載せます。


ロボットの認識には位置センサなどは使わず、カメラで認識しようと思います。


「ROBO-ONE における操作」

人間が状況判断 → 無線コントローラで動作コマンド送信 → 機体が動く


というのが、


「ROBO-ONE auto における操作」

カメラの映像から、ラズパイが状況判断 → ラズパイがRCB4HVにコントーラコマンドをシリアルUSBアダプタ経由で、コントローラコマンドを送信 → 機体が動く


という手順になります。



2、前期の間にやったこと



前期は初めての実験の授業があったことで自分のやりたいことがなかなか進まない数ヶ月でしたが、夏休みにやることが明確・細分化できるレベルまでは達しました。


其の一(画像処理)

とりあえずLinuxでPython(←プログラミング言語)を使って画像処理をする方法を確立しました。処理部はラズパイ(もしくはラズパイと同サイズの高スペックシングルボード)に絞り、USB端子からカメラモジュールにアクセスし、映像をリアルタイムに入手。リアルタイムの映像に対して処理をかけることができました。

ほんで、色検出や円検出、ステレオカメラによる距離検出、などなどのコードを記したものをまとめました。


其の二(機械学習の勉強)

機械学習のお勉強をしていました。ロボットをカメラで認識するには、カスケード分類器か機械学習による学習モデルを使うかする必要があります。

カスケードでもまあいいのですが、個人的に機械学習の方が興味あったので、その学習モデルを使います。さらにいうと、畳み込みニューラルネットワーク(CNN)というディープラーニングの一種を使って学習モデルを生成したいです。

現状は単純な機械学習の勉強と、そのコーディングの練習を大体終わらせた感じです。機械学習ライブラリは先日のブログで出した、Google参加のDeepMind社が提供しているTensorFlowを使っています。

CNNは単純な機械学習と違って次元下げるのに特徴量を失わないように全結合層以外の様々な層と、それらの組み合わせがあります。ここら辺がまた複雑なので、理論よりとりあえずTnsorFlowのCNNチュートリアルをやって、動作を体感してから理論を学んでいく方針でやっていこうと思います。


其の三(入力データの収集)

機械学習は、学習に必要なデータ(入力データ)が集まって初めて成り立ちます。そもそもデータがなければどうにもならない。しかも、私の考えている方法だと、その入力データは全て正方形で同サイズ(ピクセル)である必要があります。

その肝心な入力データは、ロボットバトルの動画から一定間隔で静止画を切り出して、それを正方形にトリミングすることで得ようと考えました。

実は、ヒュー研の先輩方がその昔、各大会のロボットバトルの様子を動画として記録し、それらをヒュー共有のPCに保存されていたようです。そして、その記録伝統はちゃんと今でも受け継がれ、今のヒュー研は、大量の動画データが蓄積されています。何百GBあるんだろう。。


とりあえず、この伝統を始めた先輩にはお礼を申し上げたいです。


そのおかげで機械学習に必要なデータは潤沢にあります。このデータという財産は、多分私が一番ありがたく感じていると思います。

圧倒的感謝。


個人的に使っていた240 GBのポータブルSSDにそれらの動画データのごく一部を複製し、家に持ち帰って自分のPCに入れていました。



3、夏休みの間にやること



其の一(入力データの加工ソフト作成)

動画データから静止画を抽出、ほんでそれを人間が一旦トリミングと其の画像が何であるかということを示すラベル付けを行います。さらにトリミングした画像へアクセスする絶対(または相対)パスと、それに対応するラベルをスペースを一つ挟んでテキスト形式にまとめます。一つのデータに対して一行書き込むことで、学習の時にちゃんと機械が答え合わせしてくれ(ると思い)ます。


其の二(畳み込む)

前述でちょろっと述べたので、簡単にいうと、TensorFlow使ってコーディングして学習させて分類器をつくります。


其の三(ラズパイで使う)

学習モデルができても、ラズパイで使えなくては実装不可能です。問題はその学習モデルの扱い方です。カスケード分類器はXML形式で読み込めば、対象物のXY座標と大きさ(横幅と縦幅)を配列で返してくれますが、TensorFlowの学習モデルはどう扱えばいいのかわからないです。

正直ここが一番の難関になりそうな気がします。小耳に挟んだ程度だと、TensorFlow形式からプロトコルバッファ形式に変換して、それを読み込めばいけるとか、いけないとか。。。

計算資源が制限されているスマートフォンなどでもリアルタイム認識ができる方法があるようなのですが、それどうやってやるのかわからないです。


其の四(チューニング)

夏休み明けは地獄の実験が始まり、本番までの日数は残りわずかなので、上記の其の一~三までは8月中に終わらせたいところです。

チューニングでは、認識結果から攻撃までの行動を決定し、それをRCB4HVにコントローラのボタンコマンドを送信するのに最適なパラメータを決めます。ステージから落ちないようにするのに単眼ビジュアルオドメトリという方法を採用したかったのですが、それをしているともう本格的に時間がなくなりそうなので、そこだけPSDセンサを使おうかなと思います。



4、データの公開範囲に関して



かなり重要な話ですが、もしこのプロジェクトが成功を収めたら、実際に使用した学習用オリジナルデータ、学習モデル、学習のレイヤー構造、行動決定パラメータなどの情報を公開するか否かに関してです。


先に言うと、現段階の判断では、公開しないと思います。


と言うのも、上記のデータを公開してしまうことは、またハードの戦いになり、すなわちそれは札束の殴り合いを意味すると考えています。それならもう、autoである必要ないよねっていう。なので、開発環境のセットアップや学習モデルの作り方をブログにして公開することは可能性としてありますが、実装データは一切公開しない方針で行こうと思います。



5、さいごに



今週はオープンキャンパスがあることもあり、機体持ちの人は機体の調整に取り掛かると思われるので、思われるので、、最近できた(改良された)機体のご紹介と製作者へのインタビューをブログにしようかな。。調整に取り掛かると思われるので。

ほんじゃまったの〜(o・ω・)ノ




スポンサーサイト
編集 / 2017.07.23 / コメント: 0 / トラックバック: 0 / PageTop↑
活動報告No.137 Windows10 にTensorflow(GPU版)を入れるまで
カテゴリ: 未分類
どうもおはこんばんにちは、ロボットユーザの大半を置き去りにしていくのを省みないでシステム系のブログばかり書いている2年のマエダです。

某氏が「最近ヒュー研らしいロボットわちゃわちゃのブログ見ないなあ」とつぶやかれておられたようなのですが、なに、気にすることはない。システム系のことのほうがネタあるんだもん。

tensorflow.jpg

さてさてタイトルだけで本記事が何しようかわかっている人はほとんどおらんと見た。というわけでザっと概要説明します。

Tensorflow(テンソルフロー)は、簡単に言うとAIを効率的につくるためのソフトウェアのことです。AIと聞くと何を思い出しますかね、最近ではGoogleのつくった AlphaGo が世界トップクラスの囲碁棋士を軒並み打破していますね。あれは全ての手を片っ端から走査して最適解を求めているのではなく、機械が今まで経験して得た技能により最適らしい解を打っているのです。

人間で頭の要領がいい人とそうでない人がいて、それはもはや教育でどうこうなるようなものではあまりないですが、機械は教育次第で要領がよくなったり、逆にバカにだってなれちゃいます。Tensorflowはそんな機械を賢くする道具なのです。

本記事ではWindows10とかいう環境にTensorflowを使えるところまでを紹介します。

ネット上で「Tensorflow」て調べると「Tensorflowを使ってみた」みたいな記事が多く、導入まではめっちゃ簡素な記事が多いので、本記事が導入の参考になればと思います。順番があって結構面倒。

そんじゃやっていきましょう。



必要な環境

OS:Windows10 (←S以外で)
CPU:それなりのモノ
GPU:NVIDIA製で、Compute Capability (*1) が3.0以上のモノ
メモリ:8 GBは欲しい

(*1)
Compute Capabilityに関しては以下のURLよりご覧になれます。こいつが具体的に何なのかはプログラムというかシステム系の勉強している人以外に話しても簡潔に収まらないのでスルー。

Compute Capabilityのチェック:
https://developer.nvidia.com/cuda-gpus


当方の環境

各操作の例として画像を添付するので、参照までに。

OS:Windows 10 Education
CPU:それなりのモノ
GPU:Quadoro M4000 (Compute Capability 5.2)
メモリ:多め



以下は全体の流れです。順番通りにやらないとファイルが見つからなかったりTensorflowのインストールに失敗したりします。

1、GPUのドライバインストール
2、CUDA (*2) のインストール
3、cuDNN (*3) のインストール
4、Anaconda (*4) のインストール
5、Tensorflowのインストール
6、完成

(*2)
CUDAはGPUでいろいろな演算を並列で処理してもらうための基礎的なソフトです。これによって計算能力をさらに上げることができます。

(*3)
cuDNNはNVIDIAが提供しているDeep Learning (深層学習) 用のライブラリです。本記事で扱うTensorflowやその同類のCaffeやMicrosoft Cognitive Toolkitなどの演算速度を向上してくれます。

(*4)
ここにきてやっとですが、プログラミング言語はPython 3.5を扱います。AnacondaはPython周りの環境をGUIで整えられるソフトです。ぶっちゃけコマンド一発でできるところをコイツだとあーだこーだしなくちゃならないので、コマンドでやりたい人はコマンドでやればいいと思います。私はGUIでやるところとCUIでやるところで分けていますが。



詳細な手順

1、GPUのドライバインストール

以下のURLよりNVIDIAから自分のGPUに合ったドライバをダウンロードしましょう。ダウンロードタイプはODEの選択でOK。ちなみにもうすでに入っている人はこの手順を飛ばしてもらっても構いません。

GPUのドライバ:
http://www.nvidia.co.jp/Download/index.aspx?lang=jp

私の環境では以下のようにして「検索」ボタンを押し、「ダウンロード」しました。

cap01_convert_20170704172901.png

ダウンロードが終わったらインストールして一度PCを再起動です。



2、CUDAのインストール

以下のURLよりNVIDIAからBase Installerをダウンロードしましょう。ダウンロードサイズが1.3 GBと大きめなので、回線が細い環境だと厳しいです。

CUDAのダウンロード:
https://developer.nvidia.com/cuda-downloads

2017/7/2現在ではclick cuda_8.0.61_win10.exeが最新でした。ちゃんと8.0系のCUDAですね。

私の環境では以下のようにして「Download (1.3 GB)」を押しました。

cap02_convert_20170704173112.png

ダウンロードが終わったらインストールして一度PCを再起動です。



3、cuDNNのインストール

以下のURLよりNVIDIAからダウンロードしたい所なのですが、

cuDNNのインストール:
https://developer.nvidia.com/cudnn

cuDNNをダウンロードするには、NVIDIAに開発者として登録せねばなりません。まずはNVIDIA DEVELOPERとヘッダに書いてあるページ(↑のリンクからでもおk)に行って、ヘッダの1番右に「Log in」と書いてあるのでそこ押して登録します。NVIDIA Developerに登録ってなんか音だけ聞くとカッコよいですね//

んで、NVIDIA Developerに登録したら
I Agree To the Terms of the cuDNN Software License Agreement
のチェックボックにチェックを入れて、よくやくcuDNNのダウンロードリストがでてきます。

とここで注意点なのですが、以下の画像のように、

cap03_convert_20170704173122.png

「Download cuDNN v5.1[Jan 20, 2017], for CUDA 8.0」の「cuDNN v5.1 Library for Windows 10」をダウンロードしてください。ここでCUDAのバージョンを前項と合わせてください。

なんか v6.0 ではAnacondaの仮想環境上では対応していないとか何とかでTensorflowが入らなかった気がします。setuptoolsがダメなのかそこら辺は確認取っていないです。サーセン

ダウンロードしたものはZIPファイルなので、そのZIPファイルを解凍します。
展開したやつの中には cuda というフォルダが一つ入っていて、さらにその中に bin, include, lib という三つのフォルダがあると思います。それぞれのファルダの中に入っているファイルを、

ローカルディスク(C:) > Program Files > NVIDIA GPU Computing Toolkit > CUDA > v8.0

の中の該当するフォルダに入れてください。入れ先のフォルダは前項で紹介したCUDAを入れないと出現しないので、必ずCUDAを入れてからこのcuDNNを入れるようにして下さい。


4、Anacondaのインストール

以下のURLよりAnacondaをダウンロードします。

Anacondaのダウンロード:
https://www.continuum.io/downloads

現在の最新版はAnaconda 4.4.0でPython 3.6まで使えますが、Windows版のみTensorflowが対応状態によりPython 3.5でのコーディングしなければなりません。MacとLinuxは最新版の3.6で使えるのにねぇ…。
Windowsは対応機器が安いために世間的に一般的なOSになったかもしれないですが、macOSは根底にあるのがUNIX系なOSなので、UNIXライクなLinuxと同時期に最新版に触れられるのはアドですわ。
お金が無尽蔵にあったらMacほしいなぁ。。あ、ちなみに私はMacBook AirとMac miniを所持しているので立派な林檎信者ですかね(違う)。



5、Tensorflowのインストール

さてようやくここまで来ました。先ほどインストールしたAnacondaにTensorflowをブチ込んでやるぜ^〜↑。

とりあえずAnacondaを起動!。Windows 10だと左下のWindowsマークを左クリックして、出てきた黒ウィンドウの左側のアプリ一覧からAnacondaのフォルダがあるはずです。

そのAnacondaフォルダを開いて、「Anaconda Navigator」というものを起動しましょう。他のはイジらなくていいです、rootで起動しちゃうので。

cap04_convert_20170704173134.png

初回起動時は結構時間かかりますが、コーヒーでも淹れて待ちましょう。

起動すると以下の画面が出てきます。

cap05_convert_20170704173143.png

まず左サイドの「Environments」をクリック!
すると以下のような画面が出てきます。

cap06_convert_20170704173153.png

ここでやる作業は、仮想環境というものを作ったり消したりと、それを整理するところです。

仮想環境ってなんぞ?てなりますよね。

さきほど、本記事ではプログラミング言語のPythonのバージョンは「3.5」でやっていくと言いました。しかし、今後もしかしたらPython 2.7であの作業やりたいなーっていう場面が出てきたとき、いちいちその度に合わんバージョンを削除しては別のバージョンを入れてっていう作業をやっていると非常に非効率なのです。

そこで役立つのが仮想環境。その名の通りですが、任意のフォルダごとに、プログラミング言語やライブラリのバージョンを設定できるのです。こいつは便利!

コマンドでやれば一発なのですが、今回はなるべくコマンドなしでやっていきたいと思います。最後にちょろっと出てくるくらいで。

んで、その仮想環境をつくるために[+]マークのある「Create」ボタンをクリックして、「Environment neme」に仮想環境の名前を入れます(なんでもいいです)。ここでは、「Tensorflow121gpuFC2Blog」という名前でやっていきたいと思います。ネーミングは以下を参照するとよいと思います。

Tensorflow:仮想環境内で使う機械学習ライブラリの名前。
121:今回はTensorflow 1.2.1 でやっていくので、そのバージョンをピリオド無しで。
gpu:TensorflowにはGPU版とCPU版があるので、それを明示的に記述。

ほんで「Python version」は 3.5 を選択!!

私の場合は以下のようになりました。

cap07.png

出来たら右下の「Create」を押しましょう。ここも結構時間かかります。

完了するとrootの下に先ほどの仮想環境が表示されるので、そいつをクリックして選択状態にしてください。すると右側に三角マークがあるので、そこをクリックして、「Open Terminal」を開きましょう。すると黒背景のテンション上がる画面が出てくると思います。

s_cap08.png

さて、この黒い画面にコマンドを打ち込みたいという衝動に駆られないわけもなく、今すぐコマンド打ちたいですよね。

じゃあとりあえず

> pip install --upgrade tensorflow-gpu

と打ち込んで、GPU版のTensorflowをインストールしましょう。(> ←これはTerminalの入力待ち状態のサインです)
一連のインストールが終わったら、最後に

FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。

などと出てくるかと思います。これは、Tensorflowが想定しているPythonのsetuptoolsのライブラリとpipで入れられたバージョンが異なるために出てきます。ので、

> pip install --upgrade setuptools

と叩いてインストールしましょう。

じゃあこれでTensorflowがPythonで使えるようになったのか確かめてみましょう。

> python

で、数行文字が出てくるので、その中で「Python 3.5.3」などと表示されていれば正常です。
こうするとPythonを実行できる環境に入ります。これを「Pythonの対話的実行環境」といいます。このときはさっきから使っている「>」ではなく、「>>>」で表すとします。

>>> import tensorflow as tf
>>>

このように入力待ちの状態になっていれば、Tensorflowのインストールに成功してます。
ちなみに対話的実行環境を抜けるためには

>>> exit()
>

で抜けられます。
Python 3系の文法知識がなければこの先に進みづらいですし、これ以上記事を伸ばすのも難なので今回はこれで終わりたいと思います。

では、よいTensorflow on Python ライフを!


〜 余談 〜
この余談は時間を空けて書いてあるので、本編と多少被っている事かもしれませんが、今回Windows10に機械学習の環境を整えることに対して意義を申し立てる人がいるかもしれません。
私もWindowsでこういう特殊なことするのは最新バージョンをいじれなかったりそもそもライブラリが対応してくれなかったりで、オススメはしないです。んで、Linuxで開発環境を整えようにしたのですが、、、色々と苦労しましてね。。
Ubuntu16.04LTSとCentOS7ででやろうと思ったのですが、どちらもグラボのドライバインストールでつまづいてできませんでした。
CentOS7には標準でNouveauというグラフィックドライバが入っていて、それ無効化してX Window止めてNVIDIAのドライバをインストールしようとしたら適応されませんでした。なんでやろなぁ。。
Ubuntuに関してはUnity(だったっけかな)という標準のグラフィックドライバが干渉しているとかいないとかで、NVIDIAドライバ入れたらログイン画面が無限ループされました。18.04LTSからはUnityではなくてGNOMEが復活するようなので、そちらが発表されたらまた試してみようと思います。




編集 / 2017.07.03 / コメント: 0 / トラックバック: 0 / PageTop↑
プロフィール

ヒュー研の中の人

Author:ヒュー研の人
このブログは東京電機大学理工学部ヒューマノイド研究部の公式ブログです。2012年から部に昇格しました!
その日の活動や大会の記録をできるだけ更新していきたいです!!

☆だいたい金曜日前後に更新します☆

FC2カウンター
カレンダー
06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
リンク
ブロとも申請フォーム
携帯でみるには↓
QR