Python+OpenCVを使用して顔追跡を実装するための50行のコード

Python+OpenCVを使用して顔追跡を実装するための50行のコード

こんにちは、親愛なる友人の皆さん、またお会いできて嬉しいです。

私はただ興味本位でこのToutiaoアカウントを作成しました。まずは、注目してくれた友人たちに感謝したいと思います。もちろん、コンピュータ関連の分野で友人と会って、一緒に議論したりコミュニケーションをとったりしたいと思っています。私は実在の人間であり、記事を盗用するセルフメディア組織の一員ではないことを強調しておきます。私たちはみんなお互いにコミュニケーションをとることができます!

この記事では、AI関連の顔追跡と顔認識に関するいくつかの知識について説明します。もちろん、このチュートリアルは(上部)の部分であり、python + opencvを使用して顔認識と追跡を実現する方法について説明します。下部では、pythonを使用して、指紋の比較による顔認証と顔ロック解除を実現します(興味のある方は事前に注目してください)。

この 2 つのレッスンにはコードがあまり含まれていないので、誰もが理解しやすいように、できるだけ多くのコメントを追加するようにします。では、これ以上無駄話をして時間を無駄にせず、本題に入りましょう。

[[234571]]

オープンCV:

Opencv は現在非常に人気のあるビジュアル ライブラリであり、複数の言語をサポートしています。 OpenCV について話すときは、そのカスケード分類器について話す必要があります。

写真に顔があるかどうかを判断したい場合、初期の方法は、何千もの分類器を使用して最初から最後まで照合することです。これには何も問題がないように思えますが、判断する写真がもっとある場合はどうなるでしょうか?それは長い時間がかかるかもしれません。 Opencv のカスケードは、顔の特徴を決定するために使用されるこれらのコンテナーをマッチングのために複数のレイヤーに分割し、一致しないレイヤーは破棄されます。

それは、あるグループが面接のために会社に行くと、会社が最初に求める条件は男性のみなので、女性のグループは去ります。会社は学士号のみが必要だと言うので、大学卒業生のグループは去ります。会社は2年間の就業経験が必要だと言うので、別のグループが去り、といった具合です。この作業量は、性別に関係なく全員に面接してプロセスを進めてもらうよりもはるかに簡単です。

環境トポロジ:

オペレーティング システム: Windows 7

Python バージョン: 2.7.14

Opencv バージョン: 3.x

環境構成:

1. Pythonをインストールする(これについては言及しませんでした)

2. Opencvをインストールする

これは公式ウェブサイトからダウンロードできます: https://opencv.org/

バージョン 3.3 をダウンロードしたと記憶していますが、最近 Github にアクセスできないようです。ホストの問題なのか、それとも何か他の原因なのかはわかりません。アクセスできる場合は、メッセージを残していただければ、hosts ファイルを修正します。アクセスできない場合は、メッセージを残すか、プライベートメッセージを送信していただければ、以前にダウンロードした opencv をパッケージ化してお送りします。

ダウンロードしたら、解凍するだけです。Python インストールの親パスに解凍することをお勧めします。

3. pipを使ってnumpyをインストールする

cmd を開いて次のように入力します:

  1. pip インストール numpy

インストールすると、インストールが完了するとプロンプトが表示されます。

4. opencv のインストール パスを見つけます (たとえば、私の場合はドライブ D です)

cv2.pyをD:opencvopencv3.x uildpython .7\x64パスにコピーします。

注: 私の Windows バージョンは 64 ビットなので、X64 を選択しました。32 ビットの場合は、X86 フォルダーの cv2.pyd を選択する必要があります。

コピーした後、Python インストール パスの下の Lib/site-packages フォルダーに貼り付けます。

基本的には上記を完了すればOKです。コードを書く前に環境が正常に構築されているかテストしてみましょう。

CMD コマンドラインで python を実行します。

  1. numpyをインポートする 
  2. cv2をインポート

エラーが報告されなければ、インストールは完了です。

実施原則:

1. コンピューターカメラを呼び出す

  1. cv2.ビデオカメラ(0)

2. フレームごとにカメラデータを取得します(各フレームの面にフレームを追加するのと同じです)

  1. cam.赤()

3. カメラデータの各フレームをOpenCVに取り込み、分類器で顔を識別させる

  1. マルチスケール検出()

4.顔がある場合は、顔マークの枠を追加します

  1. cv2.長方形()

5. 画像フレームの後にフレームアニメーションを出力する

  1. cv2.imshow( '私のカメラ' ,フレーム)

コード実装:

最初のステップは、認識関数を定義することです。

まずは写真を載せておきます。この部分はより重要なので、以下で詳しく説明します。

(コード上部)

6〜7行のコードの説明:

まず、分類子を作成します。なぜこれを行う必要があるのでしょうか?

haarcascade で始まる参照ファイルは、opencv の顔カスケード分類器に関するものです。opencv フォルダーのsourcesdatahaarcascadesで確認できます。

説明機能:

顔検出器(デフォルト): haarcascade_frontalface_default.xml

顔検出器 (高速 Haar): haarcascade_frontalface_alt2.xml

顔検出器(側面図): haarcascade_profileface.xml

