無能学生の作業ログ

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

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はまさにブラックマジック

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

openCV基礎知識 ~特徴量~

OpenCVを使ってみよう

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

Haar Like特徴量

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