LoginSignup
8
5

More than 5 years have passed since last update.

【Qiita記事無作為試用①】Google Colaboratoryで簡単な顔認識に挑戦

Posted at

・膨大な素晴らしきプログラムの集積地であるQiitaの中から、無作為に試してみて、惜しげもなく我が物顔を炸裂する記事第一弾。
・興味のあるものは何の躊躇も恥もなく無心で模倣してきた「自己解決反対運動」の信者のため、思う存分発揮していこう。
・初回として、顔認識処理が簡単に扱える記事を発見したので、これを試してみよう。

概要

  • Google Colaboratoryという、Jupyter Notebook環境を構築不要ですぐに試せるサービスを使って、指定画像を顔認識処理にかけて、返してくれる。
    ※Jupyter Notebookとは、実行記録型のデータ分析ツールである。主にPython実行環境として使用されていたが、現在は様々な言語に対応している。

結果

<指定画像、処理前>
group.jpg
<指定画像、処理後>
a.PNG

使用環境・技術

手順

使用画像の用意

  • 今回顔認識処理に用いる好きな画像を用意する。(※公開等なければ、著作権はあまり気にしない。)
  • 画像決定すれば、名前をつけて保存。その際の保存名はメモしておく。
    ※今回の保存名は「test.jpg」で、使用画像は下記。 test.jpg

解析ライブラリの設定

  • 画像の顔認識処理のために、解析ライブラリであるOpenCVの公式GitHubから下記のファイルを自分のパソコンにダウンロードする。
    「ファイル名」・・・haarcascade_frontalface_default.xml
    「取得リンク」・・・ここ

Google Colaboratoryの設定

  • GoogleドライブからColaboratoryプロジェクト作成。
    ※Googleアカウントを持っていない人は、作成する。
    • Googleドライブを起動
    • 「新規」→ 「その他」→「アプリを追加」の順にクリック。
    • アプリ検索欄に「colab」と入力して検索。
    • 検索結果に「Colaboratory」が表示されるので、そこの「接続」ボタンをクリック
    • 改めて「新規」→ 「その他」の順にクリックしていくと、「Colaboratory」が表示されているので、クリック。

image.png
image.png

  • 起動したプロジェクトに名前をつける
    ※プロジェクト名が反映されるわけではないが、自分がわかる名前をつける。
  • GPU割り当てのため、プロジェクト上部メニューの「ランタイム」から「ランタイムのタイプを変更」をクリック。
    image.png
  • ノートブックの設定を下記のように設定。

    image.png

  • ノートブック設定後、プロジェクトに下記のコードを入力後、左の三角ボタンで実行する。

from google.colab import files
f = files.upload()

as.PNG

  • ファイル選択ボタンが表示されるので、先程保存した下記の2つのファイルをアップロードする。

    ※アップロードは1つずつ行う。

    ①使用画像ファイル・・・今回は「test.jpg」

    ②解析ライブラリファイル・・・「haarcascade_frontalface_default.xml 」

  • アップロード後、下記のコードを入力して、実行する。

import cv2
from matplotlib import pyplot as plt
# 画像読み込み
img=cv2.imread("./test.jpg")
# 画像の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)
# 標準軸の非表示処理
plt.grid(False)
plt.tick_params(labelbottom=False, labelleft=False, labelright=False, labeltop=False)
plt.imshow(img)

※好きな画像を使用している場合は、「test.jpg」の部分を自分用に変える。

  • 実行後、下記のようになれば完了。
    a.PNG

まとめ

  • 初回は顔認識処理ということで、「賢人の方々の知の結晶のおかげで、こんなにも恩恵を受けているのだな」と、水分の跡も見られないまぶたをぬぐいながら、記事を書く。
  • とはいえこの模倣学習は、GoogleやQiitaや作成者等の多くの方々の偉大な功績によるものなので、毎回の礼拝作業は欠かさない。
  • 「今後も、自己満足促進のための素晴らしきプログラム探しに精進しよう」と、堂々他人依存決断。

参考

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5