目検出器(左目): haarcascade_lefteye_2splits.xml

目検出器(右目): haarcascade_righteye_2splits.xml

口検出器: haarcascade_mcs_mouth.xml

鼻検出器: haarcascade_mcs_nose.xml

ボディ検出器: haarcascade_fullbody.xml

顔検出器(高速LBP):lbpcascade_frontalface.xml

1:haarcascade_frontalface_alt.xml

スタンプベースの 20x20 ジェントル アダブースト正面顔検出器。

2:haarcascade_frontalface_alt2.xml

ツリーベースの 20x20 ジェントル アダブースト正面顔検出器。

3:haarcascade_frontalface_alt_tree.xml

スタンプベースの20x20ジェントルアダブースト正面顔検出器。この検出器はカスケードの代わりにステージ分類器のツリーを使用します。

4:haarcascade_frontalface_default.xml

スタンプベースの 24x24 離散(?) adaboost 正面顔検出器。

上記の 4 つをテストしましたが、haarcascade_frontalface_alt.xml が最も効果的でした。他のものを 1 つずつテストすることもできます。

グレースケールを設定:

グレースケールは顔の輪郭のコントラストを強調するように設定されており、精度を高めるために不可欠です。

コアコード分析:

DetectMultiScale関数は、オブジェクトを検出するための一般的な関数です。紹介しましょう。

グレー: これはグレースケールに変換された画像です

scaleFactor: 補正パラメータ。一般的には 1.1 ~ 1.5 の値が適しています。調整して効果を確認することができます。

minNeighbors: 現在周囲にいくつのオブジェクトがあるかを定義します

minSize: ウィンドウサイズを設定する

フラグ: 少し抽象的。デフォルトまたは上記のフラグを選択してください

ボックスを描きます:

xywh を定義し、for ループを使用して faces 変数の座標を読み取り、rectangle() 関数を使用してボックスを描画します。

コードの次の部分:

(コードの下部)

さて、コードを書いたら、コードの上部と下部を組み合わせて実行して試してみましょう。

皆さんはそれで我慢するしかありません。私のノートパソコンのカメラはちょっと粗悪ですが、動き回る人を完璧に検出できます。ビデオをアップロードできないので、自分でテストしてください。

サンプルコードはまだパッケージ化していません。必要な場合はWeiboで送ります〜

<<:  パスワード危機: ディープラーニングがパスワードクラッキングを加速!

>>:  企業のアウトバウンドコールをインテリジェンスで再構築するXunzhong CommunicationsがYunxun Skylarkインテリジェント音声ロボットを発売

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

グラフ データの分野における Oracle Fermat テクノロジーの利点は何ですか?

[51CTO.com からのオリジナル記事] データは間違いなく企業にとって最も重要な資産の 1 ...

2021 年の人工知能と自動化のトレンド

[[430280]]特にリモートワークの増加と労働力不足により従来の労働パターンが変化する中、多くの...

MITの自律ロボットはUVC光を使用して表面のコロナウイルス粒子を殺します

MITの研究者らは新型コロナウイルスとの戦いに役立つ新しいロボットを開発した。この自律型機械は、微生...

日本の出生率が過去最低を記録、政府は国民が真実の愛を見つけるのを助けるためにAIの助けを求める

[[379564]]日本政府は国民が真実の愛を見つけるのを助けるために AI を活用しています。 (...

機械翻訳から読心術まで、AIは人類のバベルの塔を再建できるのか?

聖書の旧約聖書創世記には、人類が団結して天国に通じるバベルの塔を建てたという話があります。この計画を...

工業情報化部:全国の指定規模以上の産業用ロボット製造企業の営業収入は531.7億元

最近、工業情報化省の公式ウェブサイトは、2020年1月から12月までのロボット産業の稼働状況を発表し...

生成AIにおけるデータ制限を克服する方法

生成 AI は、トレーニングに使用されるデータに大きく依存します。ただし、データの制限により、望まし...

住宅地での顔認識が論争を巻き起こす。所有者には「好意を示すことを拒否する」権利がある

[[349278]]今は「顔を見る時代」であり、「顔をスキャンする時代」でもあります。明らかに、後者...

「百度脳産業イノベーションフォーラム」が本格始動、伝統産業向けAIソリューションを提案

「将来、AIとは何の関係もないと主張する企業はなくなるだろう」これは、2018年の世界人工知能会議で...

スマートカーのブラックテクノロジーとは何ですか?

AlphaGoとイ・セドルの人間対機械の戦い以来、人工知能はかつてないほどの注目を集め、大手企業が...

...

人工知能認識により、物流会社はダブルイレブンの注文に簡単に対応できます。

2018年のダブルイレブンは、「富豪」に対する私の認識を新たにしました。その前に、アリババの張勇は...

座標系の変換を本当に理解していますか?自動運転にはマルチセンサーが不可欠

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

AIビッグモデルオープンソースヒーロー!ザッカーバーグ氏はLLaMAリークについて議会から質問を受けた。「慣れている」

ザッカーバーグ氏は最近また大きなトラブルに巻き込まれた。リチャード・ブルーメンソール議員(プライバシ...