
Pythonで顔認識プログラム作成!!以外と簡単だったけど課題あり。
今回書いたPythonのコードの概要
作成したコードはこんな感じ↓
import cv2
imageNum = 1
for img in range(100):
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
img = cv2.imread(r'C:\Users\Face_Judge_001\Images\Image' +str(imageNum)+'.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]
cv2.imwrite(r'C:\Users\Face_Judge_001\Images_OnlyFace\Image' +str(imageNum) + '.png', img[y:y+h, x:x+w])
imageNum = imageNum + 1
めちゃくちゃ短いコードです(‘◇’)ゞ
(TensorFlowを使ってクリロナ認識の人工知能を作るための教材です。)
以前の記事で、クリロナの画像を100枚集めました!
そんで、その画像たちから顔だけを取り出すためのプログラムを今回書いた感じです♪
このプログラムはOpenCVというライブラリを使用しています。
OpenCVとはインテルが開発・公開したオープンソースのコンピュータビジョン向けライブラリ。2009年にWillow Garageに開発が移管された後、2015年現在はItseezがメンテナンスを行なっている。なお、2016年5月26日にインテルがItseezを買収することが発表された。 ウィキペディア引用
Pythonプログラムの実行結果
比べるために、顔を切り抜く前の画像を載せます。
(これだと人工知能ちゃんが、ちゃんと学習してくれないんですね・・・)
ということで、顔だけ取り出すプログラムを実行!!
↓
↓
↓
実行結果はこんな感じ・・・
うん、いい感じで切り抜けてますね♪
でも、見たらわかるように割と切り抜きに失敗している画像も。
失敗している画像を一部見てみましょう!
例えばImage66・・・
(そもそもこの画像なんやねんて感じですが・・・)
顔認識プログラムで切り抜いた画像がこちら↓
顔全くないやん!!!
元の画像を見てみるとクリロナが横を向いています。
今回のPythonコードで使用したOpenCVですが、横顔にはどうも弱いようですね。
その他の失敗↓
誰やねん!!!!笑
元の画像を見てみましょう↓
クリロナ大丈夫か???( ;∀;)
この画像に関しては、プログラムが横顔のクリロナよりも、正面を向いているおじさんを認識してしまった感じですね。
今後の流れと、書く予定のプログラム
とりあえず、教材画像が100枚とかなので、顔切り抜きに失敗した画像は手動で削除することにします。
とりあえず、90~100枚くらいの教材でどのくらいの精度の人工知能が作れるかの実験にもなりますしね♪
そして、次はTensorFlowを使って、これらの画像を人工知能に学ばせるプログラムを書こうと思います!!
人工知能のプログラムを書くのは初めてなので苦戦するでしょうが頑張ります( `ー´)ノ
最後までお読みいただきありがとうございました!