Pythonとdlibを使用した顔検出

Pythonとdlibを使用した顔検出

「Dlib は、高度なソフトウェアを作成するための機械学習アルゴリズムとツールの最新の C++ ツールキットです」。これにより、顔検出など、多くのタスクを Python で直接実行できるようになります。

dlib のインストールは、「pip install dlib」を実行するだけでは簡単ではありません。dlib を適切に構成してコンパイルするには、まず他のシステム依存関係をインストールする必要があるためです。ここで説明する手順に従えば、dlib を簡単に起動して実行できるはずです。 (この記事では、Mac に dlib をインストールする方法について説明しますが、Ubuntu を使用している場合は、関連リソース セクションのリンクを必ず確認してください。)

最初に確認する必要があるのは、Hombrew がインストールされ、更新されていることです。インストールする必要がある場合は、これをターミナルに貼り付けます:

  1. $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"  

あるいは、Hombrew を更新する必要がある場合は、次のように入力します。

  1. $ 醸造アップデート 

これで、Homebrew を使用して、CMake、Boost.Python、およびシステムで dlib を適切に構成およびコンパイルするために必要な 2 つの依存関係をインストールできるようになりました。

  1. $ brew をインストール cmake  
  2. $ brew boost-pythonをインストール

***、XQuartz を手動でダウンロードしてインストールする必要があります。

これで dlib をインストールする準備が整いました。まず、このプロジェクト用の分離された仮想環境を作成することでこれを実行します。ここでは virtualenv を使用しますが、Python の venv モジュールなど、使い慣れた仮想環境ツールであればどれでも使用できます。 scikit-image ライブラリは、後で dlib に渡す画像ファイルを読み取るために必要なので、pip でインストールする必要もあります。

  1. $ 仮想環境 venv_dlib  
  2. $ ソース venv_dlib/bin/activate  
  3. $ pip scikit-image をインストールします 
  4. $ pip dlibをインストール

それでおしまい。これにより、dlib が利用可能になるはずです。

ドリブ

Dlib はさまざまな顔検出アルゴリズムを提供します。ここで使用するのは、CNN ベースの顔検出器です。事前トレーニング済みのモデルをダウンロードできます: https://github.com/davisking/dlib-models。このモデルの使用は計算コストが高いため、次のコードは GPU 上で実行されます。 CPU を使用することもできますが、速度は遅くなります。

以下の gist の顔検出コードを実行するには、まず仮想環境にさらに 2 つのライブラリをインストールすることをお勧めします。これらのライブラリを使用すると、コードを操作して結果を視覚化することが容易になります。

  1. $ pip matplotlibをインストール 
  2. $ pip jupyterlabをインストールします

ライブラリをインストールしたら、次の点を確認する必要があります。

  • 事前トレーニング済みモデル(http://dlib.net/files/mmod_human_face_detector.dat.bz2)をダウンロードし、プロジェクトのルートディレクトリに保存します。
  • 「faces」という新しいディレクトリを作成し、検出したい顔の .jpg ファイルをこのディレクトリに保存します。

これで、画像内の顔の検出を開始する準備が整いました。 Jupyter Notebookで次のコードを実行することでこれを実行できます。

  1. dlibをインポートする 
  2. matplotlib.patches をパッチとしてインポートする 
  3. matplotlib.pyplot をpltとしてインポートします。  
  4. pathlibからPathをインポート 
  5. skimageからio をインポート 
  6. %matplotlib インライン 
  7. #トレーニング済みモデルをロードする 
  8. cnn_face_detector = dlib.cnn_face_detection_model_v1(  
  9. 'mmod_human_face_detector.dat' )  
  10. 関数 画像内の検出表示する 
  11. defdetect_face_dlib(img_path, ax):  
  12. #画像を読み取りアルゴリズムを実行する 
  13. img = io.imread(img_path)  
  14. dets = cnn_face_detector(画像、1)  
  15. # 顔が検出された場合はそれを表示する 
  16. len(dets) > 0の場合:  
  17. detsd場合:  
  18. rect = パッチ.Rectangle(  
  19. ( d.rect.left (), d.rect.top ()),  
  20. d.rect.width(),  
  21. d.rect.height(),  
  22. 塗りつぶし= False  
  23. 色 = 'b'  
  24. lw = '2' )  
  25. ax.add_patch(矩形)  
  26. ax.imshow(画像)  
  27. ax.set_title(str(img_path).split( '/' )[-1])  
  28. #画像へのパス 
  29. 画像 = list(Path( 'faces' ).glob( '*.jpg' ))  
  30. # 結果を表示 
  31. 図 = plt.figure(図サイズ=(15, 5))  
  32. i 、img をenumerate(images)指定します:  
  33. ax = fig.add_subplot(1, len(画像), i+1)  
  34. 顔検出ライブラリ(画像、ax)

結果

コードを実行すると、画像内の顔の周りに青い四角形が表示されます。数行のコードを書いただけなのに、これはかなりすごいことだと思います。

<<:  デジタル外交はAI外交へと進化している。どのような課題に直面するのだろうか?

>>:  人工知能はどれくらい普及しているのでしょうか?国内初となる人工知能講座が小中学校で実施されました!

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

推薦する

...

FFH—AI 詩作 HttpRequest 練習

オープンソースの詳細については、以下をご覧ください。 51CTO オープンソース基本ソフトウェアコミ...

優れた LLM アプリケーションを構築するための 4 つの重要なポイントのうち、どれを見つけましたか?

これらの提案により、LLM 申請の精度が向上し、適切な LLM を選択する方法についての考慮事項も含...

...

爆発的なソラの背後にある技術、拡散モデルの最新の開発をレビューする記事

機械が人間の想像力を持てるようにするために、深層生成モデルは大きな進歩を遂げました。これらのモデルは...

...

モデルが大きくなればなるほど、パフォーマンスは向上しますか? Appleの自己回帰視覚モデルAIM: そうです

過去数年間、大規模な事前トレーニング済みモデルが NLP の分野で成功を収めてきました。このようなモ...

2017 年最もホットなテクノロジーである人工知能について、あなたはどれくらい知っていますか?

2017 年の最もホットなテクノロジートピックは間違いなく人工知能です。人工知能は非常に難しい科学...

無人店舗の新たなパートナー、蘇寧スポーツビウ

[51CTO.com からのオリジナル記事] 「スマートテクノロジー」の代名詞として、無人店舗は晩夏...

...

チャットボットが消費者と企業に役立つ6つの方法

チャットボットは非常に一般的になったため、消費者はそれを当然のこととして受け止め、オンライン世界のあ...

非人道的だ!人工知能はソーシャルエンジニアリングの天敵である

人工知能 (AI) はまだ初期段階ですが、AI は急速に企業が自らを守るための重要な手段になりつつあ...

2021年のスマートシティの変革と再構築のトレンド

現代では、混沌とした賑やかな都市がどんどん増え、実際に「スマートシティ」の称号を競い合っています。そ...

...

...