しんさんのブログ

科学や技術のこと読書のことなど

jupyterlabをインストールしてみた

jupyter notebookの次期バージョンとしてjupyterlabが予定されているらしいです。
以下の記事を読み、試してみたいと思いインストールしてみました。
http://www.publickey1.jp/blog/18/webidejupyterlabpythonrscala.html

インストール方法
jupyterlabのgithubに詳しいインストール方法が書いてありましたのでそれに従ってインストールしました。
インストール環境はWindows10 64bitでcondaを使用してインストールしました。

https://github.com/jupyterlab/jupyterlab

インストールする前に、jupyter notebook のバージョンを確認します。

jupyter notebook --version

Jupyter notebook のバージョンは4.3以上ならjupyterlabが使用できます。
ただしバージョンが5.3より低いときにはインストール後に以下のコマンドを実行しなければいけないようです。

jupyter serverextension enable --py jupyterlab --sys-prefix

バージョンの確認が終わりましたら、以下のコマンドでインストールします.

conda install -c conda-forge jupyterlab

すると必要なパッケージを自動でダウンロードしてくれます.
サイズが大きくてダウンロードするのにかなり時間がかかりましたが、正常にインストールができました.

コンソールで

jupyter lab

と打ち込むと実行できます。
起動にはそれほど時間もかからず、思ったよりサクサクと動作します.
先日書いたpython+opencvの顔認識のコードも問題なく動きました.
今後がたのしみです.

以下のサイトにインストール方法、使い方、特徴がまとめられています。
qiita.com

Python + OpenCV3で顔認識

先日, Python + OpenCV3の環境を構築しましたので, この環境でWeb camからの映像を使用して顔認識してみました.

初めにanacondaでopnecvの仮想環境をactivate して jupyter notebookを立ち上げます.
以下jupyter notebookのコードと解説を書きます.

顔認識用の特徴量ファイルの読み込み
まずは顔認識用特徴量ファイルを読み込み, opencvにセットします。
今回は、正面顔と目の位置を認識させたいと思いますので2種類の特徴量ファイルをセットします。
ファイルのパスは私のWindows Anaconda環境では以下のようになっていました。
("someone"の部分は自分のユーザーネームに置き換える)

import cv2 # OpenCV libraryのインポート
import numpy as np
# 特徴量ファイルのパスを指定する. 
FACE_CASCADE_FILE = "c:/Users/someone/Anaconda3/pkgs/opencv3-3.1.0-py35_0/Library/etc/haarcascades/haarcascade_frontalface_default.xml"
EYE_CASCADE_FILE = "c:/Users/someone/Anaconda3/pkgs/opencv3-3.1.0-py35_0/Library/etc/haarcascades/haarcascade_eye.xml"
# cascade classifierをセット
face_cascadeClassifier = cv2.CascadeClassifier(FACE_CASCADE_FILE)
eye_cascadeClassifier = cv2.CascadeClassifier(EYE_CASCADE_FILE)

Web cameraの準備と書き込みファイルの設定
Web から読み込んだ画像を認識させますので、Web camをオープンしておきます。
(1行目のcap = cv2.VideoCapture("moviefile/hoge.mp4")を使えばhoge.mp4を入力にすることもできます)
さらに、顔と目の部分を長方形で囲ってその結果の画像を動画でセーブするために書き込みの設定も行います。
書き込む動画のfpsは適当に10.0にしておきました。この値を30.0とするとセーブ後の動画が早送りになってしまいます。
おそらくメインループの回転速度が30.0fpsより遅いのが原因だと思われます。

# Web camera の準備
#cap = cv2.VideoCapture("moviefile/hoge.mp4")
cap = cv2.VideoCapture(0)
#cap.set(cv2.CAP_PROP_FPS, 30)
#fps = cap.get(cv2.CAP_PROP_FPS)
#print(fps)
fps = 10.0 #顔認識に時間がかかるので記録画像のframe rateは遅めにしておく
ret, frame = cap.read()
h, w, ch = frame.shape
# 動画の書き込みの設定を行う
fourcc = cv2.VideoWriter_fourcc(*"XVID") # codec はXVIDを使用
writeFrameDst = cv2.VideoWriter("output/faceDetect.avi", fourcc, fps, (w,h)) # codecはfourcc
  1. メインループ

メインループではループごとに動画から1フレーム抜き出して、その画像をグレー画像に変換後、顔と目を認識させます。
認識した顔と目の場所に赤と緑で枠を書いて、その結果を画面に表示するとともにファイルにセーブします。

while True:
    ret, frame = cap.read()
    if ret == False: # カメラからの映像がないとき
        break
    img = frame.astype(np.uint8) # 顔認識用に現在のフレームの画像をキャプチャ
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # グレー画像に変換
    faceArea = face_cascadeClassifier.detectMultiScale(img_gray) # 顔認識 faceArea = [x座標, y座標, xサイズ, yサイズ]
    #cv2.imshow("img", frame.astype(np.uint8)) # astype(np.uint8)は必要ないが念のため
    
    # 顔の領域に赤い四角を描く
    for x, y, w, h in faceArea:
        cv2.rectangle(img, (x, y), (x+w, y+h), (0,0, 255), 2)
    eyesArea = eye_cascadeClassifier.detectMultiScale(img_gray) # 目認識 eyesArea = [x座標, y座標, xサイズ, yサイズ]
    
    # 目の領域に緑色の四角を描く
    for (ex,ey,ew,eh) in eyesArea:
        cv2.rectangle(img, (ex,ey), (ex+ew,ey+eh), (0,255,0), 2)
    
    cv2.imshow("img", img) # 入力画像と顔エリアをマージした画像を表示
    writeFrameDst.write(img) # 動画1コマ書き込み
    
    if cv2.waitKey(1) == 27:
        break

