なんか顔認証のシステム作りたいなーと思い、OpenCVの基礎的な勉強から始めてます。, OpenCVでは、顔・目などを検出できるカスケード識別器の学習済みファイルを事前に用意されています。 顔、目などのパーツごとにカスケードファイルが用意されています。, OpenCVのカスケードファイルhttps://github.com/opencv/opencv/tree/master/data/haarcascades, リポジトリのトップページから写真右下の緑色のボタン「clone or download」をクリックしてzipファイル形式でソースコードをダウンロードできます。, zipファイルを解凍して、Pythonのソースコードのプロジェクトフォルダに格納しておきます。, gitをインストール済みであれば以下のコマンドでOpenCVのモジュールを取得することもできます。, 目を検出したい場合は「haarcascade_eye.xml」を利用するとできます。, 鼻や口はGithubのopencv_contribのリポジトリにある拡張版のカスケードファイルを使うことで検出可能です。(使い方は同じです), opencv_contribのカスケードファイル(OpenCVの拡張版)https://github.com/opencv/opencv_contrib/tree/1311b057475664b6af118fd1a405888bad4fd839/modules/face/data/cascades, 画像によっては上手く顔検出できない場合がありますが、その場合はインストールできるカスケードファイルを変更すると上手くいきます。, 私は集めた画像で「_alt.xml」だと上手くいかない画像があったので、「_alt2.xml」に変更しました。自分の集めた画像に合うものを試してみてください。, その場合、detectMultiScaleのminSizeに与えるサイズを大きくすることで上手くいきました。, 顔のパーツで100×100だと大きすぎるので、50×50あたりから少しずつ増やす調整をしていくことで1つだけ検知することができます。, また、顔検出を実施して、その後顔の座標の中という判定を加えることでより正確性を上げることもできます。, OpenCVを使って顔や目、口などを検出する方法として、カスケードファイルを使用する方法を紹介しました。, 次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。. https://github.com/mogamin/eye_blink_detector.git, 東京都中央区晴海に本拠を置くITコンサルティング会社です。技術的な知見に基づいて技術案件から上流案件まで幅広くご支援しています。. Why not register and get more from Qiita? 学習済みファイルは下記リンク先からダウンロードできます。, 今回は顔検出のために「haarcascade_frontalface_default.xml」を使ってみます。, https://github.com/opencv/opencv/tree/master/data/haarcascades, 幅広く詳解されています。 今回は前回に引き続き、OpenCVを使用して動画に現れる人を検出していきましょう。利用する手法は、フレーム間差分法を使用していきます。1.環境・使用材料言語:pythonライブラリ:OpenCVエディタ:spyder使用した素材:素材元:2 Wake up!」と表示させました。, 目を閉じているにもかかわらずEAR値が0.2を超える場合もあり、調整は一筋縄ではいきません。aspectとは言え、画像に写っている顔のサイズに依存する場合があるのかもしれません。顔のサイズを一定の大きさにしてからパーツの検出を実施する改修を加えました。, 顔のサイズが大きくても小さくても、一定のEAR値(ここでは0.55とした)で、柔軟な判定ができました。小さく画像ですいません。恥ずかしいもので。, なかなかいい結果を出すことができました。ただ残念ながら、私のような「もともと眠そうな顔」をしている人に「本当は眠くない」ことを証明できませんでした。常に目を大きく開ける方法を誰か教えてください。, 本記事のプログラムは以下のgithubで公開しております。 Wake Up!」とやさしい心の声で起こしてくれる。, 顔検知で最初に思いつくのがOpenCVのHaar-like特徴分類器です。これは、画像の一部分を抜き出して個々に明暗差を算出し、それを繰り返して組み合わせることによって特定の物体を判別するものです。機械学習の一つの手法です。, この手のサンプルコードはいくらでもあります。処理速度も早く、実行結果も悪くありません。悪くありませんが、判定は検知した目の数でしかありません。これでは眠そうかどうかの微妙な判定には使えません。もう寝ちゃっているのですから。実現したいのは「眠そうにしている」というまぶたが閉じるか閉じないかの微妙な判定です。OpenCVだけでは難しいことがわかりました。, 目を検出するだけではなく、目の形を検出する方法を模索する中でDlibというライブラリを見つけました。これはOpenCVよりも細かく検出できます。, いい感じですね。顔の各パーツが点で取れるので、これで目が開いている時と閉じている時とのわずかな差を見つけることができそうです。ただ、FPSが平均で11ぐらいしか出ていません。処理速度が犠牲になるのは、まぁわかりますが。。。でも、実用性がないのであれば話になりません。, 調査した結果、処理が遅いのは顔のパーツ検出ではなく、顔自体の検出であることがわかりました。そこで、顔の検出には処理速度の早いOpenCVを採用し、パーツの検出にはDlibのままで再度、実験です。, 良くなりました。FPSは30が楽に出るようになりカクつきもなくなりました。これで多少重い処理を入れても大丈夫そうです。では次のステップにいきましょう。, 最初は目を四角で囲い、その面積の大きさで判定しようと試みましたが微妙にうまくいかず。どうしたもんかとネットを探していたときに、これだっ!という論文に出会いました。まばたきの検出には、次の計算式でEAR(eyes aspect ratio)を求めることが有効とのことです。, 期待していた通り、目の開き具合を算出しそれを検出することで、「今にも眠そうな顔」を判定できました。論文によるとEARの閾値は0.2ぐらいがよいとされているので、(右目)0.2+(左目)0.2=0.4を下回ったら「Sleepy eyes. https://algorithm.joho.info/programming/python/opencv-haar-cascade-face-detection-py/, Alibaba Cloudを上手に使うためのノウハウの共有を目的としたコミュニティ. ©Copyright2020 Node.jsで暗号資産アービトラージ.All Rights Reserved. OpenCVのカスケードファイルを利用して顔や目、口などを検出する方法を紹介します。, Pythonのオープンソースの画像処理ライブラリOpenCV(Open Source Computer Vision Library)を利用して顔や目、口などのパーツを検出します。, Opencvではカスケードファイルを利用して顔や目、口を検出できます。 Help us understand the problem. 技術で自分の世界を広げましょう。 What is going on with this article? Node.jsの技術情報を書いています。 とあるイベントで、ドライバーの眠気をアラートする仕組みを画像処理と温度センサーで実現する、そんな展示を見つけました。画像処理には知見があったので、よし俺もやってみようと思い立ったのが始まりでした。それと、眠くないのに「よく眠そうな顔をしている」と、大きく開く目ではないことから誤解を招くことがあり、本当は眠くないことを証明してやるぞ。という気持ちも重なりました。 はじめまして、ケネです。 By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. とあるイベントで、ドライバーの眠気をアラートする仕組みを画像処理と温度センサーで実現する、そんな展示を見つけました。画像処理には知見があったので、よし俺もやってみようと思い立ったのが始まりでした。それと、眠くないのに「よく眠そうな顔をしている」と、大きく開く目ではないことから誤解を招くことがあり、本当は眠くないことを証明してやるぞ。という気持ちも重なりました。, 眠そうになったら「Sleepy eyes. What is going on with this article? OpenCVでは、顔・目などを検出できるカスケード識別器の学習済みファイルを事前に用意されています。 学習済みファイルは下記リンク先からダウンロードできます。 今回は顔検出のために「haarcascade_frontalface_default.xml」を使ってみます。 不明点や質問があればお気軽にコメントください。, Node.js(Express.js)アプリケーションをWeb公開する際のセキュリティ設定, アービトラージツールを外部サーバに配置したい!これだけは確認しておきたいNode.jsセキュリティ設定, https://github.com/opencv/opencv/tree/master/data/haarcascades, https://github.com/opencv/opencv_contrib/tree/1311b057475664b6af118fd1a405888bad4fd839/modules/face/data/cascades. By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. Viola Jones face detection and tracking explained, Real-Time Eye Blink Detection using Facial Landmarks, Eye blink detection with OpenCV, Python, and dlib, https://github.com/mogamin/eye_blink_detector.git, http://ensekitt.hatenablog.com/entry/2017/12/19/200000, https://note.nkmk.me/python-opencv-face-detection-haar-cascade/, https://note.nkmk.me/python-opencv-mosaic/, http://workpiles.com/2015/04/opencv-detectmultiscale-scalefactor/, you can read useful information later efficiently. OpenCVによる非ディープラーニングの顔認識でどこまでできるのか試してみた! ライトコードメディア編集部 ... 具体的には、C:\Users\<ユーザ名>\gitlocal\Face-Detection-OpenCV\data のデータのうち、test5.jpgを差し替えています。 画像差し替え後、この部分から処理を再実行しました。 具体的には、 … Why not register and get more from Qiita? 1.4 目や鼻(顔のパーツ)を検出したいときに使うカスケードファイル; 2 OpenCV(Haar Cascades)で検出できない場合の対処法. Help us understand the problem. AliEaters (Alibaba Cloud Developers meetup), Azure×コミュニティ「Azure Rock Star Community Day」イベントレポート, https://algorithm.joho.info/programming/python/opencv-haar-cascade-face-detection-py/, haarcascade_licence_plate_rus_16stages.xml, 勾配、エッジ、コーナー(Gradients, Egdes and Corners), サンプリング、補間、幾何変換(Sampling, Interpolation and Geometrical Transforms), ピラミッドとその応用(Pyramids and the Applications), 画像分割、領域結合、輪郭検出(Image Segmentation, Connected Componets and Contour Retrieval), 背景統計量の累積(Accumulation of Backgorund Statistics), OpenCVはIntel社で1999年に Gary Bradskyによって開発が開始され、2000年に最初リリースされた, 画像処理・画像解析および機械学習等の機能を持つC/C++, Java, Python, MATLAB用ライブラリ, プラットフォームとしてmacOSやFreeBSD等すべてのPOSIXに準拠したUnix系OS、Linux、Windows、Android、iOSをサポート, 1999年にプロジェクト開始。最初のアルファ版が公開されたのは、国際会議CVPR2000年である, 2008年にWillow Garageによるサポートを受け、開発情況が再び活発になった, 2009年10月に2回目のメジャーバージョンアップが実施され、2.0版がリリースされた, 2015年6月に3回目のメジャーバージョンアップデートとしてOpenCV 3.0が正式リリースされた, OpenCV 3.0では従来のC言語関数形式のインターフェースはレガシーAPI扱いとなり、メンテナンスが終了している, you can read useful information later efficiently. 一人でも多くの方と「自分でもできた」感覚を共有したいので、なるべくわかりやすく、実体験ベースでのブログを心がけています。