oikakerublogの日記

知識ゼロから色々しらべてみた話し

Google Colaboratoryを使ってみる

f:id:oikakerublog:20180516134847p:plain
◆特徴
・Python、JupyterNotebookをブラウザ上で使える(PCの環境構築不要)。
・Tensorflow、Numpy、Matplotlib、Pandas、Keras、Chainer等が予め用意されている。
・GPU環境

◆とりあえず。。


その1. lena画像を表示してみよ

・下記実行で画像をアップロードするためのアイコンが出てくる。

# 画像アップロード
from google.colab import files
uploaded = files.upload()

f:id:oikakerublog:20180516140229p:plain

・アップされたようなので、これ↓で表示(^^

# 表示
from IPython.display import Image,display_jpeg
display_jpeg(Image('lena.jpg'))


f:id:oikakerublog:20180516141744p:plain

その2. TensorFlowのtutrial(mnist)少しさわる

・手書き文字データのダウンロード→ ランダムに10個とって表示

import numpy as np
import matplotlib.pyplot as plt
from tensorflow.examples.tutorials.mnist import input_data

# mnistデータをダウンロード
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)

# 取出し 表示
images, labels = mnist.train.next_batch(10)

fig = plt.figure(figsize=(8,4))

for c, (image, label) in enumerate(zip(images, labels)):
    subplot = fig.add_subplot(2,5,c+1)
    subplot.set_xticks([])
    subplot.set_yticks([])
    subplot.set_title('%d' % np.argmax(label))
    subplot.imshow(image.reshape((28,28)), vmin=0,vmax=1, 
                   cmap=plt.cm.gray_r, interpolation="nearest")
plt.show()

f:id:oikakerublog:20180516181625p:plain


その3. OpenCVも使えるみたい

・画像の顔認識モジュールを使う
 Qiita記事をみながら…
Colaboratory上でOpenCVを使って顔認識をしてみる

・OpenCV公式GitHubのカスケード分類器(haarcascade_frontalface_default.xml)をダウンロード → 上記同様のfiles.upload()でColaboratory上にファイルをアップロードする。その後下記実行。

import io
import numpy as np
import requests
import cv2
from matplotlib import pyplot as plt

# Web上の画像を読込み
res = requests.get('http://cinema.usc.edu/userfiles/A0127948311B99D1C02CF7783648D35EBD92E9B2images/Goonies2(1).jpg')

bin_data = io.BytesIO(res.content)
file_bytes = np.asarray(bytearray(bin_data.read()), dtype=np.uint8)

img = cv2.imdecode(file_bytes, cv2.IMREAD_COLOR)

# matplotで表示するためにBGR->RGBフォーマットに変換
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# アップロードした分類器ファイルを使用
cascade = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')

# 検出
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
face = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=3, minSize=(30, 30))

# 検出した領域を矩形で囲む
for (x, y, w, h) in face:
  cv2.rectangle(img, (x, y), (x + w, y + h), (200,0,0), 3)

# xy軸ラベル非表示
plt.grid(False)
plt.tick_params(labelbottom=False, labelleft=False, labelright=False, labeltop=False)
plt.imshow(img)

f:id:oikakerublog:20180524124203p:plain


その4. Chainerも使える??

・Coraboratory上で次のようなインストールが必要とのこと

!apt-get install -y -qq libcusparse8.0 libnvrtc8.0 libnvtoolsext1
!ln -snf /usr/lib/x86_64-linux-gnu/libnvrtc-builtins.so.8.0 /usr/lib/x86_64-linux-gnu/libnvrtc-builtins.so
!pip install cupy-cuda80==4.0.0b4 
!pip install chainer==4.0.0b4


f:id:oikakerublog:20180527181602p:plain


[google colaboratory、コラボレイトリー、Jupyter Notebook、Tensorflow、チュートリアル、画像表示、ファイルアップロード、ダウンロード、mnist]



2018-5-16