Keep In Mind

織りのやわらかい混じりけのないアイルランド麻のハンカチーフ(手ふき)

映画をたくさん見てみることにした

 私は淀川長治さんが大好きで,淀川さんの解説だけを集めたDVDのシリーズなどを持っていて昔からよく見ていました.淀川さんといえばテレビ朝日日曜洋画劇場.淀川さん亡き後も不定期放送になりながらもなんとか続いていましたが,完全終了してしまうとのことです.

 

 それならばと,「勝手に洋画劇場」を個人的にやってしまおうということで,淀川さんの解説DVDを見たり,著書を読んだりしながら,興味を持った映画をたくさん見てみることにしました.

 

 面白いと思った映画や記憶に留めておきたいと思った映画は,ここに「覚え書き」として書くことにします.印象に残ったシーンや俳優や女優の名前,役名など,最近は,何かしら記録を残しておかないとすぐ忘れてしまいますので...

 

 淀川さんのお話の中にはよく,いわゆる「クラシック映画」が出てきます.クラシック映画のコンテンツは,東京ニュース通信社から刊行された「淀川長治 映画の世界 名作DVDコレクション」という全40号のシリーズ(デアゴスティーニとかアシェット・コレクションとかが出している週刊誌がありますが,あんな感じのDVD付マガジンです.最終巻だけ持ってないのですが.)を買っていたので,それを中心に見ることにします.

 

 それから,淀川さんが映画について語っている貴重な動画(が多数アップロードされています...)の中で紹介されている映画や,著書の中で触れられている映画も合わせて見てみようと思います.

 

 目標ペースは,週に2〜3本くらいでしょうか.1年続ければ,平均2.5本✕52週=130本の映画を見ることになりますね(๑•̀ㅂ•́)و✧

 

 ちなみに,「日曜<洋画>劇場」では邦画(『寅さん』とか)も放送していましたが,淀川さんは決して邦画に解説をしませんでした.日本人監督の映画で解説を行ったのは大島渚監督の『戦場のメリークリスマス』と黒澤明監督の『夢』の2本だけだそうです.こう言う筋の通し方もかっこいいですね.  

ピノ

ピノの「香ばしアーモンドキャラメル」味が期間限定発売中

http://www.pinoice.com/lineup/roastnuts2016.html

 

f:id:yusuke-manabe:20160829160348p:plain

 

 

さっそく買ってみたら....スターピノが入ってた.

 

f:id:yusuke-manabe:20160829160355j:plain

 

スターピノは,これで3,4回目.けっこう当たる確率高い気がする.

 

 

セリア

100円ショップセリアの商品を組み合わせて、
「ミニ黒板」を作成。

f:id:yusuke-manabe:20160326152922j:plain

ブリキのボードに黒板シートを貼って、
チョーク受けやらコーナーの飾りやら
フックやらを取り付けただけ。

左に見える木の箱はチョーク入れです。

取り付けたパーツも、チョークも、
チョーク入れも、黒板消しも、
全部セリアで調達。

PythonからCaffeを使う & ImageNetをリファレンスモデルとして使う(認識と特徴抽出)

はじめに

CaffeをPythonから使うための設定とImageNetと呼ばれる画像認識Deep Learning Neural NetworkをReferenceモデルとして使ってみた記録です.基本的に参考サイトのサンプルに基づいています

 

 

参考サイト

  1. IMAGENET;Large Scale Visual Recognition Challenge 2012
  2. Caffeで手軽に画像分類
  3. CaffeのImageNetで特徴量抽出器を動かすまで
  4. 『Caffeで手軽に画像分類』が手軽にできない
  5. リファレンスモデルで画像を分類

 

 

PythonからCaffeを使う設定

行うことは,パスの追加,コンパイル,Protobufの追加 の3つです.
#.bash_profileにパスを通す
PYTHONPATH=/Users/name/caffe/pythonを通す

#pipでProtocをpythonに導入
pip install protobuf

#pythonでcaffeをimportして確認
ipythonを起動して,import caffeが通ればok

 

memo
ビルド中に下記のようなエラーが出た場合は,
======
python/caffe/_caffe.cpp:1:10: fatal error: 'Python.h' file not found
#include <Python.h> // NOLINT(build/include_alpha)
======
.bash_profileにCPLUS_INCLUDE_PATHを追加
======
CPLUS_INCLUDE_PATH=/Users/name/.pyenv/versions/anaconda-2.1.0/include/python2.7
======

 

 

ImageNetの関連ファイルをダウンロード

#wgetのインストール
brew install wget

#caffe/data/ilsvrc12ディレクトリで,ILSVRC2012データのauxファイル群を取得
cd ~/caffe/data/ilsvrc12/
./get_ilsvrc_aux.sh

