Tensorflowで人の顔を見分ける(1)

目的

 Tensorflowで人の顔を分類したい!

 

参考リンク

 TensorFlowでアニメゆるゆりの制作会社を識別する - kivantium活動日記

 

動作環境

 Windows7

 Python3.5.3 (過去ログご参考)

 

やりかた

 全体の流れ

  1.それぞれの人の顔の画像を複数集める

  2.画像から人の顔だけを切出す

  3.切出した顔をチェックして不要なものを削除

  4.学習用データと検証用データに分ける

  5.学習する

  6.学習結果をみる

  7.見分ける

 

 この投稿では1項~3項まで

  1.それぞれの人の顔の画像を複数集める

   1)デジカメなどで画像を収集し

   2)区分したい人ごとに別々のフォルダへ保存

  2.区分したい人ごとのフォルダの画像から人の顔だけを切出す

   1)切出した画像を保存するため保存先のフォルダをあらかじめ作っておく

   2)OpenCVの機能を使って人の顔を判定する

     Pythonで以下を実行

# -*- coding: utf-8 -*
import sys
import os
import cv2

count = 0
face_cascade = cv2.CascadeClassifier('./cascades/haarcascade_frontalface_default.xml')
files = os.listdir('元画像フォルダ')

for file in files:
  imgfile = '元画像フォルダ' + file
  print(imgfile)
  frame = cv2.imread(imgfile)
  gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

  faces = face_cascade.detectMultiScale(gray, 1.3, 5)
  for (x,y,w,h) in faces:
    count += 1
    f = cv2.resize(gray[y:y+h, x:x+w], (200, 200))
    cv2.imwrite('保存先フォルダ/%s.jpg' % str(count), f)

  3.切出した顔をチェックして不要なものを削除

   1)保存先フォルダを目視チェック

   2)人の顔をうまく判定できなかった画像などの不要な画像を削除

 

Good Luck !!!