mac に python3 + OpenCV3 の環境をつくる(できてない)

Tensorflow で機械学習を試してみてると 画像処理をするためにpythonOpenCVを使う必要が出てきます。

新しいバージョンを使いたいということでpython3, OpenCV3 で環境をつくりたかったのですが、 うまくいきませんでした。

環境

pyenvでpython 2.7と3.6を切り替えらるようにしてpython3.6にした状態で OpenCV3 をインストールしたのですが、 Mac環境変数にpython2.7が残っているようで 1日かけて頑張ってみたのですが次のように python3.6ではなく、python2.7としてOpenCV3がインストールされてしまい、 うまくいきませんでした。

/usr/local/Cellar/opencv3/3.2.0/lib/python2.7/site-packages/cv2.so

Tensorflowを試しているネットの記事もPython2系のものが多いので あきらめて2.7で使うことにしました。

環境

インストール手順

brew update
brew tap homebrew/science
brew install opencv3
brew link opencv3 --force
cd /Users/<ユーザー名>/tensorflow/lib/python2.7/site-packages
ln -s /usr/local/Cellar/opencv3/3.2.0/lib/python2.7/site-packages/cv2.so ./

時間に余裕ができたらまたチャレンジします。

EC2のt2.microインスタンスのubuntuにTensorFlowをインストールしようとしたがスペックが足りなかった

EC2の無料トライアルにインスタンスをつくったので V1.0がリリースされたTensorFlowを動かしてみようとしたけど無理でした

スペック

インスタンス:t2.micro
OS:Ubuntu Server 16.04
vCPU;1  (2.5 GHz, Intel Xeon Family)
メモリ:1GiB
ストレージ:8GiB

やったこと

TensorFlow公式に従ってpythonのvirturalenv環境を作成 (Python 2.7.12がインストールされました)

$ mkdir tensorflow
$ sudo apt-get install python-pip python-dev python-virtualenv 
$ virtualenv --system-site-packages tensorflow
$ source ~/tensorflow/bin/activate
(tensorflow)$

TensorFlowをインストール

(tensorflow)$ pip install --upgrade tensorflow
Collecting tensorflow
 Downloading tensorflow-1.0.0-cp27-cp27mu-manylinux1_x86_64.whl (44.1MB)
   99% |████████████████████████████████| 44.1MB 59.3MB/s eta 0:00:01Exception:
Traceback (most recent call last):
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/basecommand.py",
line 215, in main
   status = self.run(options, args)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/commands/install.py",
line 335, in run
   wb.build(autobuilding=True)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/wheel.py",
line 749, in build
   self.requirement_set.prepare_files(self.finder)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/req/req_set.py",
line 380, in prepare_files
   ignore_dependencies=self.ignore_dependencies))
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/req/req_set.py",
line 620, in _prepare_file
   session=self.session, hashes=hashes)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/download.py",
line 821, in unpack_url
   hashes=hashes
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/download.py",
line 659, in unpack_http_url
   hashes)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/download.py",
line 882, in _download_http_url
   _download_url(resp, link, content_file, hashes)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/download.py",
line 603, in _download_url
   hashes.check_against_chunks(downloaded_chunks)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/utils/hashes.py",
line 46, in check_against_chunks
   for chunk in chunks:
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/download.py",
line 571, in written_chunks
   for chunk in chunks:
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/utils/ui.py",
line 139, in iter
   for x in it:
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/download.py",
line 560, in resp_read
   decode_content=False):
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/response.py",
line 357, in stream
   data = self.read(amt=amt, decode_content=decode_content)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/response.py",
line 314, in read
   data = self._fp.read(amt)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.py",
line 63, in read
   self._close()
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.py",
line 50, in _close
   self.__callback(self.__buf.getvalue())
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.py",
line 275, in cache_response
   self.serializer.dumps(request, response, body=body),
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.py",
line 55, in dumps
   "body": _b64_encode_bytes(body),
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.py",
line 12, in _b64_encode_bytes
   return base64.b64encode(b).decode("ascii")
MemoryError

モリーエラーみたい

https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0-cp27-none-linux_x86_64.whl

でもダメ

メモリが足りないようなので500MBのスワップ領域を作成

$ sudo dd if=/dev/zero of=/swapfile bs=1024 count=524288
$ sudo chown root:root /swapfile
$ sudo chmod 0600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile

もう一度TensorFlowインストールしてみる

