Ubuntu 16.04 LTS
機械学習初心者がBash on UbuntuでTensorflowのcifar10を改造して自分用の画像分類機を作るまで
https://trapti.tech/blog/2093/
Abstruct
| ./r0.11 | cifar10_train.py cifar10_eval.py |
|||
| ./trainpic | 下位のディレクトリ名とディレクトリ数はtestpicと同じにします。 このディレクトリの数だけ分類数が存在することになります。 |
|||
| personA | ||||
| personB | ||||
| … | ||||
| ./testpic | 下位のディレクトリ名とディレクトリ数はtrainpicと同じにします。 このディレクトリの数だけ分類数が存在することになります。 |
|||
| personA | ||||
| personB | ||||
| … | ||||
| ./data | ||||
| ./cifar-10-batches-bin | ||||
| ./cifar10_train | ||||
| ./cifar10_eval |
| No. | Activity | 導入済み検査 | 導入方法 | 備考 |
| TensorFlowの導入。 | upgm@ubuntu64dl:~$ python Python 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow as tf >>> hello = tf.constant("Hello, Tensorflow!!") >>> sess = tf.Session() >>> print(sess.run(hello)) Hello, Tensorflow!! >>> tf.__version__ '0.10.0' >>> exit() upgm@ubuntu64dl:~$ |
# sudo apt-get install python-pip
python-dev # sudo pip install --upgrade pip # export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0-cp27-none-linux_x86_64.whl # sudo pip install --upgrade $TF_BINARY_URL |
upgm@ubuntu64dl:~$ sudo apt-get install
python-pip python-dev [sudo] upgm のパスワード: パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: libexpat1 libexpat1-dev libpython-all-dev libpython-dev libpython2.7 libpython2.7-dev libpython2.7-minimal libpython2.7-stdlib python-all python-all-dev python-pip-whl python-pkg-resources python-setuptools python-wheel python2.7 python2.7-dev python2.7-minimal 提案パッケージ: python-setuptools-doc python2.7-doc binfmt-support 以下のパッケージが新たにインストールされます: libexpat1-dev libpython-all-dev libpython-dev libpython2.7-dev python-all python-all-dev python-dev python-pip python-pip-whl python-pkg-resources python-setuptools python-wheel python2.7-dev 以下のパッケージはアップグレードされます: libexpat1 libpython2.7 libpython2.7-minimal libpython2.7-stdlib python2.7 python2.7-minimal アップグレード: 6 個、新規インストール: 13 個、削除: 0 個、保留: 356 個。 34.7 MB 中 29.8 MB のアーカイブを取得する必要があります。 この操作後に追加で 45.4 MB のディスク容量が消費されます。 続行しますか? [Y/n] y 取得:1 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libexpat1-dev amd64 2.1.0-7ubuntu0.16.04.2 [115 kB] 取得:2 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpython2.7-dev amd64 2.7.12-1~16.04 [27.8 MB] 取得:3 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 libpython-dev amd64 2.7.11-1 [7,728 B] 取得:4 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 libpython-all-dev amd64 2.7.11-1 [992 B] 取得:5 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-all amd64 2.7.11-1 [978 B] 取得:6 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 python2.7-dev amd64 2.7.12-1~16.04 [276 kB] 取得:7 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-dev amd64 2.7.11-1 [1,160 B] 取得:8 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-all-dev amd64 2.7.11-1 [1,000 B] 取得:9 http://jp.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 python-pip-whl all 8.1.1-2ubuntu0.2 [1,111 kB] 取得:10 http://jp.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 python-pip all 8.1.1-2ubuntu0.2 [144 kB] 取得:11 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-pkg-resources all 20.7.0-1 [108 kB] 取得:12 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-setuptools all 20.7.0-1 [169 kB] 取得:13 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 python-wheel all 0.29.0-1 [48.0 kB] 29.8 MB を 20秒 で取得しました (1,455 kB/s) (データベースを読み込んでいます ... 現在 175510 個のファイルとディレクトリがインストールされています。) .../python2.7_2.7.12-1~16.04_amd64.deb を展開する準備をしています ... python2.7 (2.7.12-1~16.04) で (2.7.11-7ubuntu1 に) 上書き展開しています ... .../libpython2.7_2.7.12-1~16.04_amd64.deb を展開する準備をしています ... libpython2.7:amd64 (2.7.12-1~16.04) で (2.7.11-7ubuntu1 に) 上書き展開しています ... .../libexpat1_2.1.0-7ubuntu0.16.04.2_amd64.deb を展開する準備をしています ... libexpat1:amd64 (2.1.0-7ubuntu0.16.04.2) で (2.1.0-7 に) 上書き展開しています ... .../libpython2.7-stdlib_2.7.12-1~16.04_amd64.deb を展開する準備をしています ... libpython2.7-stdlib:amd64 (2.7.12-1~16.04) で (2.7.11-7ubuntu1 に) 上書き展開しています ... .../python2.7-minimal_2.7.12-1~16.04_amd64.deb を展開する準備をしています ... python2.7-minimal (2.7.12-1~16.04) で (2.7.11-7ubuntu1 に) 上書き展開しています ... .../libpython2.7-minimal_2.7.12-1~16.04_amd64.deb を展開する準備をしています ... libpython2.7-minimal:amd64 (2.7.12-1~16.04) で (2.7.11-7ubuntu1 に) 上書き展開しています ... 以前に未選択のパッケージ libexpat1-dev:amd64 を選択しています。 .../libexpat1-dev_2.1.0-7ubuntu0.16.04.2_amd64.deb を展開する準備をしています ... libexpat1-dev:amd64 (2.1.0-7ubuntu0.16.04.2) を展開しています... 以前に未選択のパッケージ libpython2.7-dev:amd64 を選択しています。 .../libpython2.7-dev_2.7.12-1~16.04_amd64.deb を展開する準備をしています ... libpython2.7-dev:amd64 (2.7.12-1~16.04) を展開しています... 以前に未選択のパッケージ libpython-dev:amd64 を選択しています。 .../libpython-dev_2.7.11-1_amd64.deb を展開する準備をしています ... libpython-dev:amd64 (2.7.11-1) を展開しています... 以前に未選択のパッケージ libpython-all-dev:amd64 を選択しています。 .../libpython-all-dev_2.7.11-1_amd64.deb を展開する準備をしています ... libpython-all-dev:amd64 (2.7.11-1) を展開しています... 以前に未選択のパッケージ python-all を選択しています。 .../python-all_2.7.11-1_amd64.deb を展開する準備をしています ... python-all (2.7.11-1) を展開しています... 以前に未選択のパッケージ python2.7-dev を選択しています。 .../python2.7-dev_2.7.12-1~16.04_amd64.deb を展開する準備をしています ... python2.7-dev (2.7.12-1~16.04) を展開しています... 以前に未選択のパッケージ python-dev を選択しています。 .../python-dev_2.7.11-1_amd64.deb を展開する準備をしています ... python-dev (2.7.11-1) を展開しています... 以前に未選択のパッケージ python-all-dev を選択しています。 .../python-all-dev_2.7.11-1_amd64.deb を展開する準備をしています ... python-all-dev (2.7.11-1) を展開しています... 以前に未選択のパッケージ python-pip-whl を選択しています。 .../python-pip-whl_8.1.1-2ubuntu0.2_all.deb を展開する準備をしています ... python-pip-whl (8.1.1-2ubuntu0.2) を展開しています... 以前に未選択のパッケージ python-pip を選択しています。 .../python-pip_8.1.1-2ubuntu0.2_all.deb を展開する準備をしています ... python-pip (8.1.1-2ubuntu0.2) を展開しています... 以前に未選択のパッケージ python-pkg-resources を選択しています。 .../python-pkg-resources_20.7.0-1_all.deb を展開する準備をしています ... python-pkg-resources (20.7.0-1) を展開しています... 以前に未選択のパッケージ python-setuptools を選択しています。 .../python-setuptools_20.7.0-1_all.deb を展開する準備をしています ... python-setuptools (20.7.0-1) を展開しています... 以前に未選択のパッケージ python-wheel を選択しています。 .../python-wheel_0.29.0-1_all.deb を展開する準備をしています ... python-wheel (0.29.0-1) を展開しています... gnome-menus (3.13.3-6ubuntu3) のトリガを処理しています ... desktop-file-utils (0.22-1ubuntu5) のトリガを処理しています ... bamfdaemon (0.5.3~bzr0+16.04.20160415-0ubuntu1) のトリガを処理しています ... Rebuilding /usr/share/applications/bamf-2.index... mime-support (3.59ubuntu1) のトリガを処理しています ... man-db (2.7.5-1) のトリガを処理しています ... libc-bin (2.23-0ubuntu3) のトリガを処理しています ... doc-base (0.10.7) のトリガを処理しています ... doc-base ファイルを 1 個追加 を処理中... libpython2.7-minimal:amd64 (2.7.12-1~16.04) を設定しています ... python2.7-minimal (2.7.12-1~16.04) を設定しています ... libexpat1:amd64 (2.1.0-7ubuntu0.16.04.2) を設定しています ... libpython2.7-stdlib:amd64 (2.7.12-1~16.04) を設定しています ... python2.7 (2.7.12-1~16.04) を設定しています ... libpython2.7:amd64 (2.7.12-1~16.04) を設定しています ... libexpat1-dev:amd64 (2.1.0-7ubuntu0.16.04.2) を設定しています ... libpython2.7-dev:amd64 (2.7.12-1~16.04) を設定しています ... libpython-dev:amd64 (2.7.11-1) を設定しています ... libpython-all-dev:amd64 (2.7.11-1) を設定しています ... python-all (2.7.11-1) を設定しています ... python2.7-dev (2.7.12-1~16.04) を設定しています ... python-dev (2.7.11-1) を設定しています ... python-all-dev (2.7.11-1) を設定しています ... python-pip-whl (8.1.1-2ubuntu0.2) を設定しています ... python-pip (8.1.1-2ubuntu0.2) を設定しています ... python-pkg-resources (20.7.0-1) を設定しています ... python-setuptools (20.7.0-1) を設定しています ... python-wheel (0.29.0-1) を設定しています ... libc-bin (2.23-0ubuntu3) のトリガを処理しています ... upgm@ubuntu64dl:~$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0-cp34-cp34m-linux_x86_64.whl upgm@ubuntu64dl:~$ upgm@ubuntu64dl:~$ sudo pip3 install --upgrade $TF_BINARY_URL sudo: pip3: コマンドが見つかりません upgm@ubuntu64dl:~$ which pip /usr/bin/pip upgm@ubuntu64dl:~$ which pip3 upgm@ubuntu64dl:~$ which pip3 upgm@ubuntu64dl:~$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0-cp27-none-linux_x86_64.whl upgm@ubuntu64dl:~$ sudo pip install --upgrade $TF_BINARY_URL The directory '/home/upgm/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. The directory '/home/upgm/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. Collecting tensorflow==0.10.0 from https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0-cp27-none-linux_x86_64.whl Downloading https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0-cp27-none-linux_x86_64.whl (36.6MB) 100% |████████████████████████████████| 36.6MB 43kB/s Collecting numpy>=1.8.2 (from tensorflow==0.10.0) Downloading numpy-1.11.1-cp27-cp27mu-manylinux1_x86_64.whl (15.3MB) 100% |████████████████████████████████| 15.3MB 103kB/s Collecting mock>=2.0.0 (from tensorflow==0.10.0) Downloading mock-2.0.0-py2.py3-none-any.whl (56kB) 100% |████████████████████████████████| 61kB 2.3MB/s Collecting protobuf==3.0.0b2 (from tensorflow==0.10.0) Downloading protobuf-3.0.0b2-py2.py3-none-any.whl (326kB) 100% |████████████████████████████████| 327kB 1.7MB/s Requirement already up-to-date: wheel in /usr/lib/python2.7/dist-packages (from tensorflow==0.10.0) Collecting six>=1.10.0 (from tensorflow==0.10.0) Downloading six-1.10.0-py2.py3-none-any.whl Collecting funcsigs>=1; python_version < "3.3" (from mock>=2.0.0->tensorflow==0.10.0) Downloading funcsigs-1.0.2-py2.py3-none-any.whl Collecting pbr>=0.11 (from mock>=2.0.0->tensorflow==0.10.0) Downloading pbr-1.10.0-py2.py3-none-any.whl (96kB) 100% |████████████████████████████████| 102kB 2.2MB/s Collecting setuptools (from protobuf==3.0.0b2->tensorflow==0.10.0) Downloading setuptools-27.3.0-py2.py3-none-any.whl (467kB) 100% |████████████████████████████████| 471kB 1.6MB/s Installing collected packages: numpy, six, funcsigs, pbr, mock, setuptools, protobuf, tensorflow Found existing installation: setuptools 20.7.0 Not uninstalling setuptools at /usr/lib/python2.7/dist-packages, outside environment /usr Successfully installed funcsigs-1.0.2 mock-2.0.0 numpy-1.11.1 pbr-1.10.0 protobuf-3.0.0b2 setuptools-27.3.0 six-1.10.0 tensorflow-0.10.0 You are using pip version 8.1.1, however version 8.1.2 is available. You should consider upgrading via the 'pip install --upgrade pip' command. upgm@ubuntu64dl:~$ sudo pip install --upgrade pip The directory '/home/upgm/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. The directory '/home/upgm/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. Collecting pip Downloading pip-8.1.2-py2.py3-none-any.whl (1.2MB) 100% |████████████████████████████████| 1.2MB 926kB/s Installing collected packages: pip Found existing installation: pip 8.1.1 Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr Successfully installed pip-8.1.2 upgm@ubuntu64dl:~$ |
|
| その他の環境導入 | (後ほど記入) | # sudo apt install ruby ruby-dev # sudo apt install make # sudo apt install aptitude # sudo aptitude install imagemagick libimagemagick libmagickcore libmagickcore-dev libmagickwand-dev # sudo gem install rmagick |
upgm@ubuntu64dl:~$ sudo apt install ruby ruby-dev upgm@ubuntu64dl:~$ sudo gem install rmagick |
|
|
cifar10_train.pyと |
ディレクトリ作成の結果確認 ※homeはあなたのユーザーIDのディレクトリとなるため。
|
ディレクトリ作成 |
||
| train用の「画像ファイルとラベル」のCSVリスト、同形式のeval用のCSVリストを作成する。 | # diff gen_data_csv.py
origin.gen_data_csv.py # head train.csv # head eval.csv |
# vi gen_data_csv.py (複写) # cp -ip gen_data_csv.py origin.gen_data_csv.py # vi gen_data_csv.py (差分作成) # python gen_data_csv.py trainpic > train.csv # python gen_data_csv.py testpic > eval.csv |
||
| それぞれのCSVリストを元に、train用のバイナリファイルとeval用のバイナリファイルを作成する。 | # vi gen_binary.rb (複写) # cp ip gen_binary.rb origin.gen_binary.rb # vi gen_binary.rb (差分作成) # mkdir data # cd data # mkdir cifar-10-batches-bin # cd .. # ruby gen_binary.rb train # ruby gen_binary.rb eval |
|||
| No. X-X-X-X-X. |
Activity | 状況 | 成果物 | 備考 |
| 1 | セレブリティ認識 | |||
| 1-1. | 画像の収集 | 進行中 | ||
| 1-1-1. | SA | 完了 | /home/upgm/aska/sa | 582件 |
| 1-1-2. | NA | 進行中 | ||
| 1-2. | 画像の切り出し | 進行中 | ||
| 1-2-1. | 画像切り出しプログラムの作成 | 完了 | ~/2animeface_dir2dir.py |
いまのところ、ディレクトリは固定。 |
| 1-3. | 学習プログラムの作成 | |||
| 1-3-1-1. | mnist検証 | 完了 | https://twitter.com/upgm/status/789674411297079297 | 手書き文字認識の練習。 |
| 1-3-1-2. | CIFAR-10検証 | 完了 |
/home/upgm/tensorflow/tensorflow/tensorflow/models/image/cifar10 |
https://twitter.com/upgm/status/789693267843485698 |
| 1-3-2. | CIFAR-10改造 | 進行中 |
|
CIFAR-10改造 の参考 http://memo.sugyan.com/entry/20160112/1452558576 |
| 1-3-2-1. | CIFAR-10用データ作成 | 進行中 |
要件:cifar10.input()で受け付ける形式のデータ構造を作ること。 |
|
| 1-3-2-1-1. | 既存のCIFAR-10用データの出力 |
課題:学習用ラベルデータの例はどこに? batches.metaにはカテゴリの種類だけが入った単純な文字列配列。 d = unpickle("data_batch_1") dict_keys(['filenames', 'data', 'labels', 'batch_label']) print(the_keys_of_d) d["filenames"]には、画像ファイル名らしきpngファイル名のList。 0から9までのようなので、おそらくunpickle("batches.meta")["label_names"]で得られる10の要素のこと。['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
|
http://aidiary.hatenablog.com/entry/20151014/1444827123 def unpickle(f): |
|
| 1-3-2-1-2. | 画像をnumpy.ndarray オブジェクトの配列として保存する。 |
[GCC 5.4.0 20160609] on linux [[163 167 168] [[163 167 168] ..., [[125 126 128] [[128 129 131] |
参考 http://www.mwsoft.jp/programming/computer_vision_with_python/1_3_numpy.html http://d.hatena.ne.jp/white_wheels/20100322/p1 |
|
| 1-3-2-1-1. | face-collectorの使い方確認 |
中止。 |
~/face-collector | https://github.com/sugyan/face-collector |
| 1-4. | 学習したプログラムによるテスト |