PythonMania

普段はロボットとAIを組み合わせて色々作ってます。Python関係以外も色々投稿していくと思います。

Python2.7でtensorflow-gpuを動かしたかった。

f:id:mizuhiki0111:20180809185948j:plain

 

 

 

最初に書いておきますが、この記事はうまく行かなかったパターンをメモしたものです。別のやり方で成功したらまた記事にまとめます。

 

 

以前SSD_kerasとpythonSDKを使い、Pepperのカメラでリアルタイム物体検知を試してみました。Pepperのカメラで取得した動画は非常に遅かった(パラパラ漫画みたいな感じ)ので、tensorflowをcpu→gpuに変更して試してみた時のメモです。

(Pepperのカメラ自体のfpsが最大30なのでそこが原因だと思うのですが、PCでの動画処理もGPUを使えば少しは速くなるかなと思って試してみました。)

 

 

開発環境

Windows10(64bit)

 

PythonSDK

 

Python2.7

 

tensorflow1.0.0

 

keras1.2.2

 

OpenCV3.1.0

 

 

まず前提としてPythonSDKはPython2.7で動くように作られています。

 

先に結論を書くと

 

1.Windowsの場合、tensorflowはpython2系でサポートされていないのでSSD_kerasが使えない

 

2.仮想環境でWindows以外の環境(Ubuntu等)を作った場合、GPUを認識しない

 

この2点で引っかかり、最終的にうまく行きませんでした。

 

 

試してみたことを下にまとめておきます

 

 

①WSL(Windows Subsystem for Linux)を使い、Ubuntu環境を構築したうえでtensorflow-gpuを動かす

 

→tensorflow-cpuは動いたのでPepperとssd_kerasを連携させることはできました。

 ただWSLで作成したUbuntu環境でGPUを認識することができず。

 

 

VirtualBoxUbuntuの仮想環境を構築

 

→そもそも仮想環境ではGPUを認識することはできない模様、、それすら知らなかった、、

 

 

nvidia-dockerでUbuntuを利用する

 

→Dockerは仮想環境とは違うみたいな記事を見たので行けるかも?と思ったけどダメでした。

そもそもDocker-toolkitを使いWindowsにDockerを入れる場合、dockerのホストOSはVirtualBoxで作られるLinux環境になるみたい。これだと②と同じことになる。

色々調べてみたら、もともとPCにLinux環境がある場合、そのLinuxがDocker上のホストOSとなるので、ホストOSにnvidiaのドライバー等を入れれば使えるっぽい。

 

 

Windows上で動かしてみる

 

→使用したWindowsは64bitであるが、PythonSDKは32bitしか対応していないので新たにPython2.7の32bitをダウンロードしてきて試してみた。

PythonSDKは無事に動いたが、tensorflowがインストールできずにつまずいた。

tensorflow、LinuxではPython2系でも使えるのに、WindowsではPython3系しか対応してないのなんでなんですかね、、、

 

 

 

 

こんな感じで初心者なりに色々試してみましたが結局うまく行っていません。

そもそもPepperのカメラの精度の問題で、CPU/GPUを変えてもそんなに早くはならないのかな、とか思ってるんですけど少しでも変わればいいなと思ってるので、また別のやり方を試してみます。(WindowsLinuxのDualbootにするとか、、)