#作業ディレクトリとしてimagenet2ディレクトリを作る(やんなくてもいい)
cd ~/caffe/examples
makedir imagenet2
cd imagenet2

#imagenetのリファレンスモデルデータを取得
wget https://raw.githubusercontent.com/sguada/caffe-public/master/models/get_caffe_reference_imagenet_model.sh
chmod u+x get_caffe_reference_imagenet_model.sh
./get_caffe_reference_imagenet_model.sh

#面倒なので,参照するスクリプトやファイルをコピーしておく
cp ~/caffe/python/caffe/imagenet/ilsvrc_2012_mean.npy ~/caffe/examples/imagenet2/ilsvrc_2012_mean.npy
cp ~/caffe/python/classify.py ~/caffe/examples/imagenet2/classify.py
cp ~/caffe/data/ilsvrc12/synset_words.txt ~/caffe/examples/imagenet2/synset_words.txt

 

memo
ImageNetとは,参考サイト1のデータを対象に作成されたDeep Learning Neural Networkです.1000カテゴリの画像認識ができるように作成されています.Caffeには,この学習済みのモデルが含まれて(実際はいくつかのファイルを別途ダウンロードする必要がありますが)おり,ImageNetを画像認識器や画像の特徴抽出器として用いる(Referenceモデルとして用いる)ことができます.

 

 

CaffeとリンクしているPythonを使うようにaliasを作る(やんなくてもいい)

.bash_profileにaliasを追加&反映
======
alias cpython='$HOME/.pyenv/shims/python'
======

 

 

ImageNetを画像認識器として使う

#猫画像cat.jpgを用意して,結果をresult.npyに出力
cpython classify.py --model_def imagenet_deploy.prototxt --pretrained_model caffe_reference_imagenet_model --mean_file ilsvrc_2012_mean.npy --raw_scale 255 cat.jpg result.npy

#result.npyを読み込んで,認識結果を出力(結果出力スクリプトshow_result.pyは,参考サイト2のものを利用)
cpython show_result.py synset_words.txt result.npy

 

 

ImageNetを画像の特徴抽出器として使う

#imagenet_deploy.prototxtをimagenet_feature.prototxtとしてコピー
cp imagenet_deploy.prototxt imagenet_feature.prototxt

#imagenet_feature.prototxtを修正
============
(Line 174) top: "fc6wi"
(Line 186) bottom: "fc6wi"
============

#feature.pyを変更箇所
# 1. カレントディレクトリにコピーしたファイルの参照
# 2. 仕様変更に伴うコメントアウトと関数呼び出し方法の修正
============
MEAN_FILE = 'ilsvrc_2012_mean.npy'
MODEL_FILE = 'imagenet_feature.prototxt'
PRETRAINED = 'caffe_reference_imagenet_model'
#net.set_phase_test()
caffe.set_mode_cpu()
net.transformer.set_mean('data', numpy.load(MEAN_FILE))
net.transformer.set_raw_scale('data', 255)
net.transformer.set_channel_swap('data', (2,1,0))
============

#Pythonスクリプトを使って特徴抽出
#cat_feature.txtに特徴ベクトルが出力されます
cpython feature.py cat.jpg > cat_feature.txt

memo
classify.pyで呼び出されるcaffe/python/caffe/io.pyでエラーが出る場合は,caffe/python/caffe/io.pyの253-254行目を修正する.ilsvrc_2012_mean.npyを処理できないコードになっていることが原因らしい.
==========

if ms != self.inputs[in_][1:]:
    print(self.inputs[in_])
    in_shape = self.inputs[in_][1:]
    m_min, m_max = mean.min(), mean.max()
    normal_mean = (mean - m_min) / (m_max - m_min)
    mean = resize_image(normal_mean.transpose((1,2,0)),in_shape[1:]).transpose((2,0,1)) * (m_max - m_min) + m_min
    #raise ValueError('Mean shape incompatible with input shape.')


===========

 

 

その他

#.npyファイル(バイナリ)の内容確認
ipython
In [1]: import numpy as np
In [2]: data = np.load('result.npy')
In [3]: data

#Caltech101データのダウンロード
wget http://www.vision.caltech.edu/Image_Datasets/Caltech101/101_ObjectCategories.tar.gz
tar xzvf 101_ObjectCategories.tar.gz

 

 

【完全版】MacOSX(10.9.5)にCaffeをインストール

 前回の記事は,各種ライブラリのインストールがまとまって書かれており,CUDAのインストールも行っていなかったので,インストールをやり直しました.

 また,サンプルプログラムのコンパイル&実行まで行いましたので,新たに【完全版】として残しておきたいと思います.

 Pythonのインストール方法やCUDAのインストール,その他ライブラリのインストールや設定ファイルの内容,パスの追加など,かなり変更があります.

 

