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以下、オープンソース化

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

推薦する

AIは人間よりはるかに優れています。AIが意識を持つようになったら、人間はAIに取って代わられてしまうのでしょうか?

人工知能は、無意識のうちに私たちの生活にほぼ完全に浸透しているようで、人工知能の知能レベルはますます...

...

顔認識の法的境界と刑法適用の限界

[[413292]]顧客に顔のスキャンを義務付けることができるかどうかという議論を引き起こした最初の...

人間の世界チャンピオン3人を破り、ネイチャー誌の表紙に登場! AIドローンエクストリームレースが自動運転の新時代を切り開く

チェスや事務作業、ゲームなどの知的活動において人間が AI に圧倒されていることはもはやニュースでは...

CTR は成功と失敗の鍵です。なぜクリックスルー率はアルゴリズム エンジニアにとって悪夢となっているのでしょうか?

[[409064]]みなさんこんにちは。私は梁唐です。今日は、検索、広告、推奨アルゴリズムにおける...

Qualcomm CVPR 研究: ビデオ処理の計算を 78% 削減、畳み込み層に「ピクセルの選択」を教える

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

マシンビジョンは人工知能の次のフロンティアとなる

人工知能は過去1年間で大きな進歩を遂げ、人々にますます多くの利益をもたらしました。将来的には、マシン...

柯潔対中国「星陣囲碁」人機対決が今月福州で開催

今月27日、柯潔は福州で再び人工知能と対戦する。対戦相手は中国出身の「Golaxy」。 StarAr...

ツールの選択からチームのコミュニケーションまで、ML エンジニアが実稼働レベルの機械学習を段階的に構築する様子をご覧ください。

機械学習がユーザーに真の価値をもたらすためには、それを本番システムに導入する必要があります。 AI ...

組織のサイバーセキュリティ向上における人工知能の役割

サイバーセキュリティは重要な戦略的必須事項となっており、今日の企業は進化し続けるサイバー脅威から I...

機械学習が詐欺防止に優れたツールである理由は何ですか?

現代技術の発展と向上により、生活はますます快適になりました。以前は複雑な操作を同時に実行することは不...

企業は今後の組織開発においてハイパーオートメーションを採用するでしょうか?

[[386200]] [51CTO.com クイック翻訳] 事実によれば、ロボティックプロセスオー...

ガートナー、2024年以降のIT組織とユーザーに関する重要な予測を発表

ガートナーは、2024 年以降のトップ 10 の戦略予測を発表しました。ガートナーは、生成型人工知能...

ビジネス上の問題を機械学習の問題に変換するにはどうすればよいでしょうか?

[[197632]]機械学習が価値を変革するための最も重要なステップは何ですか?ビジネス上の問題に...