November 15, 2020
by

主にサッカー競技団体向けに営業、コンサルティングを行っております。 映像・メディア事業推進部の上田です。現在は主に野球のメディア向けサービスやシステム開発に携わっています。, 当社では、データの中でも特にプレーデータと呼んでいる、試合中に起きる出来事をベースにしたデータの扱いを得意としています。例えば野球では投球・打球、サッカーではパス・シュート・クロスなど、発生した事象を1レコードとして記録したデータです。, また、昨今ではトラッキングやセンサリングなどプレー以外のデータを取得したり、機械学習を使ってデータを活用したりなど、様々な利用ができるようになっています。, 今回はその中でも画像データについて、「PythonとOpenCVを使い、画像の中から顔を高い精度で検出する」をテーマにご紹介します。, 以下のバージョンでやっていきます。OS:Windows10 Pro 1909Python :3.7.3OpenCV :3.4.2パッケージ管理ツール:Anaconda 2020.02Spyder:4.1.3, Anacondaでの OpenCV ライブラリのインストール方法はこちら。(https://anaconda.org/conda-forge/opencv), OpenCVの顔検出をするための、学習済みのファイル(haarcascade_frontalface_alt.xml)はこちら(https://github.com/opencv/opencv/tree/master/data/haarcascades)からダウンロードできます。任意のフォルダに置いておきましょう。今回は正面から見た顔検出器を使います。, いきなりですが、最終的なサンプルコードを記載します。コメントアウト(#)の個所に数字を振ってあります。後段の説明ではその数字を参照し、コード位置を確認してください。, 複数の画像をまとめて検出にかけるとき扱いやすくするため、globメソッドを使い、変数pic_fillesに指定したフォルダ内の.jpgファイルのパスをリスト化しておきます。そして、ダウンロードした学習済みのデータが入っているxmlファイルを読み込みます(#1)。, 検出すると、変数face_rectに検出した物体(長方形)の情報(X, Y, Width, Height)がnumpyのndarray配列で入ります。 X,Yは長方形の左上の座標点で、Width(幅)は座標(X,Y)から右方向の長さ、Height(高)は座標(X,Y)から下方向の長さです(#3)。, なお、常にWidth=Heightとなるので正方形で検出されます。また、1枚の画像から、複数の物体を検出します。上のサンプルコードでは、最初の検出の数値でforループを抜けるようにしてあります。, 今回は、事前加工として画像をグレースケール(白黒の画像)に変換しています(#4)。, パラメータについては、OpenCVの公式ドキュメントを見ると複数あることがわかりますが、今回はそのうち以下3種類を使います。, これらの最適な値を導くため、あらかじめ「1つの画像に1人の人間」という画像に対して、複数のパターンで検証しました。検出結果では長方形を赤色で塗り視認しやすくしています(#5)。, min_sizes = [400]scale_factors = [1.25]min_neis = [3], 40枚中、何らかの検出ができたのは7枚だけ。ただ、7枚全てで顔を適切に検出、顔以外の検出(誤検出)は0枚でした。, min_sizes = [15]scale_factors = [1.05]min_neis = [2], 40枚中、何らかの検出ができたのは39枚。うち32枚で顔を適切に検出、誤検出は7枚ありました。, 右上の写真(sample_31.jpg)だと、腕のあたりを顔として検出してしまっています。, いずれのパラメータも数値が大きいほど、 ・何らかの検出ができれば、正しく顔を検出しやすく、誤検出はしにくい ・ただし、検出無しも多くなる, そして数値を小さくすると、 ・何らかの検出ができた場合でも、顔も顔以外も検出しやすい ・ただし、検出無しとなることは減る, つまり、設定値が大きいほど厳しめの検出、小さいと緩めの検出、と言えそうです。この簡単な実験から、大きな数値から小さな数値に (厳しめから緩やかに) 順に処理をすれば、良い結果になりそうです。, min_sizes = [400, 350, 300, 250, 200, 150, 100, 50, 25, 15] scale_factors = [1.25, 1.2, 1.15, 1.1, 1.05] min_neis = [3, 2], 実際のプログラムではこのようにパラメータを設定し、厳しい検出の組み合わせから順に緩やかになるように検出してみました(#6)。, 結果は40枚中、何らかを検出できたのは39枚。うち38枚で顔を適切に検出、誤検出は1枚のみでした。, sample_28、29、33、38の4枚に対しては、パターン1では未検出、パターン2では誤検出していたところ、パターン3の組み合わせ処理では顔を正しく検出できるようになりました。, 残念ながら今回のパラメータではキャプチャ右上のsample_31.jpgは腕の検出となってしまいました。これは頭部にタオルを巻いていることが影響していると思われます。そして実際に野球、サッカー、バスケットボール選手の写真を使った検出でも、野球のように帽子を被った写真では未検出や誤検出が多い傾向がありました。, 未検出や誤検出を減らし顔のみを正しく検出することができれば、顔を検出した後の様々な処理が非常に楽になります。, 最後に、OpenCVの顔検出器のように公開されている学習済みモデルを使う際の、メリットとデメリットについて触れておきます。, メリット ・学習用のデータ(画像)を大量に集める必要がない ・機械学習の手法を学ぶ必要がない, デメリット ・手に入れたい結果にならない可能性がある (検出したい画像と学習済みデータにミスマッチがある場合や、適切なパラメータを見つけられない場合), 以上、「PythonとOpenCVを用いて、複数の画像の中から顔のみを正しく検出する」でした。(検証用の人物画像は、ぱくたそ(www.pakutaso.com)の画像を用いています), 配信サービス部の土屋です。主に野球の速報配信サービスに携わっています。 Windows C#版 OpenCV、多くのサンプルが提供されています。, 次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。, こんにちは。エクシードシステム代表でフリーランスITエンジニアのY.Sakamotoです。このサイトはシステム開発に関連する日々の成果や、ちょっとした気づき等をアウトプットを兼ねてなるべく簡潔に情報共有する目的で運営しています。一人でも多くの方のお役に立てれば幸いです。また、本サイトで紹介するサンプルソースコードは、別途記載がなければ全てMIT Licenseですので、商用業務等でもお気軽にご利用いただけます。, エクシードシステムは、実践的で良質かつ豊富なIT技術を基盤に、経営戦略やマーケティングなど多角的な視点を踏まえたスピード感のあるサービスを提案・提供することを以って、お客様と共にビジネス目標の達成、および全てのステークホルダーのロイヤリティが向上することをゴールとして活動しています。. 「カスケード分類器?」となるかもしれません。, 機械学習的に言うと、顔画像を膨大に学んだモデルみたいなモノになります。 公式がGitHub上に置いてあるXMLファイルをダウンロードしましょう。 https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_default.xml, 今回は、このは画像を顔認識・顔検出してみます。 ファイル名は、face.jpgです。, ローカルで検証するので、自分の顔画像でもいいと思います。 最小検出サイズ設定を小さくすると、右上の背景の看板のモザイク画像も顔として認識していました。, 実質十数行程度のプログラムでこれほどまで簡単に顔認識機能が実装できてしまうとは、凄いの一言です。OpenCVは画像を利用した機械学習などでも必須のライブラリですので、これまで触ったことがない方は是非この機会に試してみてはいかがでしょうか。, OpenCvSharp4.Windows Software Development And Consulting Services. OpenCvSharp4.Windows Windows C#版 OpenCV、多くのサンプルが提供されています。 OpenCV OpenCV公式 今回の画像では、ほぼ満点の出来ですね。, 最後にエラーが出た場合について、記しておきます。 エラーが出なかったなら、以下は読む必要はありません。, detectMultiScale関数がないという内容です。 Webサービスなどでは、怖くて自分の顔写真なんてアップできません。, たった、これだけで顔認証・顔検出ができてしまいます。 各自で変更が必要なのは、次の値です。, XML_PATHは、ダウンロードしたカスケード分類器のファイルのパスです。 Copyright © DataStadium Inc., All Rights Reserved. これは、正常にカスケード分類器のファイルを読み込めていないことが原因です。, XML_PATHのパス設定が、適切ではないということになります。 適切にパスを設定すれば、このエラーは解決するはずです。, INPUT_IMG_PATHのパス設定が、適切ではないことが原因です。 適切にパスを設定すれば、このエラーは解決するでしょう。, OpenCVを利用すれば、画像認識・画像処理は簡単に行うことができます。そして、プログラミング言語にPythonを選ぶのであれば、簡単にPythonからOpenCVを利用することが可能です。この記事では、OpenCV-Pythonをインストールする方法を解説しています。. Selenium使用時にDriverServiceのコマンドプロンプトを表示しない方法, VSCode上の.NET Core開発でカレントディレクトリが取得できないときの対応, Visual Studioで出力先フォルダーにNuGetのxmlやpdbファイルを出力しない方法(xxproj編), 既存のXLSXファイルをNPOIで保存してEXCELで開くとファイルの回復確認が表示される問題への対応, Laravel-DataTablesのDataTableサービスでViewからControllerにパラメータを渡す方法, VSCodeのMarkdownPreviewEnhancedでPuppeteerを利用してPDF出力するとき用紙設定を行う方法, LinuxでVSCodeのVim拡張利用時にインサートモード終了で日本語入力をオフにする方法. エンジニアとしては経験が浅く、まだまだ勉強しなければいけな…, フットボール事業部の高橋です。 今までコードすら書いたこ…, データスタジアムのエンジニア二宮です。 当社でも大小様々なサーバーレスシステムの構築、とりわけAWS Lambdaの利用は増えてきていま…. C++のプロジェクトを用意4. ©1999-2020 EXCEEDSYSTEM All rights reserved. ソースの用意5. 'C:/temp/haarcascade_frontalface_alt.xml', https://github.com/opencv/opencv/tree/master/data/haarcascades, scaleFactor – 画像サイズをどの程度縮小して検出していくかを指定するパラメータ。, minNeighbors – 検出した長方形が、どの程度隣接して検出していなければいけないかを指定するパラメータ。, minSize – 最小オブジェクトサイズのパラメータ。この値より小さいオブジェクトは無視される。. INPUT_IMG_PATHは、顔が映っているjpg画像のパスとなります。 目次 1. C#からOpenCVを使うと、ひと昔前は自分でC++/CLIのラッパーを書く必要があるなどかなり面倒でしたが、昨今では有志がとても素晴らしいライブラリを公開してくれているため、すっかり参入障壁が取り払われたと言っても過言ではありません。, ここで紹介するコードはあくまで目的の機能を分かりやすく説明/実現するための最小限コードとなっています。このコードや説明を参考にされる場合は適切なエラーチェックや、充分な品質/動作検証を行って頂くようにお願い致します。, ソースコードは以下の1本のみ、VisualStudio2019/C#/.NET Core3.1で作成しています。, 今回のサンプルでは、以下の判定画像ファイルと顔認識カスケードファイルを使用します。, 顔認識カスケードファイル(haarcascade_frontalface_default.xml), また、上記の他にNuGetからOpenCvSharp4.Windowsパッケージを導入しておく必要があります。, プログラムを実行すると、以下のように判定画像上で検出された顔(今回は私のアバター)を黄色の四角形で囲んで表示します。アニメキャラ的な画像でも、しっかりと顔として認識できているのが凄いですね。 なお、OpenCVを使った顔検出の方法は 「OpenCVで顔を検出する【Python】」の記事で詳しく解説しています。 検出した範囲に対してモザイク処理を実施する. OpenCV-dlibライブラリを使用してフェイスマスクを重ね合わせるフェイスマスクは、COVID-19の蔓延に対する最善の防御策の1つであることが示されています。しかし、これはまた、鼻、口、顎などの顔の特徴を中心に構築された顔認識アルゴリズムの失敗につながりました。 OUTPUT_IMG_PATHは、顔認識・顔検出した後の結果画像のパスです。, 上記のサンプルコードを実行すると、OUTPUT_IMG_PATHに画像ができているはずです。, 手前にいる顔の見えない女性以外は、すべて顔認識ができています。 OpenCVは画像を利用した機械学習などでも必須のライブラリですので、これまで触ったことがない方は是非この機会に試してみてはいかがでしょうか。 参考ウェブサイトなど. Python, OpenCVでカスケード型分類器を使った顔検出と瞳検出(顔認識と瞳認識)を行う。以下に公式のチュートリアル(英語)がある。OpenCV: Face Detection using Haar Cascades ここでは、静止画: 画像ファイルを読み込んで顔検出と瞳検出 動画: カメラを使ってリアルタイムで顔検出と瞳検出 について … 顔認識や顔検出を気軽に試してみたいと思いませんか? 実際に自分でやるといろいろと見えてくることもあります。, OpenCVのインストールが必要です。OpenCVのインストールには、次の記事を参考にしてください。, 次は、顔認識・顔検出用のカスケード分類器のファイルをダウンロードです。 今回の構成3. OpenCVにあるHaarlike-Cascade顔検出器を使ってみました. 正面顔専用検出器ですが,角度と引数としてあるscaleFactor, minNeighborsを色々いじって斜め顔の検出も試してみました. OpenCVとC++とVisualStudioで顔認識してみる2. 顔認識や顔検出は難しいことだと思っていませんか?実は、全くそんなことはありません。PythonでOpenCVを使えば、写真から人物の顔を認識・検出することが、とても簡単にできるのです。この記事を読めば、早ければ30分もかからずに、顔認証・顔検出が可能になります。 今回はOpenCvSharpを使い、C#で顔認識(検出)を行なう方法を紹介します。 うち32枚で顔を適切に検出、誤検出は7枚ありました。 右上の写真(sample_31.jpg)だと、腕のあたりを顔として検出してしまっています。 いずれのパラメータも数値が大きいほど、 ・何らかの検出ができれば、正しく顔を検出しやすく、誤検出はしにくい

クリスタ 線画抽出 ゴミ取り 7, スプラトゥーン2 ウデマエ 上がり方 4, ユーチューブ 作間 せどり 7, Rav4 2wd 4wd どっちがいい 38, ハムスター 治療 しない 4, 犬 口輪 紐 7, バーグマン 200 装備 33, Benq Xl2411p スピーカー 5, フォレスター アドバンス Sモード 燃費 4, 恋は続くよ どこまでも 最終回 ゲスト 7, ストレス 目の 痛み 5, 森川 弁護士 大阪 4, Custom Field Suite ラジオボタン 4, 仮面ライダー 平成二期 ランキング 45, のび太の宇宙 開拓 史 違い 4, マリオ64 16枚rta 解説 37, コーヒーメーカー カス 捨て方 4, Xo 酒 意味 12, Sixtones ファン 特徴 10, ブリタ 蓋 部品 5, Ff11 ウォンテッド ソロ 5, 紅蓮華 カラオケ 点数 5, ザキング 韓国ドラマ 感想 4, A75c3639 リモコン 故障 7, 運命の人 前兆 期間 28, Tc タープ ヘキサ 7, 洋楽 恋愛 片思い 和訳 4, 友人 お礼 プレゼント 15, あつ森 住人 ランキング 22, Vs嵐 10の秘密 動画 44, 猫 尿毒症 余命 4, Ipad Pro スリーブケース 4, 履歴書 送付 連絡 メール 11, Pubg Mobile 荒野行動 パクリ 49, Aviutl 画像 読み込めない 9, 富士通 Sdカード ドライバ 6, Ps4 カラオケ Dam 遅延 20, しまむら 2020 夏 48, 赤ちゃん 癇癪 7ヶ月 4, 会社 グループライン 退職 6, After Effects Vj素材 26, 女子サッカー U18 メンバー 4, 妊娠中 耳管開放症 治し方 8, 色違いネクロズマ 厳選 シンクロ 5, デジタルフォトフレーム 音楽 入れ方 28, Excel Vba シートを開いたときに実行 4, 農機 エンジン 修理 4, 払戻請求書 書き方 Ja 44, クワイエットプレイス 2 レンタル 4, Sigma Fp レビュー 5, Pdf 文字 情報 削除 4, 黒い砂漠 加工 レベル上げ 9, 3dsll 充電器 純正 8, シャワーヘッド 外れ ない クエン酸 4, ユニフレーム 焚き火テーブル Ikea 6, 宅建 2020 テキスト 4, ホテルニューアワジ ヴィラ楽園 料金 6, Wps Office Standard Edition 4, Vmotion Storage Vmotion 同時 18, Line 1週間 未読無視 15, 宮沢りえ ワンピース どこの 32, キスマイ 番組 終了 49, Php Pdo Select Max 8, Google Meet 音楽を流す 16, イオン 日の出 自転車 4, 早稲アカ 模試 結果 6, Bose スピーカー テレビ 接続方法 Hdmi 8, 靴紐 販売 店 9, 松坂桃李 自宅 茅ヶ崎 9, Esxi パスワード変更 Vcenter 14,

Comments are closed.