はじめに

Caffeは,カリフォルニア大学バークレー校のBerkeley Vision and Learning Centerで開発されたOSSのDeep Learning Frameworkです.今回は,CPUモードで設定しますが,CUDAのインストールも行います.

 

 

参考サイト

  1. Caffe本家サイトのOSXインストレーションページ
  2. GitHubのBVLC/caffeサイト
  3. caffeのGoogleGroup
  4. OSX10.10でCaffeをインストール
  5. CaffeをOS X 10.10にインストールした
  6. Mac OS X 10.9.5でCaffeする
  7. 流行りの深層学習フレームワークCaffeをC++から使ってみた
  8. DeepLearningライブラリ「Caffe」の実行環境をOSX10.9で作る

 

 

Homebrewのインストール

sudo ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
X CodeとCommand Line Toolが必要らしいですが,何もせずインストールできたので,事前にインストールしてたみたいです.

 

 

Open BLASのインストール

brew tap homebrew/science
brew install homebrew/science/openblas

 

memo
"==> make bootstrap"と表示されてから70分くらいかかった...

 

 

CUDAのインストール

cuda_7.0.29_mac.pkgをダウンロードしてインストール

 

 

Pythonのインストール(Anaconda利用)

#brewでpyenvをインストールして,pyenvでanacondaをインストール
brew install pyenv
pyenv install anaconda-2.0.1

#anacondaの各種設定
pyenv rehash
sudo pyenv local anaconda-2.0.1
sudo pyenv global anaconda-2.0.1

#.bash_profileにパスを通す
export PATH="$PATH:$HOME/.pyenv/shims"
source ~/.bash_profileで反映
echo $PATHで確認

#Python 2.7.10をインストール
pyenv install 2.7.10

 

memo
~/.pyenv/ 以下にAnaconda管理下のPythonが入る
~/.pyenv/versions/anaconda-2.0.1/がanacondaホーム

 

 

OpenCVのインストール

