CPUのみを使用して1000FPSで実行できます。これはオープンソースのC++クロスプラットフォーム顔検出プロジェクトです。

CPUのみを使用して1000FPSで実行できます。これはオープンソースのC++クロスプラットフォーム顔検出プロジェクトです。

さまざまな依存環境によって常に荒廃していますか?コンピューターと携帯電話の両方で実行できる、C++ で書かれたクロスプラットフォームの顔検出プロジェクトをご覧ください。

プロジェクトアドレス: https://github.com/ShiqiYu/libfacedetection

顔検出は、人間とコンピュータのインタラクション、セキュリティ監視、ソーシャルエンターテイメントなどの分野で広く使用されており、実用価値が高いため、幅広い注目と研究を集めています。多くの顔検出方法の中で、畳み込みニューラル ネットワークを使用して検出する方法は、最も人気のある方法の 1 つです。しかし、他の人のオープンソース プロジェクトを使用する場合、さまざまな依存環境をインストールする必要があることがよくあります。依存環境によって、ハードウェア プラットフォームやオペレーティング システムごとにサポート レベルが異なるため、プロジェクトのクロスプラットフォーム移行の難易度が高くなります。

この記事では、顔検出に畳み込みニューラル ネットワークを使用するオープン ソース プロジェクトを紹介します。最大の特徴は、C/C++ をサポートするすべてのプラットフォームでコンパイルして実行できることです。作者は、事前トレーニング済みの CNN モデルを静的変数に変換し、C ファイルに保存したため、プロジェクトには他の依存関係は必要ありません (もちろん OpenCV は必要です)。任意のプラットフォームや組み込みシステムでプロジェクトをコンパイルして実行するには、C++ コンパイラのみが必要です。

特に魅力的なのは、このプロジェクトが C++ で書かれており、AVX2 をサポートし、i7 CPU で驚異的な 1000 FPS で実行できることです。下の図は、プロジェクト作成者による検出効果の例です。

このプロジェクトは検出速度が非常に速いだけでなく、検出精度も優れていることがわかります。そこで、Synced もテストを開始しました。

プロジェクト測定

この顔検出プロジェクトの効果を Ubuntu 18.04 でテストしました。まず、比較的シンプルな集合写真をテストに使用します。合計 15 人で、解像度は 970 x 546 です。検出結果を下の図に示します。

写真に写っている人物をすべて正確に識別し、CPU でわずか 133 ミリ秒しかかからず、信頼度レベルは 99% であることがわかります。次の図は、境界ボックスを追加した後の検出効果を示しています。

今度は難易度を上げて、不正行為をしている国の写真を使って効果をテストしてみましょう。また、列車の前面に描かれた顔はほぼすべて認識されましたが、車体の肖像画は小さすぎたり密集しすぎたりしたためか認識できませんでした。

コンパイルプロセス

プロジェクトのコンパイルには OpenCV が必要です。OpenCV がない場合、cmake を使用して makefile を生成するときに次のエラーが報告されます。

まず、wget https://github.com/opencv/opencv/archive/3.4.0.tar.gz を使用して OpenCV 3.4.0 のソース コードをダウンロードし、次に OpenCV をコンパイルするために必要な関連する依存関係をインストールします。

  1. apt-get インストールビルド必須
  2. apt-get install cmake git libgtk2. 0 -dev pkg-config libavcodec-dev libavformat-dev libswscale-devadd-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"  
  3. apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394- 22 -dev

依存関係をインストールした後、OpenCV パッケージを現在のディレクトリに解凍します。

  1. tar xvzf 3.4.0.tar.gz

コンパイル中にソース コード ファイルが壊れるのを避けるために、linuxidcbuild という名前の新しいフォルダーを作成し、その中に OpenCV をコンパイルしてインストールします。

  1. mkdir linuxidcbuild
  2. cd linuxidcbuild/
  3. cmake ../opencv- 3.4 . 0 -DWITH_GTK_2_X=ON -DCMAKE_INSTALL_PREFIX=/usr/local

makefile を生成する過程で、次のような状況に陥る場合があります。

これは、ippicv のダウンロードの失敗が原因です。次のリンクから、システムに対応する ippicv バージョンを手動でダウンロードしてください。

参考:

次に、vim opencv-3.4.0/3rdparty/ippicv/ippicv.cmakeを使用してOpenCVコンパイル構成ファイルを修正し、次の内容を変更します。

「https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/」

