0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

人工知能(機械学習)で、第6感の可視化に挑戦 その①

Last updated at Posted at 2018-04-01

第6感をAIで可視化できないか?という試みの 第1弾になります。
全体のお話はこちら
人工知能(機械学習)で、第6感の可視化に挑戦

はじめに

今回の範囲はこちらになります。
AIの学習に使うデータを用意することが今回のゴールです。

gaiyou_1.jpg

画像収集

著作権

インターネット上にある画像を学習データとして使う場合、著作権が問題になりえますが、
情報解析を行うことを目的とする場合においては問題ないようです。

下記サイトを参考にさせてもらいました。

手段

画像検索エンジンのAPIを使う、スクレイピングする、という手段があるようです。

下記サイトが参考になりました。

OpenCVで顔部分を抜き出し

選手は当然球団ロゴ入りの帽子をかぶっています、
帽子のロゴを顔の特徴と捉えてしまわないように、集めた画像から顔っぽい部分を抜き出します。
画像処理ライブラリのOpenCVを使うことで、顔検出が簡単にできるようです。

参考サイト

こちらを参考にさせてもらいました。

ソース(python)

フォルダにある元画像全てを対象に、顔部分を抜き出します。

face_choice.py

import cv2
import numpy as np
import os

# 分類器(以下から取得)
# https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml
cascade_path = './model/haarcascade_frontalface_default.xml'

# 入出力ディレクトリ
input_path = './data/train/yashu/'
save_path = './data_face/train/yashu/'

#カスケード分類器の特徴量を取得する
faceCascade = cv2.CascadeClassifier(cascade_path)

# 顔検知に成功した数(デフォルトで0を指定)
count = 0

# 指定したフォルダにある全画像を繰り返し処理
file_list = os.listdir(input_path)
for file_name in file_list:
    file_path = input_path + file_name
    #print(file_path)
    # ファイル読み込み
    img = cv2.imread(file_path, cv2.IMREAD_COLOR)
    # グレースケール変換
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 物体認識(顔認識)の実行
    faces = faceCascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=1, minSize=(30, 30))
    if len(faces) > 0:
        for x, y, w, h in faces:
            # 顔を抜き出し保存
            cv2.imwrite(save_path + 'face_' + str(count) + '.jpg', img[y:y+h, x:x+w])
            count += 1
    else:
        print('NoFace: ' + file_name )

実行後

無事、抜き出せて・・・ません。。。
お手製ドアラ人形は、顔と認識できなかったようです。
大丈夫です。人の顔なら、ちゃんと抜き出せます。 (私の手芸テクの問題でしょう・・・)
dra_judge_doara.PNG

OpenCVでデータの水増し

学習には大量の画像が必要です。
選手の画像が少ないので、画像処理ライブラリのOpenCVを使って、画像を加工してみます。

参考サイト

データの水増しについてはこちらが参考になりました。

ソース(python)

openCVで元の画像を二極化した画像を追加しました。

face_choice.py

# 二値化
_ ,binary = cv2.threshold(img[y:y+h, x:x+w], 120, 255, cv2.THRESH_BINARY)
cv2.imwrite(save_path + 'binary_' + str(count) + '.jpg', binary)

実行後

無事、新しい画像が追加されました。

dra_judge_doara_plus.PNG

まとめ

実行ソースはこちらにアップしております。github

次回

投手と野手学習モデルを作成

0
2
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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?