brew edit opencvで,Formulaファイルを修正(#{py_prefix}はよくわからんので,直接記述)
============
args << "-DPYTHON_LIBRARY=~/.pyenv/versions/anaconda-2.0.1/lib/libpython2.7.dylib"
args << "-DPYTHON_INCLUDE_DIR=~/.pyenv/versions/anaconda-2.0.1/include/python2.7"
============
.bash_profileに以下を追加
============
export PATH=$PATH:/opt/local/bin
============
source ~/.bash_profileで反映
echo $PATHで確認

brew tap homebrew/science
brew install opencv

 

 

OpenCVPythonから使う設定

インクルード,ライブラリファイルへのリンク作成(cv.pyやcv2.soへのリンク)
ln -sfn /usr/local/Cellar/opencv/2.4.11_1/lib/python2.7/site-packages/ ~/.pyenv/versions/anaconda-2.0.1/lib/python2.7/site-packages/

ipythonを実行し,import cvやimport cv2でエラーが出なければ成功.

 

memo
~/.pyenv/versions/anaconda-2.0.1/lib/python2.7/site-packages以下にcv.pyやcv2.soなどがすでに存在する場合は不要かも

 

 

boost,boost-pythonのインストール(念のため1.57にする) 

brew edit boost
brew edit boost-python 
============
url "https://downloads.sourceforge.net/project/boost/boost/1.57.0/boost_1_57_0.tar.bz2"
sha1 "e151557ae47afd1b43dc3fac46f8b04a8fe51c12" 
============

brew install --build-from-source --fresh -vd boost boost-python

 

memo
結構時間がかかる.40分〜1時間くらい.
1.55にダウングレードするように解説されているページが多いが,1.57でもOKになった模様
1.58のままでもcaffeのmakeに成功したので,Formulaファイルの変更は不要かも

 

 

hdf5のインストール

hdf5はファイルの階層構造操作用のライブラリ(参考サイト6より)とのこと.
anacondaでPythonをインストールした場合は既にインストールされているはず.
以下に,hdf5のライブラリとインクルードファイルが入っているか確認して下さい.
============
$HOME/.pyenv/versions/anaconda-2.0.1/lib
$HOME/.pyenv/versions/anaconda-2.0.1/include
============

 

 

その他のライブラリのインストール

brew install --fresh -vd snappy leveldb gflags glog szip lmdb
brew install --build-from-source --with-python --fresh -vd protobuf

 

memo
各種ライブラリの説明(参考サイト6より大部分引用)
snappy;圧縮,leveldb;軽量データベース,gflags;コマンドラインのフラグ処理, glog;ログ取り,szip;圧縮,lmdb;RAM(インメモリ)上でのデータベース操作, protobuf;データの構造化

 

 

ライブラリパスの追加

.bash_profileに以下を追加
============
export DYLD_FALLBACK_LIBRARY_PATH="/usr/local/cuda/lib:$HOME/.pyenv/versions/anaconda-2.0.1/lib:/usr/local/lib:/usr/local/cuda/lib:/usr/local/lib"
============
source ~/.bash_profileで反映
echo $DYLD_FALLBACK_LIBRARY_PATHで確認

 

 

Caffeのリポジトリをクローン

git clone https://github.com/BVLC/caffe.git
Xcodeを使うのにライセンスに同意しろと言われるので,[space]キーでライセンス文章を全部見た後にagree [return]

  

 

configファイルの修正とmake

cp Makefile.config.example Makefile.config
vi Makefile.config
以下,修正した所の抜粋
============
CPU_ONLY := 1
CUSTOM_CXX := clang++

CUDA_DIR := /usr/local/cuda

#-gencode arch=compute_50,code=sm_50 \
#-gencode arch=compute_50,code=compute_50

BLAS:=open
BLAS_INCLUDE := /usr/local/Cellar/openblas/0.2.14_1/include
BLAS_LIB := /usr/local/Cellar/openblas/0.2.14_1/lib

#PYTHON_INCLUDE := /usr/include/python2.7 \
# /usr/lib/python2.7/dist-packages/numpy/core/include
ANACONDA_HOME := $(HOME)/.pyenv/versions/anaconda-2.0.1
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
                                     $(ANACONDA_HOME)/include/python2.7 \
                                     $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include

# PYTHON_LIB := /usr/lib
PYTHON_LIB := $(ANACONDA_HOME)/lib

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /Developer/NVIDIA/CUDA-7.0/lib
============

make all -j10
make test -j10

 

 

Caffeのテスト

make runtest

[==========] 755 tests from 123 test cases ran. (38555 ms total) [ PASSED ] 755 tests.
などと出れば成功かな?

 

 

c++でのコンパイル&実行

参考サイト7に掲載されているサンプルを動かしてみる.

いろいろエラーが出たが,最終的にいくつかのincludeファイルへのパスとlibraryファイルへのパスを追加することで,コンパイル&実行ができた.

.bash_profileに以下の2つのパスを追加(既に下記パスが存在している場合は,不足しているものを追加して下さい)
============
export CPLUS_INCLUDE_PATH=“/usr/local/include:/usr/local/opt/boost/include:$HOME/.pyenv/versions/anaconda-2.0.1/include:$HOME/caffe/.build_release/src:/usr/local/Cellar/openblas/0.2.14_1/include"

export LD_LIBRARY_PATH=“$HOME/caffe/build/lib"
============

また,caffeコンパイルは,オプションがたくさん必要で長いので,.bash_profileにaliasを作る.尚,先の参照サイトには「-L/usr/local/opt/glog/lib」リンクが記載されていないが,私の環境では記述しないとエラーが出た.
============
alias cfc='clang++ -std=c++11 -DCPU_ONLY -I$HOME/caffe/include -I/System/Library/Frameworks/vecLib.framework/Versions/Current/Headers -L$HOME/caffe/build/lib -L/usr/local/opt/glog/lib $1 -lcaffe -lglog'
============
source ~/.bash_profileで反映
echo $CPLUS_INCLUDE_PATH $LD_LIBRARY_PATHで確認

コンパイル&実行
============
$ cfc caffe-sample.cpp
$ ./a.out
E0710 13:14:23.723459 2078970640 upgrade_proto.cpp:618] Attempting to upgrade input file specified using deprecated V1LayerParameter: netproto.txt
3.00199x + -1.99783y + 3.99781 = target
10a + 20b + c = -5.93897
============
できた〜(ToT).

 

 

感想

長かった...まず,caffeのmakeの時点でコンパイルエラーやらリンクエラーやら,実行時エラーやらが頻発した.

caffeのmakeに成功後も,サンプルプログラムのコンパイルで,コンパイルエラーやら 実行時エラーが頻発した.

うまく行くまで3日くらいかかった..何回make cleanをしたことか...

次は,pycaffeだな.

 

 

その他(作業中に役に立ったコマンドや情報)

ファイルの検索
find / -name 名前 -print 2> /dev/null

Homebrewで入れたもののアンインストール
brew uninstall 名前

HomebrewのFormulaファイル置き場
/usr/local/Library/Formula

HomebrewのFormulaを元に戻す
cd /usr/local
git checkout ファイル名

makeのやり直し(config等のファイルはそのまま)
make clean

config等のファイルの初期化
make mrproper