終了処理
メインループでESCキーが押されたら、書き込みファイルとWeb cameraの終了処理を行い、開いているwindowを閉じます.

cap.release()
writeFrameDst.release()
cv2.destroyAllWindows()

目の認識の精度があまり高くないようで、いろんな場所を誤認識してしまいます.
コードの途中でエラーが出て、修正後再実行するときにはjupyter notebookのカーネルをリスタートしないとWeb cameraがオープンされたままになっているので再びプログラムを起動したときにエラーがでますのでご注意ください。
顔認識に関しては以下のブログを参考にしました。
qiita.com

数理統計の勉強のための資料

機械学習ビッグデータを勉強していると根本的な数理統計の知識が足りないことに気づきました。
数理統計の勉強のための参考書をリストアップします。

「Introduction to Mathematical Statistics」

Introduction to Mathematical Statistics: Pearson New International Edition

Introduction to Mathematical Statistics: Pearson New International Edition

  • 作者: Robert V. Hogg,Joseph W. McKean,Allen T. Craig
  • 出版社/メーカー: Pearson Education Limited
  • 発売日: 2013/07/26
  • メディア: ペーパーバック
  • この商品を含むブログを見る

「 現代数理統計学の基礎」

現代数理統計学の基礎 (共立講座 数学の魅力)

現代数理統計学の基礎 (共立講座 数学の魅力)

「数理統計学―基礎から学ぶデータ解析」

数理統計学―基礎から学ぶデータ解析

数理統計学―基礎から学ぶデータ解析

「数理統計学 (数学シリーズ)」

数理統計学 (数学シリーズ)

数理統計学 (数学シリーズ)

「 入門・演習 数理統計」

入門・演習 数理統計

入門・演習 数理統計


「数理統計学の基礎」
数理統計学の基礎

数理統計学の基礎

「現代数理統計学

現代数理統計学 (創文社現代経済学選書)

現代数理統計学 (創文社現代経済学選書)

数理統計とは違いますが絶版になった統計学の本が電子化されてPDFで読めるようになっています.
「統計科学のための電子図書館」というサイトです.
統計科学のための電子図書システム

東大の松尾研究室, Deep Learning基礎講座やってみた

東大の松尾研究室がDeep Learning基礎講座を開設しているらしいです.
以下のブログに触発されて私も早速ためしてみました.
karaage.hatenadiary.jp

すると確かに上のブログに書いてあるようにlecture_chap05_exercise_master.ipynbのTensorBoardの可視化のところでエラーがでました.
Tensorflowをいったんdeleteして再インストールすればいいのでしょうか?
今のところエラーの解消の方法がわからないです.

Kerasでmnist.load_data()したときにデフォルトでデータがセーブされる場所

WindowsでKerasのサンプルを実行したときの話です。
例えばmnist_cnn.pyを実行するとネットワークからmnistデータセットをはじめにロードしますが、そのファイルがおいてある場所は、
C:\Users\username\.keras\datasets
になります.

以下のソースコードを読めばデフォルトで置かれる場所がわかります.
C:\Users\username\Anaconda3\envs\envname\Lib\site-packages\keras\datasets\mnist.py

Kerasのバックエンドを変更する方法

Anacondaでpythonとtensorflow及びKerasをインストールしてpythonからimprot kerasを実行するとバックエンドがなぜかtheanoになってしまう問題の解決方法です。

解決方法:(環境変数を書き換える)

C:\Users\someone\Anaconda3\envs\someEnv\etc\conda\activate.d
以下にある, keras_activate.batを以下のように書き換える.
set "KERAS_BACKEND=tensorflow"
その後、いったんanaconda 環境をdeactivateして再びactivateするとkerasのバックエンドがtensorflowになります.


どうやらコマンドラインから
activate someEnv
とすると、anacondaの環境をactivate する際に
C:\Users\someone\Anaconda3\envs\someEnv\etc\conda\activate.d\keras_activate.bat
が実行されて
KERAS_BACKENDでtheanoがセットされてしまうようです。
Anaconda navigatorから仮想環境のコマンドプロンプトを立ち上げた場合にはこのbatch fileは実行されないので、kerasのデフォルトのバックエンドであるtensorflowがactiveになります。

ちなみにですが、上記環境変数とは別にkeras.jsonにKerasのバックエンドをしてしている記述があり、環境変数がない場合にはこちらが有効となるようですので、何かの時のために覚えておくといいと思います。
詳しくは以下のサイトを参照
qiita.com

機械学習の論文を効率よく読む方法

機械学習に関しては日々多くの論文が投稿されていて、すべてに目を通すことは時間的に難しいです。

以下のサイトでは、投稿される機械学習関連の論文をリスト化し簡単なサマリーが付けられているので
このサイトを見れば世の中のトレンドを知ることができます.
arXivTimes Indicator

このサイトに関する解説は以下を参照
[medium.com

arxivtimesのGitHub 機械学習関係の論文を調査し、共有するためのリポジトリ
github.com

arxivtimesのtwitter
twitter.com

利用するだけではなくて、余裕があればcontributeしたいです

以下の機械学習まとめサイトも参考になります.
www.getrevue.co