Category Archives: Google Colaboratory

Colab(6) Face Detect

Haar特徴ベースのCascade型分類器を使った顔と目の検出を行う。

事前準備

事前に学習を済ませた学習機のxmlファイルを下記URLからダウンロードしてください。

  1. haarcascade_eye.xml
  2. haarcascade_frontalface_default.xml

ダウンロードする方法は、ブラウザChromeの場合まずgithubの画面をRaw画面に切り替えて、XMLのままの表示になります。それからブラウザを右クリックで、別名で保存にしてください。

またネットからLenna.pngを探して、ダウンロードしてください。

Colabに新しいノートブックを作り、上記ファイルをColabにアップしてください。

 

コード

import cv2
import matplotlib.pyplot as plt # matplotlib(描画用)

print(cv2.__version__)

face_cascade_path = "haarcascade_frontalface_default.xml"
eye_cascade_path = "haarcascade_eye.xml"

face_cascade = cv2.CascadeClassifier(face_cascade_path)
eye_cascade = cv2.CascadeClassifier(eye_cascade_path)

img = cv2.imread('Lenna.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

faces = face_cascade.detectMultiScale(gray)

for x, y, w, h in faces:
    cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
    face = img[y: y + h, x: x + w]
    face_gray = gray[y: y + h, x: x + w]
    eyes = eye_cascade.detectMultiScale(face_gray)
    for (ex, ey, ew, eh) in eyes:
        cv2.rectangle(face, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2)

# 結果表示
plt.imshow(img)

結果表示

はまりところ

済ませた学習機のxmlファイルの読み込ませるところは、” *** Unknown error code -49 *** “を発生しました。

もベタランと自負して、初歩的なエラーがあまりないと思うだが、このエラーに数時間も費やした。

  1. “Unknown error code -49″の対策を探す。
  2. パスがうまく設定できてないではないか。
  3. opencv 3からopencv 4になったから、それを疑い。
  4. 他人の成功例を探して実践する。

stackoverflow.comなどからの対策しても無駄でした。パスを相対パス、絶対パスに変えでも無駄、opencv 3からopencv 4に変化も見つからない、他人の成功例も再現できない、。。。

途方に暮れて、次のページで回答を見つかった。

https://answers.opencv.org/question/191490/opencv-error-unknown-error-code-49-persistencecpp-error/

英語:

  • have a look at those cascade files (e.g. with a text editor). do they really contain valid xml ?
  • (download errors do happen, there might just be a html errormsg in there, not valid xml)
  • also, when using weird python ide’s like pycharm, do yourself a favour, and use an absolute file path for anything, that needs to be loaded from disk.

日本語:

  • それらのカスケードファイルを見てください(テキストエディターなどを使用)。 彼らは本当に有効なxmlを含んでいますか?
  • (ダウンロードエラーが発生します、そこにはhtmlエラーメッセージがあり、有効なxmlではない可能性があります)
  • また、pycharmのような奇妙なpython ideを使用する場合は、ディスクからロードする必要のあるすべてのファイルに絶対パスを使用してください。

ダウンロードしたファイルをVSCodeで開いてみたら、htmlファイルでした!

正しいダウンロードする方法は、ブラウザChromeの場合まずgithubの画面をRaw画面に切り替えて、XMLのままの表示になります。それからブラウザを右クリックで、別名で保存にしてください。

Colab(4) Data Classify

こちらでBlue Book の機械学習の例題です。

カラー図解 Raspberry Piではじめる機械学習 基礎からディープラーニングまで (ブルーバックス)

新品価格
¥1,760から
(2020/7/17 13:56時点)

コード

# -*- coding: utf-8 -*-
from sklearn import datasets, svm
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap

# アヤメのデータをロードし、変数irisに格納
iris = datasets.load_iris()

# 特徴量のセットを変数Xに、ターゲットを変数yに格納
X = iris.data
y = iris.target

# 特徴量を外花被片の長さ(sepal length)と幅(sepal width)の
# 2つのみに制限(2次元で考えるため)
X = X[:,:2]

# ターゲットは2 (iris virginica) でないもの, 
# つまり iris setosa (0) と iris versicolor (1) のみを対象とする
# (領域の2分割)
X = X[y!=2]
y = y[y!=2]

# 分類用にサポートベクトルマシン (Support Vector Classifier) を用意
clf = svm.SVC(C=1.0, kernel='linear')
# データに最適化
clf.fit(X, y)

##### 分類結果を背景の色分けにより表示

# 外花被片の長さ(sepal length)と幅(sepal width)の
# 最小値と最大値からそれぞれ1ずつ広げた領域を
# グラフ表示エリアとする
x_min = min(X[:,0]) - 1
x_max = max(X[:,0]) + 1
y_min = min(X[:,1]) - 1
y_max = max(X[:,1]) + 1

# グラフ表示エリアを縦横500ずつのグリッドに区切る
# (分類クラスに応じて背景に色を塗るため)
XX, YY = np.mgrid[x_min:x_max:500j, y_min:y_max:500j]

# グリッドの点をscikit-learn用の入力に並べなおす
Xg = np.c_[XX.ravel(), YY.ravel()]

# 各グリッドの点が属するクラス(0か1)の予測をZに格納
Z = clf.predict(Xg)

# Zをグリッド上に並べなおす
Z = Z.reshape(XX.shape)

# クラス0 (iris setosa) が薄オレンジ (1, 0.93, 0.5, 1)
# クラス1 (iris versicolor) が薄青 (0.5, 1, 1, 1)
cmap01 = ListedColormap([(0.5, 1, 1, 1), (1, 0.93, 0.5, 1)])

# 背景の色を表示
plt.pcolormesh(XX, YY, Z==0, cmap=cmap01)

# 軸ラベルを設定
plt.xlabel('sepal length')
plt.ylabel('sepal width')

##### ターゲットに応じた色付きでデータ点を表示

# iris setosa (y=0) のデータのみを取り出す
Xc0 = X[y==0]
# iris versicolor (y=1) のデータのみを取り出す
Xc1 = X[y==1]

# iris setosa のデータXc0をプロット
plt.scatter(Xc0[:,0], Xc0[:,1], c='#E69F00', linewidths=0.5, edgecolors='black')
# iris versicolor のデータXc1をプロット
plt.scatter(Xc1[:,0], Xc1[:,1], c='#56B4E9', linewidths=0.5, edgecolors='black')

# サポートベクトルを取得
SV = clf.support_vectors_
# サポートベクトルの点に対し、赤い枠線を表示
plt.scatter(SV[:,0], SV[:,1], c=(0,0,0,0), linewidths=1.0, edgecolors='red')

# 描画したグラフを表示
plt.show()

 

結果

Colab(2) Pip List

Machine Learning に使うライブラリを確認するため、OSのコマンドラインに命令を送る。

!pip list

ずらずら出てきた。かなり長い。

Package                            Version    
---------------------------------- -----------
absl-py                            0.5.0      
altair                             2.2.2      
astor                              0.7.1      
backports-abc                      0.5        
backports.functools-lru-cache      1.5        
backports.shutil-get-terminal-size 1.0.0      
backports.weakref                  1.0.post1  
beautifulsoup4                     4.6.3      
bleach                             3.0.2      
cachetools                         2.1.0      
certifi                            2018.10.15 
chardet                            3.0.4      
configparser                       3.5.0      
crcmod                             1.7        
cycler                             0.10.0     
cymem                              2.0.2      
cytoolz                            0.9.0.1    
decorator                          4.3.0      
defusedxml                         0.5.0      
dill                               0.2.8.2    
entrypoints                        0.2.3      
enum34                             1.1.6      
funcsigs                           1.0.2      
functools32                        3.2.3.post2
future                             0.16.0     
futures                            3.2.0      
gast                               0.2.0      
google-api-core                    1.5.0      
google-api-python-client           1.6.7      
google-auth                        1.4.2      
google-auth-httplib2               0.0.3      
google-auth-oauthlib               0.2.0      
google-cloud-bigquery              1.1.0      
google-cloud-core                  0.28.1     
google-cloud-language              1.0.2      
google-cloud-storage               1.8.0      
google-cloud-translate             1.3.1      
google-colab                       0.0.1a1    
google-resumable-media             0.3.1      
googleapis-common-protos           1.5.3      
grpcio                             1.15.0     
h5py                               2.8.0      
httplib2                           0.11.3     
idna                               2.6        
ipykernel                          4.6.1      
ipython                            5.5.0      
ipython-genutils                   0.2.0      
Jinja2                             2.10       
joblib                             0.12.5     
jsonschema                         2.6.0      
jupyter-client                     5.2.3      
jupyter-core                       4.4.0      
Keras                              2.1.6      
Keras-Applications                 1.0.6      
Keras-Preprocessing                1.0.5      
Markdown                           3.0.1      
MarkupSafe                         1.0        
matplotlib                         2.1.2      
mistune                            0.8.4      
mock                               2.0.0      
mpmath                             1.0.0      
msgpack                            0.5.6      
msgpack-numpy                      0.4.3.2    
murmurhash                         1.0.1      
nbconvert                          5.4.0      
nbformat                           4.4.0      
networkx                           2.2        
nltk                               3.2.5      
notebook                           5.2.2      
numpy                              1.14.6     
oauth2client                       4.1.3      
oauthlib                           2.1.0      
olefile                            0.46       
opencv-python                      3.4.3.18   
pandas                             0.22.0     
pandas-gbq                         0.4.1      
pandocfilters                      1.4.2      
pathlib                            1.0.1      
pathlib2                           2.3.2      
patsy                              0.5.0      
pbr                                5.0.0      
pexpect                            4.6.0      
pickleshare                        0.7.5      
Pillow                             4.0.0      
pip                                18.1       
plac                               0.9.6      
plotly                             1.12.12    
portpicker                         1.2.0      
preshed                            2.0.1      
prompt-toolkit                     1.0.15     
protobuf                           3.6.1      
psutil                             5.4.7      
ptyprocess                         0.6.0      
pyasn1                             0.4.4      
pyasn1-modules                     0.2.2      
Pygments                           2.1.3      
pymc3                              3.5        
pyparsing                          2.2.2      
pystache                           0.5.4      
python-dateutil                    2.5.3      
pytz                               2018.5     
PyWavelets                         1.0.1      
PyYAML                             3.13       
pyzmq                              16.0.4     
regex                              2018.1.10  
requests                           2.18.4     
requests-oauthlib                  1.0.0      
rsa                                4.0        
scandir                            1.9.0      
scikit-image                       0.13.1     
scikit-learn                       0.19.2     
scipy                              0.19.1     
seaborn                            0.7.1      
setuptools                         40.4.3     
simplegeneric                      0.8.1      
singledispatch                     3.4.0.3    
six                                1.11.0     
spacy                              2.0.16     
statsmodels                        0.8.0      
subprocess32                       3.5.3      
sympy                              1.1.1      
tensorboard                        1.11.0     
tensorflow                         1.12.0rc1  
tensorflow-hub                     0.1.1      
termcolor                          1.1.0      
terminado                          0.8.1      
testpath                           0.4.2      
Theano                             1.0.3      
thinc                              6.12.0     
toolz                              0.9.0      
tornado                            4.5.3      
tqdm                               4.27.0     
traitlets                          4.3.2      
typing                             3.6.6      
ujson                              1.35       
uritemplate                        3.0.0      
urllib3                            1.22       
vega-datasets                      0.5.0      
wcwidth                            0.1.7      
webencodings                       0.5.1      
Werkzeug                           0.14.1     
wheel                              0.32.1     
wrapt                              1.10.11    
xgboost                            0.7.post4  

Blue Book の機械学習のRaspberry Piの環境と比べると、ほぼ同じといえる。

こちらでBlue Book の機械学習をやってみる。

カラー図解 Raspberry Piではじめる機械学習 基礎からディープラーニングまで (ブルーバックス)

新品価格
¥1,760から
(2020/7/17 13:56時点)

Colab(5) use OpenCV

「参考1」のコードはほぼ同じでできた。

コード

下記のコードをGoogle Colaboratoryにコピペ、lena_std.tifのファイルは別途用意する。

%matplotlib inline
import cv2 # opencvのインポート
import matplotlib.pyplot as plt # matplotlib(描画用)

print(cv2.__version__)


from google.colab import files #
f = files.upload() #ファイルアップロード


img=cv2.imread("./lena_std.tif")

show_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(show_img) #表示

lena_std.tifというファイルをアップロードして、imreadで読み込んで、plt.imshowで表示する。
(表示の前に、BGRをRGBに変換)。

参考

  1. https://qiita.com/kouki_outstand/items/ec1024cf0517f686ed7b

 

Colab(1) Getting start

Google ColaboratoryはGoogleが機械学習の教育や研究用に提供しているツールである、Jupyter Notebook環境が無償で!使うことができる。

Google Colaboratoryとは

Colaboratory は、完全にクラウドで実行される Jupyter ノートブック環境です。設定不要で、無料でご利用になれます。Colaboratory を使用すると、コードの記述と実行、解析の保存や共有、強力なコンピューティング リソースへのアクセスなどをブラウザからすべて無料で行えます。

Google Colaboratoryの起動

Google Colaboratoryにブラウザでアクセスするだけ

リソースの確認

ノートブックを新規作成 > PYTHON 2の新しいノートブック または, PYTHON 3の新しいノートブック を選択

“!”をつけることで、Linuxのコマンドを実行することができます。
コードセルを追加し

!cat /proc/cpuinfo

長い出力を確認してください。

仮想マシンタイプスペック

Google Colaboratoryの仮想マシンタイプスペックの例:

  • n1-highmem-2 instance
  • Ubuntu 18.04
  • 2vCPU @ 2.2GHz
  • 13GB RAM
  • (GPUなし/ TPU)40GB, (GPUあり)360GB Storage
  • GPU NVIDIA Tesla K80 12GB
  • アイドル状態が90分続くと停止
  • 連続使用は最大12時間
  • Notebookサイズは最大20MB

複数のマシンのブラウザから開けるので、ペア・プログラミングが便利かも。