無能学生の作業ログ

せっかく新しいことやっても作業ログがないと身にならないので.

git関連の迷いあれこれ

教訓

  • gitにpushするときはディレクトリの上位の階層でまとめてpushしよう.
  • まずは空のディレクトリにしておいてファイル変更があったらちゃんとaddする.
  • git add –all を使うのがbestな感じ.
  • localリポジトリは消さないようにしような!!

参考

techacademy.jp

MeCab及びmecab-ipadic-NEologdのインストール

MeCabのインストールはこちら

qiita.com

実行するとき

IPA辞書の場合

$ mecab
メロンパン
メロン   名詞,一般,*,*,*,*,メロン,メロン,メロン
パン  名詞,一般,*,*,*,*,パン,パン,パン
EOS

neologd辞書を使う場合

$ mecab -d /usr/local/mecab/lib/mecab/dic/mecab-ipadic-neologd/
メロンパン
メロンパン 名詞,固有名詞,一般,*,*,*,メロンパン,メロンパン,メロンパン
EOS

これを極性辞書に照らし合わせてツイートのネガポジ判定をしたい… まずはpythonからmecabをimport できるようにしなくては….

mecabpythonを繋げる

まずはターミナルから

pip install natto-py

自分の環境ではpy35に入れました.

要注意事項

terminalを閉じると.profileの再読み込みがなかったことになるらしく,

$  . $HOME/.profile

を実行してからjupyterを立ち上げるとうまくいった.

CNNを用いた顔画像による回帰をやってみた.

動いたやつ保存用.

import numpy as np
np.random.seed(20160715) # シード値を固定
from keras.layers.convolutional import Convolution2D,Conv2D
from keras.layers import MaxPooling2D
from keras.layers.core import Activation
from keras.layers.core import Dense,Dropout,Flatten
from keras.models import Sequential
from keras.callbacks import EarlyStopping
from keras.callbacks import LearningRateScheduler
from keras.optimizers import Adam
from keras.optimizers import SGD
import sklearn.cross_validation

#.npyに落とし込んだデータの読み込み
X_data=np.load('face_data.npy')
Y_data=np.load('face_rec.npy')

#channel_lastに変更
X_data=X_data.transpose((0,2,3,1))

#X_data.shape
#で確認推奨

#モデルの定義
model =Sequential()
#カーネル数は代表的なものを使い,層を増やすと良い?
# model.add(Conv2D(128,(3, 3), padding='same',activation='relu', input_shape=(3, 128, 128)))
#model.add(Conv2D(128,(3, 3),activation='relu', input_shape=(3, 128, 128)))
model.add(Convolution2D(16,3,3,border_mode='same',activation='relu',input_shape=(128,128,3)))

#model.add(Conv2D(32, (3, 3),activation='relu',padding='same'))
#上の層でpaddingしないとMaxpoolingのサイズの関係でエラーになる
model.add(MaxPooling2D(pool_size=(2,2),strides=(2,2),dim_ordering='th'))
#model.add(Conv2D(64,(3, 3), padding='same',activation='relu'))
model.add(Convolution2D(16,3,3,border_mode='same',activation='relu'))

model.add(MaxPooling2D(pool_size=(2,2),strides=(2,2),dim_ordering='th'))

# model.add(Conv2D(32,(3, 3), padding='same',activation='relu'))
# model.add(Conv2D(32,(3, 3), activation='relu'))
model.add(Convolution2D(32,3,3,border_mode='same',activation='relu'))

model.add(MaxPooling2D(pool_size=(2,2),strides=(2,2),dim_ordering='th'))

#全結合層の前にflatten()
model.add(Flatten())
model.add(Dense(1024,activation='relu'))
model.add(Dropout(0.5))

# model.add(Dense(1024,activation='relu'))
# model.add(Dropout(0.5))

model.add(Dense(1,activation='linear'))

#おそらく8:2に分割
a_train, a_test, b_train, b_test = sklearn.cross_validation.train_test_split(X_data,Y_data)

init_learning_rate = 1e-2
#opt = SGD(lr=init_learning_rate, decay=0.0, momentum=0.9, nesterov=False)
#二乗誤差の場合の設定
model.compile(loss='mean_squared_error', optimizer='rmsprop', metrics=["acc"])
#early_stopping = EarlyStopping(monitor='val_loss', patience=3, verbose=0, mode='auto')
lrs = LearningRateScheduler(0.01)

#コンパイル
hist = model.fit(a_train,b_train, 
                batch_size=30, 
                epochs=100, 
                validation_split=0.1, 
                verbose=1)

#modelの保存をお忘れなく
model_json_str = model.to_json()
open('spec_face_model.json', 'w').write(model_json_str)
model.save_weights('spec_face_model.h5')

です。theano記法なのか,tensorflow記法なのかその辺でエラーが出るの謎. 闇が深いンゴ。

f:id:sakamoto-ryoma0930:20170723174850p:plain こんな感じにはなったが,val_lossは1000以上になっている. まあランダムに作ったデータなので. ランダムなデータからも学習できてしまうDCNNはまさにブラックマジック

成績を顔画像から学習するっていうタスク,精度どれくらい出るのか楽しみではありますね.

CNN書く時の注意(keras)

aidiary.hatenablog.com

バックエンドにtensorflowかtheanoのどちらを使っているかによって層の宣言が異なる. 正確には層に記述する変数の順が異なる.

openCV基礎知識 ~特徴量~

OpenCVを使ってみよう

OpenCVを使いこなせたら面白そうだなーっていう思いから画像の勉強をし始めました! いろんなサイトを見ながら得た知見をまとめる備忘録的な立ち位置です.

Haar Like特徴量

ここがわかりやすいかも gihyo.jp f:id:sakamoto-ryoma0930:20170701144619p:plain

OpenCVで遊んだ時のメモ

jupyter上で画像をインライン表示

Jupyter(IPython)のライブラリを利用する。 画像データを表す、IPython.display.Imageと、Jupyter上で表示するIPython.display.display()関数で表示できる。

エンコードした画像データをbytes型で持つので、ファイルフォーマットを指定する。 普段の画像保存と同じように、自然画像のような場合には.jpgとかにしたほうがメモリに優しい。

from IPython.display import display, Image

def display_cv_image(image, format='.png'):
    decoded_bytes = cv2.imencode(format, image)[1].tobytes()
    display(Image(data=decoded_bytes))

display_cv_image(image, '.png')

マッチングする点同士を結ぶ線の描画

qiita.com

評判の良い技評のサイト

gihyo.jp