OpenCV と Python を使用してライブ ビデオ ストリームでディープラーニング オブジェクト検出を実行するのは非常に簡単です。適切なコードをいくつか作成し、ライブ ビデオを接続して、独自のオブジェクト検出機能を追加するだけです。 この記事では、ディープラーニングと OpenCV を使用して、元のオブジェクト検出プロジェクトを拡張し、アプリケーションの範囲をリアルタイムのビデオ ストリームとビデオ ファイルに拡張する方法を学習します。このタスクは、VideoStream クラスを通じて実行されます。
それでは、ディープラーニング + オブジェクト検出コードをビデオストリームに適用し、FPS 処理速度を測定します。 ディープラーニングと OpenCV を使用したビデオ オブジェクト検出 OpenCV ディープラーニングに基づくリアルタイム オブジェクト検出器を構築するには、カメラ/ビデオ ストリームに効率的にアクセスし、各フレームにオブジェクト検出を適用する必要があります。 まず、新しいファイルを開いて real_time_object_detection.py という名前を付け、次のコードを追加します。 2行目から8行目まででパッケージのインポートを開始します。その前に、imutils と OpenCV 3.3 が必要です。システム設定では、OpenCV をデフォルト設定でインストールするだけです (また、Python 仮想環境のすべての指示に従っていることを確認してください)。 注意: ディープ ニューラル ネットワーク モジュールが含まれていることを確認するには、OpenCV 3.3 (またはそれ以降) と OpenCV-contrib バージョン (OpenCV 3.3 用) をダウンロードしてインストールしてください。 次に、これらのコマンドライン引数を解析します。 前回のオブジェクト検出プロジェクトと比較すると、ここではビデオ ストリームとビデオを扱っているため、画像パラメータは必要ありません。ただし、次のパラメータは同じままです。
その後、クラス リストとカラー セットを初期化します。 22 行目から 26 行目では、CLASS ラベルと対応するランダムな COLORS を初期化します。これらのクラス(およびネットワークのトレーニング方法)の詳細については、http://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and-opencv/ を参照してください。 ここで、独自のモデルをロードし、独自のビデオ ストリームを設定します。 独自のシリアル化モデルをロードし、prototxt およびモデル ファイルへの参照を提供します (行 30)。OpenCV 3.3 でわかるように、これは非常に簡単です。 次に、ビデオ ストリームを初期化します (ソースはビデオ ファイルまたはカメラです)。まず、VideoStream を開始し (行 35)、次にカメラの起動を待機し (行 36)、最後に 1 秒あたりのフレーム数の計算を開始します (行 37)。 VideoStream クラスと FPS クラスは、imutils パッケージの一部です。 次に、各フレームをループしてみましょう (速度を重視する場合は、いくつかをスキップできます)。 まず、ビデオ ストリームからフレームを読み取り (行 43)、サイズを変更します (行 44)。幅と高さは後で必要になるので、47 行目で取得します。次に、フレームは dnn モジュールを使用して BLOB に変換されます (行 48)。 ここで、ブロブをニューラル ネットワークへの入力として設定し (行 52)、入力をネットに渡して (行 53)、検出結果を取得します。 この時点で、入力フレーム内のオブジェクトが検出されました。次は、信頼度値を確認して、オブジェクトの周囲に境界ボックスとラベルを描画できるかどうかを判断します。 まず、画像内で複数のオブジェクトが検出できることを念頭に置き、検出をループします。また、各検出の信頼性(つまり確率)も確認する必要があります。信頼度が十分に高い場合(しきい値を超える場合)、画像の予測がテキストと色付きの境界ボックスの形式で端末に表示されます。これを1行ずつ見てみましょう:
フレームキャプチャループの残りのステップは、(1)フレームの表示、(2)終了キーの確認、(3)fpsカウンターの更新です。 上記のコード ブロックは非常に単純で、最初にフレームを表示し (行 81)、次に特定のキーを見つけ (行 82)、さらに「q」キー (「quit」の略) が押されたかどうかを確認します。押された場合は、フレーム キャプチャ ループを終了します (行 85、86)。 ***fps カウンターを更新します (行 89)。 ループを終了する場合(「q」キーまたはビデオ ストリームの終了)、これも処理します。 ループを終了すると、fps カウンターが停止し (行 92)、1 秒あたりのフレーム数が端末に出力されます (行 93、94)。 ウィンドウを閉じて (行 97)、ビデオ ストリームを停止します (行 98)。 ここまで来たら、自分のウェブカメラで試してみて、どのように動作するか確認する準備が整いました。次の部分に進みましょう。 リアルタイムディープラーニングによる物体検出の結果 リアルタイムのディープラーニング オブジェクト検出器を起動して実行するには、このガイドのダウンロード セクションにあるサンプル コードと事前トレーニング済みの畳み込みニューラル ネットワークを使用するようにしてください。 (元のリンクを開いて「ダウンロード」セクションに移動し、メールアドレスを入力して、必要なコードやその他の情報を入手してください。) ターミナルを開き、次のコマンドを実行します。 OpenCV がウェブカメラにアクセスできる場合は、検出されたオブジェクトを含む出力ビデオ フレームを表示できます。 ディープラーニング オブジェクト検出器が、人物だけでなく、その人物が座っているソファとその隣の椅子もすべてリアルタイムで検出できることに注目してください。 要約する 今日のブログでは、ディープラーニング + OpenCV + ビデオストリーミングを使用してリアルタイムのオブジェクト検出を実行する方法を学びました。私たちはこれを 2 つのチュートリアルで実現しました:
最終結果は、6〜8 FPS(もちろんシステム速度によって異なります)でビデオを処理できるディープラーニングベースのオブジェクト検出器です。 以下の方法でさらに速度を上げることができます。
オリジナル: http://www.pyimagesearch.com/2017/09/18/real-time-object-detection-with-deep-learning-and-opencv/ [この記事は51CTOコラム「Machine Heart」、WeChatパブリックアカウント「Machine Heart(id:almosthuman2014)」によるオリジナル翻訳です] この著者の他の記事を読むにはここをクリックしてください |
<<: 3Wイノベーションフェスティバル:先進的な起業家のアイデアが古都西安に流入
>>: ビッグデータは経済生活に影響を与え、AIの基礎となる
広東省の有名な重点中学校である広亜中学校は最近、電子ブレスレット3,500個を購入するために485万...
1. 自然言語理解と言語モデル1.1 自然言語処理自然言語処理 (NLP) は人工知能 (AI) の...
最近、OpenAI の主任科学者 Ilya Sutskever 氏が、計算理論の研究に重点を置く S...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...
ディープラーニングにはビッグデータと大規模な計算能力に対する厳しい要件があるため、モデルトレーニング...
「機械が人に代わる」という無人化とインテリジェント化の潮流は、伝統的な飲食業界のあらゆる分野に広が...
ロイターが確認したメモによると、10月12日、米宇宙軍はデータセキュリティに関する懸念から、職員によ...
[[428874]]現代では、社会の発展と時代の進歩に伴い、伝統と現代の衝突、古典と革新の融合が、...
1. 背景2年間運営してきた個人プロジェクトですが、最近対象サイトがスキャンコードログインに変更にな...
7月27日、Microsoft Bingエンジニアリングおよび製品責任者のJordi Ribas氏は...
自然言語処理 (NLP) により、チャットボットは会話のメッセージを理解してそれに応じて応答できるよ...