ippicv を保存したディレクトリに変更します。 cmake ../opencv-3.4.0 -DWITH_GTK_2_X=ON -DCMAKE_INSTALL_PREFIX=/usr/local を再度実行します。次の内容が表示されたら、makefile が正常に生成されたことを意味します。

次に、make を実行して OpenCV をコンパイルします。

ここでのコンパイル プロセスは比較的長く、約 20 分かかります。また、かかる時間はコンピューターの構成によって異なります。次の図が表示されたらコンパイルは完了です。

次にmake installを使用してインストールします。

インストールが成功すると、図に示すインターフェースが表示されます。

以上でOpenCVのインストールは完了です。インストールが完了したら、vim /etc/ld.so.conf.d/opencv.conf を使用して設定し、ファイルに /usr/local/lib を追加して保存し、終了します。

vim /etc/bash.bashrc を使用して環境変数を追加し、テキストの最後に export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig を追加し、source /etc/bash.bashrc を使用して新しい環境変数を有効にします。これにより OpenCV が設定され、次のコマンドを使用してプロジェクトがコンパイルされます。

  1. git clone https://github.com/ShiqiYu/libfacedetectioncd libfacedetectionmkdir build; cd build; cmake ..; make  

プロジェクトがコンパイルされると、対応する実行可能ファイルがビルド ディレクトリに生成され、次のコマンドを使用して実行できます。

  1. ./検出画像デモ ../images/test.png

操作は非常に複雑に見えますが、実際には OpenCV をコンパイルすることが主な内容です。他のモジュールはプロジェクト内で直接コンパイルできます。最後に、この非常に高速な顔検出モデルを安心して使用できます。

<<:  ハン・ソン、チュー・ジュンヤンらがGAN圧縮方式を提案:計算電力消費は1/9以下、オープンソース化

>>:  企業はデータセンターで人工知能を広く利用する準備ができているでしょうか?

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

推薦する

大規模な伝染病に直面した時、ロボットは何ができるでしょうか?

ウイルスのさらなる拡散を防ぐため、米国で初めて新型肺炎に感染した患者は隔離室に隔離され、治療中はロボ...

何開明のMAEが人気になってから、ビジュアルトランスフォーマーを整理したいですか?この記事は100以上の

[[436989]]コンピュータービジョン界は最近非常に活発です。まず、He Kaiming 氏らは...

OpenAIはGPT-3.5 Turbo、DALL-E、Whisper APIを完全に公開しました

OpenAIは7月10日、開発者のモデル処理効率向上を支援するため、GPT-3.5 Turbo、DA...

ジニ不純度: 決定木の構築にジニ不純度をどのように活用するか?

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...

アルトマンが帰ってきた!取締役会解散の強い要求、OpenAIの究極の宮廷闘争が始まる

スティーブ・ジョブズが解雇されてから王として復帰するまでに12年かかりましたが、サム・アルトマンの場...

HTML5アウトラインアルゴリズムが構造に与える影響

[[91338]] HTML5 がリリースされてから長い時間が経ちますが、日々の仕事や個人の Web...

ガートナー 2019 人工知能成熟サイクルのトレンド

このガートナーのハイプサイクルは、AIが企業に及ぼすさまざまな影響を強調しています。ガートナーの 2...

アリババクラウド南京雲奇カンファレンス:スマート製造モデルの共有と最先端技術の発表

[51CTO.comより引用] 本日、アリババクラウドカンファレンス南京サミットが正式に開催され、ま...

...

AI 実装の倫理的な展開をどのように確保するか?

人工知能や機械学習などの自動化および機械技術の驚異的な成長は、間違いなく組織にまったく新しいレベルの...

...

ザッカーバーグがAlpaca 2をベースにしたChatGPTのMetaバージョンを正式にリリース。Appleに先駆けて初のMRヘッドセットをリリース、価格は1/7以下

ChatGPT ネットワーキング モードが正式に復活しました。そして、この波は有料ユーザーだけでなく...

...

プレーン AI: ディープラーニングを理解するのは本当に難しいのでしょうか?中学数学、たった10分

現在、AI が業界で重要な役割を果たしているため、ディープラーニングは重要な研究分野として、意味理解...

フェイフェイ・リーのチームの新しい研究:脳制御ロボットが家事を行い、脳コンピューターインターフェースに少ないサンプルで学習する能力を与える

将来的には、考えただけでロボットに家事を任せることができるようになるかもしれません。スタンフォード大...