(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0-cp27-none-linux_x86_64.whl
:
Exception:
Traceback (most recent call last):
  File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/req/req_set.py", line 784, in install
    **kwargs
  File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/req/req_install.py", line 851, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/req/req_install.py", line 1064, in move_wheel_files
    isolated=self.isolated,
  File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/wheel.py", line 377, in move_wheel_files
    clobber(source, dest, False, fixer=fixer, filter=filter)
  File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/wheel.py", line 323, in clobber
    shutil.copyfile(srcfile, destfile)
  File "/usr/lib/python2.7/shutil.py", line 84, in copyfile
    copyfileobj(fsrc, fdst)
  File "/usr/lib/python2.7/shutil.py", line 52, in copyfileobj
    fdst.write(buf)
IOError: [Errno 28] No space left on device

ディスク容量が足りなくなった

以前挫折したCourseraの機械学習コースを再開

機械学習を勉強しはじめたときに始めて挫折したCourseraの機械学習コースを shu223さんの記事を読んで再開。 まだ教師あり学習についての最初の動画を見たとこだけど。 2ヶ月で最後まで行きたい。

aws ec2のubuntuにMacからvncで接続する

昨日Vagrantでつくったubuntu環境にMacからvnc接続する方法について書きました。 今日はec2上につくったubuntu環境に接続する方法を書きます

1. ec2にubuntuインスタンスをつくる

ec2のアカウント登録については省略しますが、1年間無料トライアルがあるので私は無料で使っています 私は次のインスタンスを選択しました

Ubuntu Server 16.04 LTS (HVM), SSD Volume Type

2. vnc接続を許可するセキュリティグループを追加

ec2にvnc接続を許可するセキュリティグループを作成し、先ほど作成したインスタンスのネットワーキングの設定に追加します

3. デスクトップ環境を作成する

ec2にSSHで接続し、デスクトップ環境を作成します

$ sudo apt-get update
$ sudo apt-get install xfce4
$ sudo apt-get install ubuntu-desktop

4. vncサーバーを立てる

vncserver をインストール

$ sudo apt-get install vnc4server

vncserver起動

$ vncserver :1

パスワードを設定

$ vncpasswd

起動しているか確認

$ netstat -an | grep 5901

vncの設定を次に変更

vi ~/.vnc/xstartup
#!/bin/sh

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &

vnc再起動

$ vncserver -kill :1
$ vncserver :1

5. macvncクライアントで接続

Finderの「移動」「サーバへ接続」から「vnc://192.168.33.10:5901」に接続すると

f:id:juncollin:20170218140712p:plain

完成

VagrantとVirtualboxでubuntu環境を構築し、Macからvnc接続する

vncを使ってみたかったのでMacVagrantVirtualboxubuntu環境をつくり、vncで接続できるようにしました。

macOS 10.12.3 で作業しました。

Mac上にubuntu環境構築

1. Vagrantインストール

次からVagrantをダウンロード・インストール https://www.vagrantup.com/downloads.html

2. Virtualboxをインストール

次からVirtualboxをダウンロード・インストール https://www.virtualbox.org/wiki/Downloads

3. ubuntuセットアップ

ubuntuインスタンス作成

$ mkdir 任意のディレクトリ    
$ mkdir ubuntu  
$ cd ubuntu  
$ vagrant init ubuntu/trusty64
$ vagrant up

インスタンスに接続

$ vagrant ssh

デスクトップ環境を作成

$ sudo apt-get update
$ sudo apt-get install xfce4
$ sudo apt-get install ubuntu-desktop
$ exit

ホストからゲストにつなぐためのプライベートネットワークを設定

$ vi Vagrantfile

Vagrantfileの次のコメントアウトをはずす

config.vm.network "private_network", ip: "192.168.33.10"

インスタンス再起動

$ vagrant reload

vncサーバ構築

vncserver をインストール

$ sudo apt-get install vnc4server

vncserver起動

$ vncserver :1

パスワードを設定

$ vncpasswd

起動しているか確認

$ netstat -an | grep 5901

vncの設定を次に変更

vi ~/.vnc/xstartup
#!/bin/sh

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &

vnc再起動

$ vncserver -kill :1
$ vncserver :1

macvncクライアントで接続

Finderの「移動」「サーバへ接続」から「vnc://192.168.33.10:5901」に接続すると

f:id:juncollin:20170218140712p:plain

完成