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

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

ブログ    
ブログ    
ブログ    

推薦する

...

Keras の創設者: ディープラーニング関連の仕事は過去 6 か月で減少

[[340767]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

...

人工知能が新たな技術を切り開く:10年以内に犬が人間と会話できるようになる

本日北京時間のデイリーメール紙の報道によると、有名な技術専門家は、今後10年間で人工知能技術の発展に...

...

AI人材の世界的な需要が急増、一部の職種では年間40万ドル近くを稼ぐ

6月19日のニュース:AI産業の急速な発展に伴い、テクノロジー業界のAI人材に対する需要も高まってい...

分析: 機械学習を妨げる 10 のサイバー攻撃とは?

サーセイ・ラニスターの策略やサー・ジョラー・モーモントの父親のような保護をもってしても、攻撃者が H...

モデルの一般化にはSGDに匹敵するフルバッチGDのランダムトレーニングは必要ない、ネットユーザー:計算コストは​​手頃ではない

[[431688]]最近、機械学習モデルは、モデルパラメータが増えながらも一般化性能が良好な大規模モ...

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

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

AIは生産性を低下させるでしょうか?今のところは出演はありません!

[[286440]] ▲ イラスト出典:エドモン・デ・ハロ2016年、ロンドンに拠点を置くアルファ...

BAIRは、3種類のモデルフリー強化学習アルゴリズムを組み合わせたRLコードライブラリrlpytをオープンソース化しました。

最近、BAIR は強化学習研究コードライブラリ rlpyt をオープンソース化しました。このライブラ...

ブースティング原理に基づく深層残差ニューラルネットワークのトレーニング

1. 背景1.1 ブースティングブースティング[1]は、アンサンブルモデルを訓練するための古典的な手...

AIはデジタル変革をどのように変えるのでしょうか?

人工知能は、企業のデジタル変革の方法を変え、効率性、俊敏性、顧客中心の機能を最前線にもたらします。要...

ちょっとした機械学習でウェブサイトを高速化

私の人生の 73% は、Web パフォーマンスについて考えています。低スペックの電話で 60 FPS...

CV退化!心理学者が顔認識を学び、世界中の表情を区別するために600万本のビデオを訓練

世界中の人々は笑ったり悲しんだりするときに同じ表情をしますか? [[402741]]人々の表情が一貫...