機械学習とニューラルネットワーク - ページ 40

 

Opencv と Python によるオブジェクト追跡

コード: https://pysource.com/2021/01/28/object-tracking-with-opencv-and-python/



Opencv と Python によるオブジェクト追跡

OpenCV と Python を使用したオブジェクト トラッキングに関するビデオ チュートリアルでは、オブジェクト検出とオブジェクト トラッキングの違いを説明し、効率的なトラッキングのためにオブジェクト トラッカー ファイルを作成する方法を示します。このビデオでは、ビデオやオブジェクト トラッカー ファイルなど、必要なファイルの概要を説明し、リアルタイム ビデオ表示用に main.py ファイルをコーディングする方法を示します。このチュートリアルでは、マスクから小さな要素を削除し、関心領域を定義して画像の一部を抽出して車両に焦点を合わせる方法についても説明します。このビデオは、物体追跡のプロセスを説明し、物体に一意の ID を追加して正しくカウントすることで締めくくります。ただし、このチュートリアルでは、この方法は完璧ではないが、オブジェクト トラッキングの優れた入門として役立つと述べており、OpenCV とディープ ラーニングに関するより詳細なコースを受講することをお勧めします。

  • 00:00:00 このセクションでは、スピーカーは物体検出と物体追跡の違いを紹介します。前者はフレームごとにオブジェクトを検出し、後者はフレーム全体でオブジェクトを追跡して履歴を追跡します。オブジェクトの追跡は、人の数のカウント、オブジェクトの軌跡の追跡、高速道路を通過する車のカウントなど、さまざまなアプリケーションで重要です。次にスピーカーは、ビデオやオブジェクト トラッカー ファイルなど、プロジェクトを開始するために必要なファイルを紹介します。次に、スピーカーは main.py ファイルのコーディングを開始します。最初に、OpenCV ライブラリをインポートし、ビデオからフレームを読み取るためのキャプチャ オブジェクトを作成します。最後に、講演者はビデオをリアルタイムで表示し、ビデオを閉じるキー イベントを作成する方法を示します。

  • 00:05:00 このセクションでは、講演者は OpenCV と Python を使用したオブジェクト トラッキングについて説明します。彼らは、この特定の方法には安定したカメラが必要であると説明しています。つまり、背景は時間の経過とともに変化せず、動いているオブジェクトのみが変化します。物体検出器を使用することで、移動物体を安定したカメラから抽出できます。検出器はマスクを作成します。マスクの目的は、検出する必要のある車両を白くしながら、必要のないものをすべて黒くすることです。次に、白い要素の座標が抽出され、小さすぎる要素が削除されます。次に、OpenCV の輪郭検索機能を使用して、白いオブジェクトの境界が検出され、フレーム上に緑色で描画されます。

  • 00:10:00 このセクションのビデオ チュートリアルでは、輪郭の面積を計算し、面積が 100 ピクセル未満の輪郭をすべて削除することで、マスクから小さな要素を削除する方法を説明しています。次に、チュートリアルでは、関心領域 (ROI) を定義して画像の一部を抽出し、道路の特定の部分にある車両のみに焦点を合わせて、検出プロセスをより簡単にする方法について説明します。このチュートリアルでは、追跡する車両を含むセクションの位置、高さ、幅を指定して ROI を定義する方法について概説します。チュートリアルの最後に、ROI にマスクを適用して特定の領域のみでオブジェクト トラッキングを実行する方法を説明します。

  • 00:15:00 ビデオのこのセクションでは、スピーカーはオブジェクト検出アルゴリズムをフレーム全体ではなく ROI に適用し、検出がどのように改善されたかを示しています。ただし、誤検知と検出アルゴリズムにはまだ問題があります。オブジェクト検出を改善するために、スピーカーは履歴のサイズと var しきい値を調整します。これは、誤検知の量に影響します。次にスピーカーは、検出された各オブジェクトを囲む四角形を抽出し、ROI に緑色で描画します。最後に、スピーカーは、しきい値演算子を使用して画像内の白い要素のみを保持することにより、画像から影を取り除き、より正確なオブジェクト検出を実現します。

  • 00:20:00 このセクションでは、OpenCV と Python を使用したオブジェクト トラッキングのプロセスをビデオで説明します。追跡を効率的に行うには、「tracker.py」ファイルをインポートして「tracker」オブジェクトを作成する必要があります。 「トラッカー」は、オブジェクトのバウンディング ボックスを収集し、「検出」という名前の配列に保存します。各境界ボックスには、x、y 位置、幅、および高さの個別のセットがあります。これらのボックスの最小値は 100 である必要があるため、トラッカーは無関係なオブジェクトを破棄します。一連の検出されたオブジェクトがフレームごとに表示され、検出配列がトラッカー オブジェクトに渡されます。次にトラッカーは、追跡された各オブジェクトの履歴と一意の ID を返します。オブジェクト トラッキングの最初のステップはオブジェクトの検出です。これは、フレーム 1 でオブジェクトが検出された場合にのみ可能です。

  • 00:25:00 このセクションのビデオでは、OpenCV と Python のオブジェクト追跡機能に一意の ID を追加する方法について説明しています。オブジェクトごとに異なる ID が割り当てられるようになり、オブジェクトをカウントする際の間違いを防ぐことができます。 ID を使用することで、オブジェクトを正しくカウントし、オブジェクトが交差したことを検出するために線を引くことができます。ビデオの最後では、示されている方法は単純で完璧ではありませんが、オブジェクト トラッキングの入門としては適切であることを説明しています。オブジェクトの検出と追跡に関するより深い知識については、作成者は、OpenCV とディープ ラーニングに関するビデオ コースを視聴することを推奨しています。
Object Tracking with Opencv and Python - Pysource
Object Tracking with Opencv and Python - Pysource
  • Sergio Canu Hi there, I’m the founder of Pysource. I’m a Computer Vision Consultant, developer and Course instructor. I help Companies and Freelancers to easily and efficiently build Computer Vision Software .
  • pysource.com
In this tutorial we will learn how to use Object Tracking with Opencv and Python. First of all it must be clear that what is the difference between object detection and object tracking: Object detection is the detection on every single frame and frame after frame. Object tracking does frame-by-frame tracking but keeps the history of where the...
 

コンピューター ビジョンのロードマップ |コンピュータビジョンエンジニアになる方法



コンピューター ビジョンのロードマップ |コンピュータビジョンエンジニアになる方法

このビデオでは、コンピューター ビジョン エンジニアになるためのロードマップを提供し、学習プロセスを 4 つのモジュール (Python と OpenCV、ロボット工学と低レベル プログラミング、人工知能、高度なトピック) に分けています。ロボット工学や Arduino などの物理デバイスを使用した実践的なプロジェクトの重要性と、数学の基本的な理解が必要であることが強調されています。講演者は、意欲的なコンピューター ビジョン エンジニアがスキルを磨くのに役立つコンテストやプロジェクトについても説明します。さらに、ドキュメンテーションや Git や Docker などのソフトウェア ツールの知識などのソフト スキルの重要性が強調されています。最後に、数学、データ サイエンス、コンピューター サイエンス、またはエンジニアリングの学位を取得することをお勧めしますが、プロジェクトやコースを通じて独立して学習することも可能です。

  • 00:00:00 ビデオのこのセクションでは、スピーカーは、コンピューター ビジョンの開発者になるために学ぶ必要があるすべてをカバーするコンピューター ビジョンのロードマップを提示します。ロードマップは、3 つの主要な質問に答えています。必要なスキル、これらのスキルを習得するためにどのようなプロジェクトに取り組むことができるか、これらのスキルを習得するためにどの大学の学位を取得できるかです。ロードマップは 4 つのモデルに分かれており、最初のモデルは、コンピューター ビジョンの問題の 70% を解決するために不可欠な Python と OpenCV をカバーしています。 2 番目のモデルは、ロボティクスと低レベルのプログラミングに関するもので、C++ とエレクトロニクスの操作が含まれます。 3 番目と 4 番目のモデルは、それぞれ人工知能と高度なトピックをカバーしています。スピーカーは、知識とスキルを構築するためにライン フォロワ ロボットや QR コード リーダーに取り組むなど、各モデルの初心者向けプロジェクトを提案します。

  • 00:05:00 ビデオのこのセクションでは、スピーカーは、ロボット工学や Arduino などの物理デバイスを含むプロジェクトに取り組むことの重要性について説明しています。講演者は、センサーのノイズや照明の変化などの要因により、同じコードが異なる結果を生成する可能性があるため、このようなデバイスのプログラミングには異なるアプローチが必要であると説明しています。スピーカーが言及する 3 番目のモジュールは、画像分類やオブジェクト検出などのタスクに使用できる、人気のある Python ライブラリ Scikit-learn を使用した人工知能と機械学習に焦点を当てています。最後に、講演者は、数学の基本的な理解と、それがコンピューター ビジョンとどのように関係しているかを理解することの重要性も強調します。

  • 00:10:00 このセクションでは、環境をさまざまな領域に分割することの重要性と、それを使用して車線横断などの状況を検出する方法を説明しながら、基本的なジオメトリで区切られたさまざまな領域を持つ単純な画像を示します。彼は、コンピューター ビジョン エンジニアが数学に精通している必要があることを強調し、機械学習、数学、電子工学のより高度なスキルに進む前に、画像分類とオブジェクト検出、秘密学習、幾何学の基礎を学習することを推奨しています。彼は、敵対的生成ネットワークなどのプロジェクトを提案し、コンピューター ビジョンで最先端の論文を実装して高度な機械学習を学習する一方で、高度な Arduino プロジェクトを取り上げたり、ロボット工学のコンテストに参加してエレクトロニクスの知識を向上させたりします。

  • 00:15:00 このセクションでは、意欲的なコンピューター ビジョン エンジニアがスキルを磨くのに役立つさまざまなコンテストやプロジェクトについてスピーカーが説明します。これらの競技会では、複雑なタスクを実行し、他のチームと競うことができるロボットとエージェントを構築します。講演者は、利用可能な問題の 70% を解決するのに役立つ Python や OpenCV など、コンピューター ビジョンの基礎を学ぶことの重要性を強調しています。言及されている 4 つのモジュールは、基礎、ロボット工学、人工的意図、および高度なモジュールです。高度なモジュールは重要ですが、講演者は、コンピュータ ビジョン エンジニアとして成功するために必要な基本的なスキルをカバーしているため、最初に他のモジュールに焦点を当てることを提案しています。

  • 00:20:00 このセクションでは、スピーカーは、コンピューター ビジョン、機械学習、および Python の知識に加えて、コンピューター ビジョン開発者が持つべきさまざまなソフトウェア関連のスキルについて説明します。これらのスキルには、Git や Docker などのツールの基本や、AWS や Google Cloud などのクラウド プロバイダーの知識が含まれます。価値があると考えられるその他のスキルには、Web またはモバイル開発、JavaScript の知識、GitHub リポジトリの readme ファイルやプロセス全体の文書化などの適切なドキュメントの書き方の知識が含まれます。これらのスキルのすべてが必須というわけではありませんが、開発者の仕事を見せびらかしたり、さまざまな問題を解決したりするのに役立ちます。

  • 00:25:00 このセクションでは、講演者はコンピューター ビジョン開発者にとってドキュメントの重要性を強調しています。彼らはまた、コンピューター ビジョンの開発者だけでなく、すべての開発者がドキュメントを習得する必要があることを示唆しています。ドキュメントは重要なスキルだからです。次に、スピーカーは、さまざまなソフトウェア ツールに精通することの重要性を強調し、志望するコンピューター ビジョン エンジニアができる限り多くを学ぶことを奨励します。大学の学位取得に興味がある人には、スピーカーは数学、データ サイエンス、コンピューター サイエンス、電気工学、またはその他の工学の学位をお勧めします。これらの学位は、問題に取り組み、解決策を考え出すための基礎を提供するからです。しかし、スピーカーは、プロジェクトやコースを受講することで、すべてを独立して学ぶことが完全に可能であると述べています.
Computer vision roadmap | How to become a computer vision engineer
Computer vision roadmap | How to become a computer vision engineer
  • 2022.11.03
  • www.youtube.com
0:00 - Start0:20 - Who am I?0:46 - Video roadmap01:28 - Skills: 4 modules2:04 - Fundamentals3:46 - Robotics / low level programming7:38 - Artificial Intellig...
 

Yolov8 カスタム データセットを使用した画像分類 |コンピューター ビジョンのチュートリアル

コード: https://github.com/computervisioneng/image-classification-yolov8



Yolov8 カスタム データセットを使用した画像分類 |コンピューター ビジョンのチュートリアル

このセクションでは、プレゼンターがプロジェクトに最適なモデルを選択する方法を説明し、トレーニング プロセスで生成された最後のモデルを選択するか、精度が最も高いモデルを選択するかについて提案します。この決定は、データ、問題、ユースケース、トレーニング プロセスなど、さまざまな要因によって異なります。講演者は、YOLO をインポートしてモデルへの絶対パスを指定し、ローカル コンピューターの画像を使用して結果を表示することで、すべての推論を行い、新しいサンプルを予測する方法についても説明します。結果は、画像分類器がトレーニングされたカテゴリの確率や名前など、多くの情報を提供します。

  • 00:00:00 このセクションでは、カスタム データ セットで YOLOv8 を使用して画像分類器を構築する方法を YouTuber が実演します。まず、雲、雨、輝き、日の出の画像を含むデータ セットを表示します。また、YOLOv8 がデータ入力に期待するファイル構造についても説明しています。次に Felipe は、YOLOv8 を使用して画像分類器をトレーニングする 3 つの異なる方法を説明します。1 つ目は Python スクリプトを使用する方法、2 つ目は Google Colab Notebook を使用する方法、3 つ目は YOLOv8 の基盤となるフレームワークであるダークネットを使用する方法です。

  • 00:05:00 このセクションでは、チュートリアルで Yolov8 を使用して画像分類モデルをトレーニングするために必要な依存関係と、PyCharm で Python インタープリターを使用してそれらをインストールする方法について説明します。必要な 2 つの主なパッケージは Ultralytics と NumPy です。Ultralytics は、モデルのトレーニングに必要なデータをインポートする際に重要です。次に、モデルのトレーニングに必要なコードについて説明し、データへの絶対パスを正しい形式で設定する必要があります。さらにトレーニングを続行する前に、すべてが適切に機能していることを確認するために、1 つのエポックに対してのみテスト実行も行われます。

  • 00:10:00 このセクションでは、スピーカーはトレーニング プロセスの結果がどこにあるかを示し、runs フォルダー内のフォルダー構造について説明します。次に、特定のユーティリティと必要な引数を使用して、コマンド ラインから Yolov8 を使用して画像分類子をトレーニングする方法を示します。彼は、モデルを 1 エポックだけトレーニングすることによってこのアプローチの単純さを示し、「trained 13」というラベルの付いた新しいディレクトリに結果が保存される場所を示します。最後に、講演者は、Google Collab を使用してモデルをトレーニングする別の方法について説明し、その設定プロセスについて簡単に説明します。

  • 00:15:00 このセクションでは、プレゼンターは、「train.ipymb」と呼ばれる Yolov8 モデルのトレーニング用に既に作成されているノートブックを示しています。データセットを Google Drive にアップロードすることは、ユーザーが Google Collab からデータにアクセスするために不可欠なステップです。このプロセスでは、Google Collab と Google Drive を接続するセルをユーザーが実行する必要があるためです。ユーザーがデータセットを適切に使用するには、このパスをノートブックに入力する必要があるため、Google ドライブ内のユーザーのデータセットへのパスを知ることは重要です。最後に、プレゼンターは Yolov8 モデルのトレーニングに必要なライブラリをインストールするためにユーザーが実行できる簡単なコマンドを提供します。

  • 00:20:00 ビデオのこのセクションでは、講師が YOLOv8 とカスタム データセットを使用して画像分類器をトレーニングする方法と、Google Colab 環境で取得した結果を Google ドライブにコピーする方法を示します。 1 エポックのトレーニング プロセスを実行し、結果を Google ドライブにコピーしてから、20 エポックのトレーニング プロセスを実行します。最後に、トレーニング プロセスによって適切な画像分類器が得られたかどうかを分析する方法を示します。インストラクターは、データ ディレクトリ変数を適切に設定することの重要性を強調し、結果を Google ドライブにコピーして、ダウンロードと分析を簡素化することを提案しています。
     
  • 00:25:00 このセクションでは、YOLOv8 を使用したカスタム データセットのトレーニング プロセスの結果を分析します。ローカル コンピューターに保存されたファイルが検査されます。これには、トレーニング プロセス中に使用されるすべての EPA パラメーターをリストする構成ファイルと、トレーニングと検証の損失、および精度を含む結果ファイルが含まれます。さまざまなエポックにわたる損失と精度をプロットする Python ファイルを使用して、損失が減少しているかどうか、およびトレーニング プロセスを通じて精度が上昇しているかどうかを判断しました。シンプルだが強力なアプローチは、精度が向上している間にトレーニング損失と検証損失が低下しているかどうかを確認することであると結論付けられています。

  • 00:30:00 このセクションでは、スピーカーは、エポック数を増やしたときに評価精度がどのように見えるかを説明し、精度が向上してから横ばいになることを示します。さまざまなパラメーターとよりカスタマイズされたトレーニングを使用して、プロセスを改善し、より良いモデルを取得できます。 「last.pt」と「best.pt」という 2 つの異なるファイルが保存される「weights」ディレクトリについても説明します。 「last.pt」ファイルはトレーニングの最後のエポックの終わりに生成されたモデルであり、「best.pt」ファイルは最良のトレーニング エポックの終わりに生成されたモデルです。実際には、最後のモデルを使用して最終結果を取得します。

  • 00:35:00 このセクションでは、スピーカーはプロジェクトに最適なモデルを選択する方法について説明し、トレーニング プロセスから生成された最後のモデルを選択するか、最も精度の高いモデルを選択するかについて提案します。この決定は、データ、問題、ユースケース、トレーニング プロセスなど、さまざまな要因によって異なります。講演者は、YOLO をインポートしてモデルへの絶対パスを指定し、ローカル コンピューターの画像を使用して結果を表示することで、すべての推論を行い、新しいサンプルを予測する方法についても説明します。結果は、画像分類器がトレーニングされたカテゴリの確率や名前など、多くの情報を提供します。

  • 00:40:00 ビデオのこのセクションでは、プレゼンターが辞書を使用して YOLOv8 を使用して画像の分類を識別する方法を説明しています。画像分類子の結果は、さまざまなカテゴリに対応する整数であり、各整数が表すカテゴリを識別するために辞書が使用されます。さらに、特定の画像のすべての異なるクラスの確率ベクトルが取得され、プレゼンターは numpy を使用して最大確率とそれに対応するカテゴリを特定する方法を示します。プレゼンターは、YOLOv8 モデルを使用して画像を分類する方法を示して締めくくり、より多くのコンピューター ビジョン エンジニアリング プロジェクトのためにチャンネルに登録することを提案します。
IMAGE CLASSIFICATION with Yolov8 custom dataset | Computer vision tutorial
IMAGE CLASSIFICATION with Yolov8 custom dataset | Computer vision tutorial
  • 2023.04.05
  • www.youtube.com
Code: https://github.com/computervisioneng/image-classification-yolov80:00 Intro0:41 Dataset1:54 Data structure4:50 Train method 1: Python in local environme...
 

カスタム データセットで Yolov8 オブジェクト検出をトレーニングします。ステップバイステップガイド |コンピューター ビジョンのチュートリアル

コード: https://github.com/computervisioneng/train-yolov8-custom-dataset-step-by-step-guide



カスタム データセットで Yolov8 オブジェクト検出をトレーニングします。ステップバイステップガイド |コンピューター ビジョンのチュートリアル

このビデオ チュートリアルでは、コンピューター ビジョン アプリケーション用のカスタム データセットで YOLOv8 を使用してオブジェクト検出器をトレーニングする方法について、段階的なガイドを提供します。このチュートリアルでは、データ収集、注釈、書式設定、トレーニングなどの重要な側面と、モデルのパフォーマンスを評価するために損失関数プロットと実際の例を分析することの重要性について説明します。このチュートリアルでは、注釈に CVAT ツールを使用すること、必要な YOLOv8 データ形式に準拠すること、および構成 YAML ファイルを作成することを強調しています。このチュートリアルでは、オブジェクト検出器のトレーニングとテストに Google Colab と PyCharm を使用する方法も示しています。

このビデオは、アルパカ データセットでトレーニングされた YOLOv8 オブジェクト検出モデルのパフォーマンスを示しています。講演者は Python スクリプトを使用して動画を読み込み、予測を実行します。ある場合にはほぼ完全な検出が行われ、別の場合には安定した検出が示されますが、1 つの動画では検出を逃したものもあります。スピーカーは、トレーニングと検証の損失関数を分析し、モデルを再度トレーニングしてより強力でパフォーマンスの高いモデルを取得する前に、改善の余地があるかどうかを判断することをお勧めします。

  • 00:00:00 ビデオのこのセクションでは、プレゼンターが、YOLOv8 を使用してオブジェクト検出器をトレーニングする際のデータ収集の重要性と、自分の写真を撮ったり、公開されているデータセットを使用したりするなど、データを収集するさまざまな方法について説明します。 Open Images Set のように。発表者はデモンストレーションの目的でアルパカ データセットを使用し、視聴者にはデータセットに含まれる画像の例が表示されます。さらに、プレゼンターは、チュートリアルに必要な正確な方法で Open Images Set からデータをダウンロードしてフォーマットするためのスクリプトを視聴者に提供できると述べています。

  • 00:05:00 ビデオのこのセクションでは、ナレーターが CVAT ツールを使用したデータ注釈のプロセスについて説明します。CVAT ツールは、オブジェクト検出およびコンピューター ビジョン関連の注釈タスクに使用できるラベル付けツールです。ナレーターは、CVAT ツールを使用してカスタム データセットの一連の画像に注釈を付ける方法を示し、新しいプロジェクトとタスクを作成する方法、画像をアップロードする方法、検出するオブジェクトのラベルを追加する方法を説明します。ナレーターは、使用されている画像の注釈を既に持っていますが、データに注釈を付ける必要がある人のためのステップバイステップのガイドを提供します。このビデオでは、CVAT を使用する利点を強調しながら、さまざまな注釈ツールの長所と短所も強調しています。

  • 00:10:00 このセクションでは、ビデオ作成者が、YOLOv8 アルゴリズムを使用してオブジェクト検出のために画像データセット上のオブジェクトにラベルを付ける方法を示します。作成者はアルパカの画像を使用して、アルゴリズムがオブジェクトを検出および識別できるように、オブジェクトを結合ボックスに入れる方法を示します。また、アノテーション中に発生する可能性のあるさまざまな状況に精通し、検出されているオブジェクトを明確にするために、独自のデータにアノテーションを付ける重要性についても説明しています。作成者は、データの注釈は外部サービスを使用して行うことができますが、データをよりよく理解するには、自分で画像の一部に注釈を付けることが重要であると述べています。

  • 00:15:00 このセクションでは、画像に注釈を付けるための基準の重要性について、アルパカ データセットの例で説明します。オブジェクトのバウンディング ボックスを定義するさまざまな方法も示されています。たとえば、ボックスをオブジェクトにぴったりと合わせたり、バウンディング ボックスをよりリラックスさせたりします。注釈ツール cb80 は、データの書式設定と注釈を付けるための便利で使いやすい Web アプリケーションとして強調されており、オブジェクト検出アルゴリズムのトレーニングにおけるデータ注釈の重要性が強調されています。

  • 00:20:00 ビデオのこのセクションでは、プレゼンターがオブジェクト検出器をトレーニングするために YOLOv8 に必要な特定のデータ形式について説明します。機械学習のすべてのアルゴリズムには独自のデータ入力要件があり、YOLO は非常に特殊な形式のデータを必要とします。発表者は、注釈付きデータを CV80 からエクスポートして YOLO 形式に変換する方法を実演します。 YOLO 形式では、注釈と対応する画像が同じ名前で異なるファイル拡張子を持つ必要があります。各境界ボックスの注釈には、境界ボックスの中心位置、幅、高さを定義するクラス番号と 4 つの浮動小数点数が含まれます。オブジェクト検出器をトレーニングするには、データを正しい形式にすることが重要であることが強調されています。

  • 00:25:00 このセクションでは、スピーカーはカスタム データセットで YOLOv8 を使用してオブジェクト検出をトレーニングするためのデータを構造化する方法を説明します。最初のステップは、2 つのディレクトリを作成することです。1 つはイメージ用、もう 1 つはラベル用で、特定のディレクトリ名は変更できません。 images ディレクトリ内には、トレーニングに使用されるすべての画像が配置されている必要があり、train ディレクトリを便利に使用できます。ラベル ディレクトリ内には、各行がクラス ID、境界ボックスの中心の X/Y 位置、および境界ボックスの幅と高さを指定する標準形式に従って、各画像の注釈ファイルが必要です。講演者は、検証データやテスト データ、または異なるバージョンのデータに追加のディレクトリを使用する方法についても説明します。

  • 00:30:00 このセクションのビデオ チュートリアルでは、Python またはコマンド ライン ユーティリティを使用して、YOLO V8 でオブジェクト検出器をトレーニングするプロセスについて説明します。 YOLO V8 公式リポジトリには、いくつかの Python 命令を使用するか、ターミナルでコマンドを実行してトレーニングするオプションが用意されています。その後、このチュートリアルでは、Ultralytics ライブラリのインポートや構成 YAML ファイルの作成など、PyCharm プロジェクトで YOLO V8 を使用してオブジェクト検出器をトレーニングする方法について、段階的なガイドを説明します。このチュートリアルでは、ユーザーがローカル環境で作業するか、Google Colab で作業するかを選択できることも強調しています。

  • 00:35:00 ビデオのこのセクションでは、スピーカーは、カスタム データ セットで YOLO V8 を使用してオブジェクト検出器をトレーニングするための構成ファイルについて説明します。検出されるさまざまなクラスの名前、画像と注釈を含むディレクトリへの絶対パス、および画像が配置されている場所への相対パスを設定する方法について説明します。スピーカーは、トレーニング データと検証データをそれぞれ参照する "train" と "val" という 2 つのキーワードについても言及します。問題を回避するために、相対パスではなく絶対パスを使用することの重要性を強調しています。次にスピーカーは、ファイルの実行方法を実演し、1 エポックのトレーニング プロセスを開始し、プロセスが完了するまで待つ必要があることを強調します。最後に、トレーニング プロセスの完了後に生成された出力ファイルを示します。
     
  • 00:40:00 ビデオ チュートリアルのこのセクションでは、スピーカーは YOLOv8 オブジェクト検出アルゴリズムのトレーニングに使用される画像のバッチと、検証用の同様の画像を示します。講演者は、浅いダミーのトレーニングを行っていることを説明し、この目的で使用されるファイルを示します。次にスピーカーは、ターミナルを使用してコマンドラインからアルゴリズムをトレーニングする方法と、Google コラボ ノートブックからアルゴリズムをトレーニングする方法を示します。ノートブックは 5 つのセルだけで構成されており、スピーカーは、データの場所への相対パスを指定するだけで、データのアップロード、Google ドライブのマウント、アルゴリズムのトレーニングがいかに簡単かを示しています。

  • 00:45:00 このセクションのビデオ チュートリアルでは、Google Colab を使用して、カスタム データセットで YOLOv8 オブジェクト検出器をトレーニングする方法を示します。このプロセスでは、特定の変数を保存し、感嘆符コマンドを使用して Google Colab 環境で「pip install ultralytics」コマンドを実行します。チュートリアルでは、ローカル環境で使用されるのと同じコード行を入力する方法と、Google ドライブ ディレクトリへの絶対パスを指定する方法を示します。ファイルがアップロードされ、コマンドが実行されると、トレーニング プロセスはローカル環境でのプロセスと同様になります。このチュートリアルでは、実行が完了するまで待機し、結果ディレクトリを Google Colab の選択したディレクトリにコピーするコマンドを忘れずに実行するようにユーザーに指示しています。

  • 00:50:00 このセクションのビデオ チュートリアルでは、カスタム データセットでトレーニングされた Yolov8 オブジェクト検出器のパフォーマンスのテストに焦点を当てています。モデルをテストする最初のステップでは、トレーニング プロセスに関するすべての情報が保存されているディレクトリに移動します。ビデオは、混同行列、F1 信頼曲線、損失関数プロットなど、モデルのパフォーマンスを分析するために使用できるさまざまな出力とプロットを紹介します。ビデオでは、モデルのパフォーマンスを分析するためのシンプルかつ強力な方法であるため、すべての損失が減少していることを確認して、損失プロットに注目することをお勧めします。モデルが学習に必要なすべてのことを学習したことを示す可能性があるフラットライン損失関数など、損失関数プロットのさまざまな状況についても説明します。

  • 00:55:00 ビデオのこのセクションでは、プレゼンターが損失関数を分析して、オブジェクト検出モデルのトレーニング プロセスに関する洞察を得る方法について説明します。損失関数が下がればすべてうまくいっていますが、上がればトレーニングに問題があります。プロットを見てこの情報を分析することは、より研究に関係していますが、プレゼンターは、モデルのパフォーマンスを評価するためのより視覚的な方法を提案しています。これは、実際の例を見て、モデルが実際のデータに対してどのように機能するかを確認することです。プレゼンターは、ビデオで実際のアルパカを検出するモデルの例を示します。これは、モデルのパフォーマンスをテストするためのまったく目に見えないデータです。結果は完璧ではありませんが、パフォーマンスは良好です。プレゼンターは、この視覚的評価は、クライアントのプロジェクトに取り組んでいるフリーランサーにとってより適切であると主張しています。モデルは実際のデータで実行されます。
  • 01:00:00 このセクションでは、ビデオを読み込んで予測を実行する Python スクリプトを介して、アルパカ データセットでトレーニングされた YOLOv8 オブジェクト検出モデルのパフォーマンスを、目に見えないデータで示します。検出はうまく機能しているように見えます。ある場合にはほぼ完全に検出され、他の場合には安定して検出されます。スピーカーは、トレーニングと検証損失関数を分析し、それらの下降傾向をチェックし、モデルを再度トレーニングするかどうかを決定するための改善の余地があることをアドバイスします。これは、スピーカーがより強力でパフォーマンスの高いモデルを取得するために行うことです。
GitHub - computervisioneng/train-yolov8-custom-dataset-step-by-step-guide
GitHub - computervisioneng/train-yolov8-custom-dataset-step-by-step-guide
  • computervisioneng
  • github.com
In this video I show you a super comprehensive step by step tutorial on how to use yolov8 to train an object detector on your own custom dataset! dataset If you want to train yolov8 with the same dataset I use in the video, this is what you should do: Go to prepare_data directory. Execute...
 

Yolov8 オブジェクト検出 + ディープ ソート オブジェクト トラッキング |コンピューター ビジョンのチュートリアル

コード: https://github.com/computervisioneng/object-tracking-yolov8-deep-sort



Yolov8 オブジェクト検出 + ディープ ソート オブジェクト トラッキング |コンピューター ビジョンのチュートリアル

このビデオ チュートリアルでは、YOLOv8 とディープ ソートを使用してオブジェクト検出および追跡システムを実装する方法を示します。プレゼンターは、環境のセットアップから、YOLOv8 を使用したビデオ内のオブジェクトの読み込みと検出、ディープ ソートを使用した時間の経過に伴う検出されたオブジェクトの追跡まで、プロセスを段階的に実行します。また、正しいファイル構造を作成し、必要な依存関係をインストールすることの重要性についても説明しています。検出が YOLOv8 から抽出されると、ディープ ソート オブジェクト トラッキングが適用され、検出されたオブジェクトを経時的に追跡します。最後に、プレゼンターは、最終的な出力フレームをビデオ ファイルに保存する方法を説明し、視聴者に精度を高めるために検出しきい値を変更するよう促します。

  • 00:00:00 ビデオのこのセクションでは、ホストが YOLOv8 を使用したオブジェクト検出とディープ ソートを使用したオブジェクト トラッキングのプロジェクトを紹介します。目標は、ビデオ内で人の動きを追跡し、さまざまな色の境界ボックスを使用して追跡対象のオブジェクトを示すことができる追跡アルゴリズムを作成することです。ホストは、使用される YOLOv8 およびディープ ソート リポジトリと、テストされるビデオ データを表示します。最後に、ホストは「tracker.py」と呼ばれるファイルを導入します。これは、高度な関数を使用してオブジェクト追跡プロセスを簡素化するディープ ソートのラッパーです。

  • 00:05:00 ビデオのこのセクションでは、必要なリポジトリのクローンを作成し、必要なファイルをダウンロードし、必要なライブラリをインポートして、チュートリアルの環境をセットアップする方法をプレゼンターが説明します。コードとの互換性を確保するために、正しいファイル構造を作成し、正しい依存関係をインストールすることの重要性を説明しています。次に、プレゼンターは、OpenCV を使用してビデオをロードし、そこからフレームを読み取る方法と、フレームをウィンドウに表示する方法を示します。

  • 00:10:00 このセクションでは、プレゼンターが YOLOv8 事前トレーニング済みモデルを使用してビデオで検出を生成する方法を示します。 Ultralytics を使用して、事前トレーニング済みのモデルがインポートされ、ビデオのフレームで関数が呼び出されます。出力検出結果は出力されますが、結果はカスタム オブジェクト タイプであるため、ラップを解除し、for ループを使用してリストに変換する必要があります。最終的な出力検出は、新しいオブジェクトに保存されます。コードが正常に実行されると、結果をオブジェクト追跡アルゴリズムの入力データとして使用できます。

  • 00:15:00 ビデオ チュートリアルのこのセクションでは、講演者が YOLOv8 オブジェクト検出器から重要な検出情報をすべてアンラップし、Deep Sort オブジェクト トラッキングを使用して検出されたオブジェクトを追跡する方法を実演します。クラス ID、信頼値、各検出の座標などの情報を抽出して、追跡アルゴリズムに渡す方法を示しています。スピーカーは、検出されたオブジェクトを経時的に追跡するために、検出とフレームを使用して Deep Sort トラッカーを初期化して呼び出す方法も示します。

  • 00:20:00 このセクションでは、プレゼンターはディープ ソート オブジェクト トラッキングのプロセスについて説明します。これには、フレームと検出されたオブジェクトの特徴を計算することが含まれます。アルゴリズムはフレームをトリミングして特徴を抽出し、すべてのトラックを反復処理するために、プレゼンターはループを使用して境界ボックスとトラック ID にアクセスします。ビデオで検出された各人物またはオブジェクトには、すべてのフレームで安定した ID が割り当てられています。検出された新しい ID ごとに、プレゼンターはビジュアライゼーション内のランダムな色のリストを使用して、異なる色でそれをプロットします。

  • 00:25:00 ビデオのこのセクションでは、スピーカーは、すべての異なるフレームと検出を含むビデオをローカル コンピューターに保存する問題を解決します。指定した名前と場所でビデオを保存するために、新しいオブジェクト CV2 ビデオ ライターが作成されます。ビデオは、MP4 コーデックと元のビデオと同じフレーム レートを使用して保存されます。講演者は、多くのオブジェクトがアップロードされ、CPU 上で実行されているため、リアルタイムの検出は達成されていませんが、すべてが正常に機能していることを強調しています。全体として、YOLOv8 を使用したオブジェクト検出と Deep SORT を使用したオブジェクト追跡の問題は正常に解決されました。

  • 00:30:00 このセクションでは、スピーカーは、YOLOv8 とディープ ソートを使用してオブジェクト検出と追跡システムを成功させるために必要な最終ステップを確認して、チュートリアルを終了します。出力フレームを out.mp4 ファイルに保存する方法を示し、正常に完了したことを示します。さらに、スピーカーは、起こりうる誤検出について言及し、鳥などのオブジェクトを検出するシステムの精度を向上させるために、視聴者に検出しきい値を変更するよう促します。全体として、このチュートリアルは、コンピューター ビジョン技術を使用してオブジェクト検出および追跡システムを実装しようとしている人にとって役立つガイドとして役立ちます。
GitHub - computervisioneng/object-tracking-yolov8-deep-sort
GitHub - computervisioneng/object-tracking-yolov8-deep-sort
  • computervisioneng
  • github.com
Yolov8 object detection + deep sort object tracking ! requirements Deep Sort We are working on this fork from deep sort official implementation. You can download deep sort feature extraction model here. data You can download the same data I use in the video here.
 

Yolov8 カスタム データセットによる画像セグメンテーション |コンピューター ビジョンのチュートリアル

コード: https://github.com/computervisioneng/image-segmentation-yolov8

データ: https://drive.google.com/drive/folders/1JvA2IvHBy2QOnAtPtoy4JbEEmtbz5dnK



Yolov8 カスタム データセットによる画像セグメンテーション |コンピューター ビジョンのチュートリアル

このチュートリアルでは、画像に注釈を付け、セマンティック セグメンテーション用のバイナリ マスクを作成し、YoloV8 でトレーニングするためのデータセットをフォーマットおよび構造化し、Google Collab でモデルをトレーニングし、トレーニング結果を分析し、Python スクリプトを使用して予測を行うプロセスについて説明します。プレゼンターは、ファイル システムを構造化し、損失関数と検証指標を分析して、YoloV8 カスタム データセットの適切なモデルをトレーニングすることの重要性を強調しています。また、欠陥のあるデータが予測の品質に与える影響についても説明し、現在のモデルの予測を使用して新しく改善されたモデルをトレーニングすることを推奨しています。全体として、このチュートリアルは、YoloV8 カスタム データセットを使用した画像セグメンテーションの包括的なガイドを提供します。

  • 00:00:00 ビデオのこのセクションでは、講師がセマンティック セグメンテーションに使用されるデータ セットを示します。これは、対応するバイナリ マスクを持つアヒルの画像のセットです。バイナリ マスクには、イメージ内のオブジェクトのすべての白いピクセルと、それ以外のすべてのオブジェクトのすべての黒いピクセルがあります。インストラクターは、このデータ セットをオープン イメージ アセット バージョン 7 からダウンロードし、独自のイメージ データに注釈を付ける必要がある場合に備えて、Web サイト cvat.ai を表示します。次に、インストラクターは、このツールを使用して、1 つの画像注釈で画像のバイナリ マスクを作成する方法を紹介します。

  • 00:05:00 チュートリアルのこのセクションでは、プレゼンターが画像に注釈を付け、セマンティック セグメンテーション用のバイナリ マスクを作成する方法を示します。例としてアヒルの画像を使用して、ポリゴンを描画してアヒルの体の周りにマスクを作成するプロセスを視聴者に案内します。これには、水の下の特定の部分にアヒルの一部として注釈を付けるかどうかについての議論が含まれます。発表者は、マスクはピクセル単位で完璧である必要はなく、適切なマスクを作成するのに十分な精度が必要であることを強調しています。最後に、データセットの作成に使用する注釈付きデータを保存およびダウンロードする方法を示します。

  • 00:10:00 このセクションでは、YoloV8 を使用してセマンティック セグメンテーション モデルをトレーニングするために、データセットをフォーマットおよび構造化する方法についてスピーカーが説明します。最初のステップは、Export Task Data Set オプションを使用して必要なデータをダウンロードし、セグメンテーション マスクを選択することです。データをダウンロードしたら、画像、マスク、およびラベルを含むディレクトリ構造に編成する必要があります。画像から生成されたマスクは、スピーカーが提供する Python スクリプトを使用して別のファイル形式に変換する必要があります。このファイル形式は YoloV8 に必要であり、バイナリ マスクと同じ情報が含まれています。講演者はまた、YoloV8 がデータを見つけて使用できるように、ファイル システムを特定の方法で構造化することの重要性を強調しています。

  • 00:15:00 このセクションでは、プレゼンターが Yolov8 カスタム データセットを使用した画像セグメンテーションに必要なディレクトリ構造について説明します。ユーザーには 2 つのディレクトリが必要です。1 つはセマンティック セグメンテーション モデルのすべてのトレーニング データを含む「train」と呼ばれ、もう 1 つはモデルの検証に使用される画像を含む「ball」と呼ばれます。これらのディレクトリ内には、"image" と "labels" という 2 つのディレクトリがあり、どちらにも "train" と "ball" という 2 つのサブディレクトリがあります。前者には、トレーニング マスクから生成されたすべての注釈が含まれます。プレゼンターは pycharm で構造をセットアップし、コードの実装や構成ファイルの編集など、Ultralytics によって事前にトレーニングされた Yolov8 モデルを使用してモデルをトレーニングする方法を説明します。

  • 00:20:00 このセクションでは、無料の GPU にアクセスできるため、セマンティック セグメンテーション モデルが Google Collab でトレーニングされ、プロセスが大幅に高速化されていることをスピーカーが説明しています。講演者は、プロセスを開始する前に、ディレクトリと画像を含むデータと config.yaml ファイルをアップロードすることを推奨しています。さらに、講演者は、Jupiter Notebook ですべてのセルを実行する方法を示して説明し、Google ドライブでデータの場所を共有して、ユーザーがデータをアップロードするときに同じことを行うように促します。最後に、講演者は、ノートブックで YOLOv8 を使用できるように Ultralytics をインストールすることに言及し、ランタイム タイプを確認しながら、GPU を使用した Google Collab を確実に使用することを強調しました。

  • 00:25:00 チュートリアルのこのセクションでは、スピーカーは 10 エポックのモデルをトレーニングし、結果をセグメント トレーニング 2 フォルダーに保存します。次のステップは、トレーニング結果を分析して、すべてが正常に機能していることを検証することです。これを行う最も簡単な方法は、結果が保存されているディレクトリ内のすべてのコンテンツを Google ドライブにコピーすることです。結果がローカル コンピューターにダウンロードされたら、スピーカーは、損失関数、セグメンテーション損失、トレーニング損失、および検証損失プロットの分析に集中して、損失関数が確実に低下していることを確認することをお勧めします。これは、物事がうまく機能していることを示す良い兆候ですが、損失関数の増加は深刻な問題を示しています。

  • 00:30:00 このセクションでは、スピーカーは損失関数と検証メトリクスを分析して Yolov8 カスタム データセットの適切なモデルをトレーニングすることについて話します。トレーニングと検証の損失が減少している場合は良い兆候であり、予測品質が向上している傾向を示しています。ただし、スピーカーは、トレーニング データの注釈の欠落やその他の欠陥が予測の品質に影響を与え、損失関数のプロットに予期しない傾向が生じる可能性があることを警告しています。したがって、スピーカーは、これらのプロットの分析に夢中にならないように、モデルの全体的なパフォーマンスを評価するために予測の分析を含めることをお勧めします。

  • 00:35:00 このセクションでは、スピーカーは、データセットでトレーニングされたモデルの検証と評価の結果を分析することの重要性について説明します。これは完全ではなく、エラーがあります。これらのエラーは、現在のモデルの予測を使用して新しく改善されたモデルをトレーニングすることで対処できます。スピーカーは、モデルの重みが保存されているディレクトリを示し、last.pt と best.pt がトレーニング中の最後のモデルと最高のパフォーマンスのモデルをそれぞれ表すことを説明します。最後に、スピーカーは、best.pt モデルよりもはるかに多くの情報を考慮するため、less.pt の使用を推奨しています。

  • 00:40:00  YOLOv8 カスタム データセットを使用した画像セグメンテーションに関するビデオ チュートリアルのこのセクションでは、プレゼンターが Python スクリプトを使用して予測を行う方法を示します。まず、Ultralytics から YOLO パッケージをインポートし、結果ディレクトリの less.pt を使用してモデルを定義します。次に、画像パスを指定し、CV2 をインポートしてこの画像を開いて読み取ります。プレゼンターは、画像上でモデルを呼び出してモデルの結果を取得し、結果を反復して予測マスクを取得します。マスクのサイズを元の画像のサイズに変更し、output.png として保存します。プレゼンターは、元の画像にマスクを重ねて適切な予測を行う方法も示します。

  • 00:45:00 このセクションでは、発表者が YOLOv8 でトレーニングしたセマンティック セグメンテーション モデルの結果を示します。オーバーレイ画像と透明度を使用して、マスクは 100% 完璧ではありませんが、データのエラーを考慮すると非常に良い結果であることを示しています。次にプレゼンターは、データの注釈付け、モデルのトレーニング、検証から予測までのプロセス全体を要約します。最後に、視聴者にチャンネル登録を促し、公開した他の動画をチェックしてもらいます。
GitHub - computervisioneng/image-segmentation-yolov8
GitHub - computervisioneng/image-segmentation-yolov8
  • computervisioneng
  • github.com
Contribute to computervisioneng/image-segmentation-yolov8 development by creating an account on GitHub.
 

Python を使用した 5 時間での Tensorflow オブジェクト検出 | 3プロジェクトのフルコース

コードを入手する Tensorflow Object Detection Python コース コード: https://github.com/nicknochnack/TFODCourse

Tensorflow オブジェクト検出 React アプリ: https://github.com/nicknochnack/TFODApp

Raspberry Pi の Tensorflow オブジェクト検出: https://github.com/nicknochnack/TFODRPi



Python を使用した 5 時間での Tensorflow オブジェクト検出 | 3プロジェクトのフルコース


00:00:00 - 01:00:00 「Python を使用した 5 時間での Tensorflow オブジェクト検出」チュートリアルでは、オブジェクト検出の初心者に熟練した実践者になる方法を教えています。この包括的なコースでは、TensorFlow オブジェクト検出 API のインストールとセットアップ、画像の収集とラベル付け、オブジェクト検出モデルのトレーニング、「凍結」と変換を使用した TensorFlow.js や TF Lite などのさまざまな形式へのエクスポートについて説明します。このコースは、Python や TensorFlow Object Detection などのオープンソース ツールを使用して実施され、コードを再利用してさまざまなオブジェクトを検出できます。実演されたプロジェクトには、USB 顕微鏡を使用した小さな部品の欠陥の検出、Web カメラを通過するオブジェクトの数のカウント、ビデオ ゲーム内のオブジェクトの検出などがあります。インストラクターは、TensorFlow オブジェクト検出用の仮想環境をセットアップし、さまざまな角度、照明条件、およびグリーン スクリーンのない適切な画像を収集してラベル付けすることの重要性を強調しています。

01:00:00 - 02:00:00 TensorFlow オブジェクト検出に関するこのビデオでは、TensorFlow を使用して画像データのプロトタイプ作成、ラベル付け、準備を迅速に行い、オブジェクト検出のモデルを選択するためのステップバイステップ ガイドを提供します。プレゼンターは、実現可能性を確立し、モデルに適したセンサーを決定するために、迅速にプロトタイプを作成することの重要性を強調しています。このビデオでは、Label Image パッケージと OpenCV Labeling ソフトウェアのほか、物体検出のために画像にラベルを付けるための注釈ファイルを作成するプロセスについて説明します。さらに、プレゼンターは、モデルのパフォーマンスを評価するために使用される評価指標と、速度と精度のトレードオフを考慮して各ユース ケースに適したモデル アーキテクチャを選択する方法について説明します。ビデオは、TensorFlow、CUDA、およびオブジェクト検出に必要なその他のパッケージをインストールする方法を示して締めくくります。 02:00:00 - 03:00:00 「Python を使用した 5 時間での Tensorflow オブジェクト検出 | 3 つのプロジェクトによるフル コース」では、オブジェクト検出のプロセス全体を段階的に説明しています。まず、Nvidia cuDNN、TensorFlow、事前トレーニング済みのモデル Zoo をインストールし、続いてラベル マップを作成して tf レコードを生成します。これに続いて、トレーニング用の構成ファイルのセットアップ、エラーのトラブルシューティング、TensorFlow オブジェクト検出ライブラリを使用したモデルの評価、評価スクリプトの実行によるパフォーマンス メトリックの生成が行われます。 TensorBoard は、トレーニングおよび評価中にメトリックを表示および追跡するために使用されます。最後に、トレーニング済みのモデルがチェックポイントから読み込まれ、画像に対してオブジェクト検出が実行された後、さまざまなプラットフォームで使用できるようにモデルが変換されます。パフォーマンス チューニングについて説明し、デモでは、パフォーマンスの低いクラスに対してより関連性の高いトレーニング イメージを収集してパフォーマンスを向上させる方法を示します。

03:00:00
- 04:00:00 ビデオ「Tensorflow Object Detection in 5 Hours with Python」では、TensorFlow でオブジェクト検出モデルを構築するための包括的なチュートリアルを提供しています。インストラクターは、画像にラベルを付ける方法、パイプラインを構成する方法、モデルをトレーニングおよび調整する方法、リアルタイムでモデルをテストする方法を示します。オブジェクト検出のための顕微鏡の使用、TensorFlow.js Web アプリの構築、および Raspberry Pi 感情検出の実行を含む 3 つのプロジェクトが示されています。このビデオでは、オブジェクト検出のパフォーマンスを向上させるための画質とチューニングのトレードオフの重要性を強調しています。視聴者は、コメント セクションまたは Discord サーバーで説明を求めるか、フィードバックを提供することをお勧めします。

04:00:00
- 05:00:00 このビデオ チュートリアルでは、ラベルの設定とリセット、モデルで使用する画像のラベル付け、ラベル マップの更新、モデルのトレーニング、評価と改善の方法など、Tensorflow オブジェクト検出のさまざまな側面について説明しますその精度、エクスポートして tensorflow.js に変換し、Raspberry Pi で実行します。インストラクターは、アプリのデバッグと結果配列の操作に関するガイダンスも提供します。チュートリアル全体を通して、講師は大文字と小文字の区別の重要性を強調し、画像ディレクトリの整理と移動、カスタム モデルの作成、収集した画像のラベル付けの方法を示します。チュートリアルは、さまざまなデバイスで複数のモデルを実行することについて、視聴者にアイデアを共有してもらうことで締めくくられています。

05:00:00 - 05:25:00 Python を使用した TensorFlow オブジェクト検出に関するこのフル コースでは、インストラクターが GPU マシンでの感情分析などのモデル アプリケーションをトレーニングする際の一般的なエラーと解決策について説明します。このコースでは、TensorFlow オブジェクト検出を使用した Raspberry Pi 検出モデルの構築とインストール、OpenCV Python、TensorFlow Lite ランタイムなどの必要な依存関係のインストール、しきい値の調整によるカスタム オブジェクトの検出、および画像とトレーニングの追加によるモデル パフォーマンスの改善について説明します。長いため。このコースは、パフォーマンス チューニングの力を強調し、視聴者が必要に応じて支援を求めることを奨励することで締めくくります。


パート1

  • 00:00:00 このセクションでは、インストラクターがオブジェクト検出コースを紹介します。これは、オブジェクト検出の完全な初心者を実践者として熟練したレベルにすることを目的としています。このコースは包括的で、TensorFlow オブジェクト検出 API のインストールと設定、画像の収集とラベル付け、モデルのトレーニング、検出モデルのさまざまな形式へのエクスポート、さまざまなユースケースでのモデルのテストをカバーしています。このコースはすべて、オープンソース ツール (主に Python と TensorFlow のオブジェクト検出) を使用して行われるため、さまざまなオブジェクトを検出するためにコードを簡単に転用できます。インストラクターは、TensorFlow オブジェクト検出 API を使用する利点についても説明します。TensorFlow オブジェクト検出 API は、提供されるさまざまな追加機能により、オブジェクト検出モデルの構築プロセスを高速化します。

  • 00:05:00 このセクションでは、インストラクターが従来のプログラミングと機械学習の違いについて説明します。機械学習では、オブジェクトを検出するための明示的なルールを定義する代わりに、データと回答を使用してオブジェクト検出モデルをトレーニングし、ルールを学習します。このモデルは、静止画像とリアルタイム ビデオ フィード内のオブジェクトを検出でき、エクスポートして、フリーズと変換を使用して tensorflow.js や tf lite などのさまざまな形式に変換できます。モデルの精度を向上させるには、パフォーマンスの調整が不可欠であり、インストラクターはこのトピックについてステップ 6 で説明します。最後に、インストラクターは、USB 顕微鏡を使用して小さな部品の欠陥を検出する、ビデオ ゲーム内のオブジェクトを検出する、Web カメラを通過するオブジェクトの数をカウントするなど、3 つのプロジェクトを実演します。

  • 00:10:00 このセクションでは、インストラクターがチュートリアルで取り上げる 3 つのプロジェクトを紹介します。これらのプロジェクトには、プリント回路基板の欠陥を特定するための物体検出モデルのトレーニング、手のジェスチャーの検出、およびモデルの Web アプリへの統合が含まれます。 Raspberry Pi を使用してリアルタイムのオブジェクト検出を実行します。講師は、プロジェクトごとに Github で 3 セットのコードを提供します。これらは、モデルを段階的に構築するために使用されます。最初のステップは、コードを複製して仮想環境を作成することです。これは、家の中の別の部屋のようなものだと説明されています。このセクションには、先に進む前に各ステップを確認する、メモを取る、必要に応じて提供された Discord サーバーを通じて助けを求めるなど、チュートリアルに従うための役立つヒントも含まれています。

  • 00:15:00 ビデオのこのセクションでは、講師が TensorFlow オブジェクト検出モデルを操作する際に仮想環境を使用することの重要性を説明しています。彼は、以前にインストールされたライブラリと競合しないようにするために、すべてのオブジェクト検出の依存関係がインストールされている家に新しい部屋を作成することだと説明しています。その後、インストラクターは、Visual C++ ビルド ツール、GPU ベースのアクセラレーション用の CUDA および CUDNN など、TensorFlow を操作するために必要な依存関係について説明します。彼は、オブジェクト検出モデルのトレーニングを高速化するためにこれらのライブラリが不可欠であると説明し、それらをダウンロードしてインストールする方法を示しています。全体として、このセクションは、TensorFlow オブジェクト検出モデルを作成するための開発環境をセットアップするために必要な基本的な基盤を提供します。

  • 00:20:00 ビデオ チュートリアルのこのセクションでは、必要な Python、GCC コンパイラ、Bazel、CUDA、および cuDNN の特定のバージョンを含む、TensorFlow Object Detection をインストールするために必要な要件についてインストラクターが説明します。インストラクターは、トレーニング中に GPU を利用するには、TensorFlow、CUDA、および cuDNN のバージョンを一致させることが不可欠であることを強調しています。 Windows と Linux/macOS のインストール ガイドへのリンクを提供し、視聴者に TensorFlow のバージョンを確認して、適切な CUDA と cuDNN のバージョンを取得するようアドバイスします。さらに、インストラクターは、インストール中またはオブジェクト検出ノートブックの実行中に発生する一般的な問題のエラー ガイドを作成したと述べています。このガイドには、さまざまなエラーの解決策が含まれており、提供されている GitHub リポジトリ リンクで見つけることができます。

  • 00:25:00 このセクションでは、講師が Python を使用して TensorFlow オブジェクト検出用の仮想環境をセットアップする方法を示します。彼は、必要なコードと依存関係を含むリポジトリのクローンを作成し、Python の venv パッケージを使用して仮想環境を作成し、環境をアクティブ化することを含む、環境を作成するために従うべき手順を示しています。仮想環境を作成することは、家に新しい部屋を作成することに似ており、ライブラリと依存関係を分離して、分離された環境で TensorFlow オブジェクト検出プロジェクトに取り組むことができます。

  • 00:30:00 このセクションでは、トレーニング、アプリ、および Raspberry Pi コードを分離しておくために、TensorFlow オブジェクト検出 (TFOD) の仮想環境を作成するプロセスについて、ビデオ作成者が説明します。ビデオ作成者は、Windows マシンでコマンドを実行して環境をアクティブ化するなど、仮想環境をアクティブ化する手順を実行します。 pip インストーラーを更新してから TensorFlow をインストールするデモがあります。これらの更新プログラムの利点は、サイト パッケージ フォルダー内のリアルタイムのインストールを確認できることです。 TensorFlow のインストールには複数回の試行が必要な場合があり、動画作成者には、すべてが正しくインストールされていることを確認するための検証スクリプトがあることに注意してください。

  • 00:35:00 このセクションでは、スピーカーは必要なパッケージをインストールし、iPy Kernel を使用して Jupyter Notebook で仮想環境をセットアップする方法を説明します。また、Anaconda Python および Jupyter Notebook を初めて使用するユーザー向けにインストールする手順も提供します。次に、iPy カーネルをインストールし、それを Jupyter Notebook に関連付けて、より効率的なデータ サイエンス ワークロードを有効にする方法を説明します。最後に、講演者は仮想環境を検証し、TensorFlow オブジェクト検出モデルの構築に向けた次のステップの一環として、画像の収集とラベル付けを開始する方法を示します。

  • 00:40:00 このセクションでは、オブジェクト検出モデルをトレーニングする際に適切な画像を収集してラベル付けすることの重要性をインストラクターが強調しています。これを実証するために、彼は Jupyter ノートブックを使用して Web カメラから画像を収集し、LabelImg ライブラリを使用して画像にラベルを付けます。インストラクターは、ラベルをできるだけきつく保ち、さまざまな角度やさまざまな照明条件でのオブジェクトの写真を含めるなど、ラベル付けの際に留意すべきベスト プラクティスを共有します。もう 1 つの重要なベスト プラクティスは、各クラスの 10 ~ 20 枚の写真から始めることですが、インストラクターはそれより少ない写真から始め、パフォーマンスが最適ではない場合にモデルを再トレーニングするために写真を追加する方法を示します。最後に、インストラクターは、オブジェクトの背後にあるグリーン スクリーンなしでモデルにさまざまな画像を提供すると、モデルがより一般化され、オブジェクトをより適切に検出できるようになると説明しています。

  • 00:45:00 このセクションでは、講師が TensorFlow オブジェクト検出チュートリアルの画像収集コンポーネントを通して視聴者をガイドします。チュートリアルは、Web カメラにアクセスして画像を収集するために使用される一般的なコンピューター ビジョン ライブラリである OpenCV をインストールすることから始まります。インストラクターは、依存関係が仮想環境にインストールされていることを確認して、制御を維持し、円滑な運用を確保することの重要性を強調しています。次に、コードは UUID、OS、時間などの必要な依存関係をインポートします。これらは、さまざまなファイル パスへの準拠を保証し、さまざまな角度で画像をキャプチャするために使用されます。次に、チュートリアルでは、収集するさまざまなラベルを定義し、検出する目的のオブジェクトに基づいてラベルを変更できることを説明します。ラベルはリストに保存され、ラベルごとに収集される画像の数は、変数「画像の数」によって定義されるとインストラクターは説明します。

  • 00:50:00 このセクションでは、インストラクターがオブジェクト検出用のフォルダー構造の設定、開始時に適切な数の画像を用意することの重要性、および Web カメラやその他のキャプチャ デバイスを使用して画像をキャプチャする方法について説明します。フォルダー構造は、チュートリアル全体で従う必要がある特定のファイル パスを使用して作成されます。コードはすべてのラベルをループし、Web カメラに接続して、各ラベルの画像をキャプチャします。インストラクターは、Web カメラのビデオ キャプチャ デバイス番号を正しく指定することの重要性を強調しています。これが正しくないとエラーが発生する可能性があるからです。

  • 00:55:00 このセクションでは、インストラクターがオブジェクト検出用の画像を収集するためのコードを説明します。コードはラベルをループし、Web カメラを使用してフレームをキャプチャします。新しい画像を作成し、一意の識別子名を持つそれぞれのラベル フォルダー内に配置します。 cv2.iamwrite コマンドは、画像をファイルに書き込み、画面に表示するために使用されます。このコードでは、ユーザーが任意の時点で q キーを押してエスケープすることもでき、終了したらすべてを閉じます。インストラクターは、一般化されたモデルを構築するために、さまざまな位置で画像をキャプチャすることが不可欠であることを強調しています。

パート2

  • 01:00:00 このセクションでは、スピーカーは、科学プロジェクトがプロジェクトの実現可能性と可能性を確立するために、できるだけ早くプロトタイプを作成することの重要性を強調しています。説明のために、スピーカーは曲がった LED を検出する例を示します。これには、超高精度のモデルまたは顕微鏡などのセンサーが必要です。モバイル ネット モデルと Web カメラを使用して迅速にプロトタイプを作成すると、パフォーマンスが低下する可能性があります。これは、別の手法またはセンサーが必要であることを示しています。プロトタイピングは、改善のためのベースラインを迅速に確立するのに役立ちます。スピーカーは、低品質の画像を削除し、より良い検出のためにより良い品質の画像をキャプチャすることの重要性を強調しながら、収集した画像を使用してモデルをトレーニングし、高評価を検出します。

  • 01:05:00 このセクションでは、インストラクターが画像のラベル付けに使用されるラベル画像パッケージを紹介します。ユーザーは、Github リポジトリにアクセスしてパッケージを確認できます。その後、講師は、必要な依存関係である pi qt5 と lxml をインストールし、tensorflow という名前の新しいフォルダーを作成し、パッケージを保存するために image にラベルを付ける方法を示します。次に、インストラクターは、特定のコマンドを実行して、Github リポジトリーのクローンを作成し、ラベル イメージ パッケージをインストールする方法を示します。最後に、講師はラベル画像アプリケーションを開き、画像にラベルを付ける準備をします。

  • 01:10:00 このセクションでは、インストラクターが、OpenCV ラベリング ソフトウェアを使用してオブジェクト検出用の画像にラベルを付けるプロセスを実演します。このプロセスには、ソフトウェアで特定のディレクトリを開き、ラベル付けする画像を選択することが含まれます。インストラクターは、検出ラベルをできるだけ正確に使用し、ラベル名が注釈とトレーニング ステップのものと一致するようにすることをお勧めします。さらに、インストラクターは、視聴者がオブジェクト検出のさまざまなアプリケーションについて考え、ラベルの定義、画像の収集、およびそれらのラベル付けと同じプロセスを使用してそれらを試すことを奨励しています。各画像に対応する注釈が存在することを確認することの重要性も強調されています。

  • 01:15:00 このセクションでは、インストラクターが注釈ファイルを作成して画像にラベルを付ける方法を説明します。注釈ファイルは、画像内のオブジェクトの位置を記述する xml ファイルです。インストラクターは、複数のオブジェクトで画像にラベルを付ける方法を示し、注釈を適切に保存する方法を説明します。画像にラベルを付けるプロセスは、アウトソーシングするか、軽量のオブジェクト検出モデルを使用してラベル付けプロセスを自動化する新しいツールを使用することで、スケールアップできます。

  • 01:20:00 このセクションでは、ビデオ インストラクターが、ラベル画像を使用して画像にラベルを付ける方法と、何千もの画像で巨大なオブジェクト検出モデルを構築する前に、適切な手法を使用していることを確認するためのプロトタイプを作成する方法を示します。彼は、10 ~ 25 枚の画像にラベルを付けて超高速に保ち、適切なセンサーを使用して適切なレベルのデータを取得することから始めることをお勧めします。また、インストラクターは、画像をトレーニングとテストのパーティションに分割して、画像のセグメントでモデルをトレーニングし、これまでに見たことのない一連の画像でモデルをテストすることの重要性についても説明します。彼は、画像フォルダー内に train と test という 2 つの新しいフォルダーを作成して、トレーニングとテストの画像と注釈を保存します。

  • 01:25:00 このセクションでは、オブジェクト検出モデルをトレーニングするために、収集してラベル付けした画像データを準備する方法を学びます。画像と注釈を保存するために、トレーニングとテストの 2 つのフォルダーを作成し、各クラスの画像と注釈ファイルの両方を確実に取得します。次に、これらを TensorFlow レコードに変換してトレーニングに使用する方法を説明します。また、データの命名と整理のベスト プラクティスについても説明します。最後に、TensorFlow オブジェクト検出モデルのトレーニングに必要な依存関係と、評価メトリクスを使用してモデルを評価する方法を紹介します。

  • 01:30:00 このセクションでは、スピーカーは、オブジェクト検出モデルのトレーニング後に得られる評価指標について説明します。これらのメトリクスには、正確な検出の割合を計算する精度と平均精度 (MAP) が含まれます。それらは、真陽性、偽陽性、真陰性、および偽陰性の数に基づいて計算されます。スピーカーは、モデルのパフォーマンスを評価する際に精度と再現率が非常に重要であると説明しています。さらに、講演者は、TensorFlow モデル Zoo の選択がモデルの精度と速度に影響を与えることに言及しています。異なるモデルには異なるアーキテクチャがあり、その結果、精度と速度のレベルが異なるため、実務者はユース ケースに適したモデルを選択する必要があります。

  • 01:35:00 このセクションでは、TensorFlow オブジェクト検出のモデル アーキテクチャを選択する際のモデルの速度と精度の間のトレードオフについて説明します。このビデオでは、さまざまなモデル オプションとそれに対応するフレーム速度、および平均精度スコアを示しています。発表者は、特定のアーキテクチャは高速で非常に正確である可能性がある一方で、他のアーキテクチャは遅くてもより正確である可能性があると述べています。 TensorFlow Update Detection モデル API を使用する利点についても言及されています。たとえば、前処理と後処理の手法や画像拡張の使用などです。このセクションの最後に、必要に応じてクラウド インスタンスを使用してモデルをトレーニングする方法について説明します。

  • 01:40:00 このセクションでは、インストラクターが TensorFlow オブジェクト検出モデルのセットアップについて説明します。これには、事前トレーニング済みのモデル名と URL のセットアップ、および生成 tf レコード スクリプトとラベル マップ名などの変数が含まれます。モデルのフォルダー構造も表示され、ワークスペースには注釈、画像、モデル、およびチェックポイントのフォルダーが含まれています。次のステップは、TensorFlow モデル ズーから TensorFlow モデルをダウンロードし、TensorFlow オブジェクト検出パッケージをインストールすることです。インストラクターが手順を追って説明し、インストールが成功するようにします。このプロセスには、TensorFlow Object Detection リポジトリのクローン作成と、必要な依存関係のインストールが含まれます。

  • 01:45:00 このセクションでは、プレゼンターが TensorFlow オブジェクト検出モデル API のクローンを作成してインストールする方法を説明します。モデル API は、TensorFlow モデル ガーデンからダウンロードできます。ここには、多くのドキュメントとオープンソースのチュートリアルがあります。次にプレゼンターは、TensorFlow Object Detection Model API を使用するために必要なすべてのファイルを含む research フォルダーに移動する方法を示します。リサーチ フォルダのクローンを作成した後、プレゼンターは、TensorFlow オブジェクト検出モデル API を正常にインストールするために必要な protoc およびその他の必要なコンポーネントをインストールする方法の説明に進みます。最後に、プレゼンターは、検証スクリプトを実行して TensorFlow Object Detection API が正常にインストールされたかどうかを確認することで、インストールを検証する方法を示します。

  • 01:50:00 このセクションでは、インストラクターはオブジェクト検出のために Tensorflow を検証してインストールするプロセスを実行します。彼は、検証スクリプトを使用して Tensorflow が正しくインストールされていることを確認し、それを実行してエラーをチェックできると説明しています。このスクリプトは、実行時に Tensorflow がインストールされているかどうかを示す標準の Tensorflow オブジェクト検出スクリプトです。 Tensorflow が正しくインストールされていない場合、インストラクターは、matplotlib や yaml などの追加パッケージのインストールを含む、構成方法に関するガイダンスを提供します。インストラクターは視聴者に、エラーが発生した場合は、よく発生し、簡単に解決できるため、Google で検索できることを保証します。最後に、彼は、検証スクリプトの下部にある「OK」サインに到達することが成功したということは、Tensorflow が正しくインストールされたことを意味すると述べています。

  • 01:55:00 このセクションのビデオでは、TensorFlow のインストール プロセスとオブジェクト検出に必要なパッケージについて説明します。インストラクターは、TensorFlow、Matplotlib、Protobuf、Pillow、および Pymel をインストールする方法を示します。ご使用の環境によって異なる場合がありますので、インストラクターはインストールプロセスを確認することをお勧めします。このビデオでは、トレーニングに GPU を使用する場合に必要な CUDA と CuDNN をインストールする手順も説明しています。インストラクターは、CUDA と CuDNN の正しいバージョンを見つける方法を説明し、インストール プロセスを実行します。最後に、インストラクターは、カーネルを再起動してオブジェクト検出 API をノートブックに正常にインポートする方法を示します。

パート3

  • 02:00:00 このセクションでは、GPU でトレーニングする場合に必要な Nvidia cuDNN をダウンロードしてインストールするプロセスをインストラクターが説明します。最初に、無料の Nvidia 開発者アカウントにサインアップする必要があります。次に、cuDNN のダウンロードを選択してログインします。2 つのバージョンが利用可能で、TensorFlow のバージョンと互換性のあるバージョンをダウンロードする必要があります。インストラクターは、zip ファイルを解凍し、cuDNN ファイルを CUDA インストール場所内のそれぞれのフォルダーにコピーする方法を説明します。ファイルをコピーしたら、最後の手順として、CUDA フォルダーが Windows マシンのパスに追加されていることを確認します。

  • 02:05:00 ビデオのこのセクションでは、講師が TensorFlow のインストール プロセスと、それが適切に機能しているかどうかをテストする方法について説明します。次にビデオは、TensorFlow モデル Zoo から事前トレーニング済みのオブジェクト検出モデルをダウンロードするプロセスに進みます。このモデルは、カスタム オブジェクトを検出するための転移学習に使用されます。インストラクターは、モデルをダウンロードする方法を実演し、ダウンロードされたファイルのさまざまなコンポーネントについて説明します。最後に、カスタム オブジェクト検出用のさまざまなラベルを表すラベル マップが作成されます。

  • 02:10:00 このセクションでは、インストラクターがラベル マップの作成と tf レコードの生成について説明します。彼は、ラベル マップ ファイルがその後のトレーニング プロセス全体で使用されるため、適切なラベル付けの重要性を強調しています。このビデオでは、トレーニングとテスト レコードの生成と、モデルのパス コンポーネント、特に微調整チェックポイント、ラベル マップ パス、および入力パスを更新する方法について説明します。最後に、モデルのアーキテクチャを決定し、特定のモデル用にカスタマイズする必要があるパイプライン構成ファイルの関連性を強調しています。

  • 02:15:00 ビデオのこのセクションでは、インストラクターがモデルをトレーニングするための構成ファイルをセットアップする方法を説明します。パイプライン ファイルは事前トレーニング済みモデル フォルダーからコピーされます。次に、さまざまなファイル パスとクラス数をすべて設定し、微調整チェックポイント、ラベル マップ パス、入力パスなどを設定することにより、コードを使用して構成を行います。セットアップが完了したら、pipeline.config ファイル パス、パイプライン構成、トレーニング ステップ数などの必要な引数を指定してモデル トレーニング スクリプトを実行することにより、モデルをトレーニングできます。モデル トレーニングの進行状況を確認するには、ノートブックの外部にある別のコマンド プロンプトでコマンドを実行することをお勧めします。

  • 02:20:00 このセクションでは、インストラクターがオブジェクト検出トレーニング プロセス中に発生するエラーをトラブルシューティングします。ほとんどのエラーは、適切なライブラリをインストールするか、オンラインで解決策を検索することで解決される、と彼は説明します。彼はまた、ユーザーが GPU を活用したい場合は、正しいバージョンの TensorFlow GPU をインストールしたことを確認する必要があるとも述べています。次にインストラクターは、特定のエラーを解決するためにライブラリをアンインストールおよび再インストールするプロセスを視聴者に案内し、このプロセスには時間がかかる場合がありますが、オブジェクト検出トレーニングの実行を成功させるために必要であることを強調します。最後に、正しいライブラリがインストールされていることを確認する方法と、トレーニング実行の進行状況を監視する方法を視聴者に示します。
     
  • 02:25:00 このセクションでは、インストラクターがモデルをトレーニングし、そのパフォーマンス メトリックを評価するプロセスについて説明します。トレーニングが開始されると、100 ステップごとに損失指標が表示され、モデルが正しくトレーニングされていることが示されます。 2000 ステップのトレーニング モデルの出力が生成され、モデルが 0.188 の最終的な損失で正常にトレーニングされたことを示します。次に、インストラクターは、TensorFlow オブジェクト検出ライブラリを使用してモデルを評価し、トレーニング済みモデルのパフォーマンス メトリックを生成する評価スクリプトを実行する方法を説明します。その後、TensorFlow のインタラクティブな監視ツールである TensorBoard を使用して、平均精度と再現率の指標を表示できます。

  • 02:30:00 このセクションでは、インストラクターが Tensorboard を使用して、トレーニングと評価中にメトリクスを表示および追跡する方法を視聴者に案内します。 train フォルダーに移動すると、経時的な損失メトリックを表示できます。また、eval フォルダーに移動すると、平均精度、精度、再現率などの評価メトリックを表示できます。閲覧者は、画像を表示してモデルのリアルタイム パフォーマンスを確認し、画像が正しく分類されているかどうかを確認したり、凍結後にグラフをエクスポートする方法を学習したりできます。

  • 02:35:00 このセクションでは、トレーニング済みのモデルがチェックポイントから読み込まれ、画像に対してオブジェクト検出が実行されます。最新のチェックポイントは、パイプラインとすべてのチェックポイントを含むカスタム モデル フォルダーにあります。最新のチェックポイントをインポートすると、画像を選択し、検出機能を使用してオブジェクト検出を実行できます。検出機能は、Web カメラからのリアルタイムのオブジェクト検出にも使用されます。多くの画像を使用せずに 2000 ステップのみのトレーニングを行ったにもかかわらず、モデルはさまざまな手のジェスチャーを検出する際に優れたパフォーマンスを発揮します。

  • 02:40:00 このセクションでは、インストラクターは、親指を立てる、親指を下に向ける、長生きする、両手など、さまざまな手のジェスチャーでのオブジェクト検出モデルのパフォーマンスを示します。モデルのパフォーマンスは、手のジェスチャーとカメラからの距離によって異なりますが、トレーニング セットに画像を追加することで微調整できます。次に、凍結グラフを作成してモデルを凍結および変換し、それを TensorFlow.js および TFLite にエクスポートします。変換されたモデルは、Web アプリまたは Raspberry Pi プロジェクトに使用できます。カスタム モデルの最終出力は、チェックポイント、保存されたモデル アセット、変数、およびパイプライン構成を含む事前トレーニング済みモデルと同様です。

  • 02:45:00 このセクションでは、スピーカーは、tf light への変換である、実行する必要がある最後の変換について説明します。これは 2 つの部分で行われます。まず、グラフが tf lite グラフにエクスポートされ、次に tf lite コンバーターを使用して実行され、それを活用するために必要な正確な出力が出力されます。講演者は、これがエンド ツー エンドのモデルであり、グラフを凍結して tfjs と tf lite にエクスポートしたため、tensorflow オブジェクト検出 API の操作の完全なウォークスルーが完了したことに注意します。講演者は、パフォーマンス チューニングについても説明し、モデルのパフォーマンスを改善するために実行できる 3 つの重要な事柄について説明します。パフォーマンスの低いクラスの画像をトレーニング データ セットに追加すること、モデルをより長くトレーニングすること、モデル アーキテクチャを変更することです。
     
  • 02:50:00 ビデオのこのセクションでは、プレゼンターは、より関連性の高いトレーニング画像を追加することで、オブジェクト検出モデルのパフォーマンスの低いクラスのパフォーマンスを改善する方法を示しています。プレゼンターは、すべてのクラスの画像を収集するのではなく、親指を上げた場合と親指を下げた場合の画像をさらに収集します。プレゼンターは OpenCV をインポートし、ラベル マップを更新してから、親指を立てた画像と親指を下げた画像のみを収集します。収集された画像は Tensorflow ワークスペース内に保存され、プレゼンターがそれらを評価し、品質の低いものを削除します。最後に、発表者はモデルのパフォーマンスを向上させるために、別の手で親指を下に向けた画像をいくつか追加します。

  • 02:55:00 ビデオのこのセクションでは、インストラクターがコードを実行して、親指を上に向けるジェスチャーと親指を下に向けるジェスチャーの画像をさらにキャプチャします。画像をキャプチャした後、インストラクターは画像の品質をチェックし、すべての高評価画像を保持することを決定し、画面外にある低評価画像の一部を削除します。その後、インストラクターは LabelImg ツールを開き、ラベル名の大文字と小文字の区別に注意して、新しい画像に再度ラベルを付けます。インストラクターは、画像にラベルを付けるこのステップは試行錯誤であり、モデルのパフォーマンスを向上させるものを評価して確認できると述べています。インストラクターは、効率を改善するために自動ラベル付けツールを検討することを提案していますが、手動で微調整する必要がないように、そのパフォーマンスに注意を払うことを勧めています.

パート 4

  • 03:00:00 このセクションでは、インストラクターが、TensorFlow オブジェクト検出モデルのトレーニングを改善するために、画像にすばやくラベルを付ける方法を示します。彼は、モデルの精度を評価するために、ラベル付けされた画像をトレーニング フォルダーとテスト フォルダーの両方にコピーすることが重要であると説明しています。次に、トレーニングと検出のノートブックでカスタム モデル名を変更して新しいフォルダーを作成することにより、"調整された" モデルをトレーニングする方法を示します。次に、事前トレーニング済みのパイプライン構成を新しい調整済みモデルにコピーし、パイプライン構成を更新する方法について説明します。最後に、トレーニングに必要な新しい tf レコード ファイルを作成するために提供されたコードを使用して、必要なすべてのパスを構成します。

  • 03:05:00 このセクションでは、インストラクターはパイプライン構成を更新します。これは、標準構成を使用してトレーニング用のすべてのラベル マップ パスを定義します。パイプラインの更新は、トレーニング スクリプトを実行するための道を開くため、重要なステップです。トレーニング ステップの数が以前の構成から 3000 に更新され、コマンドが実行されてトレーニング済みモデルが作成されます。トレーニング手順の完了後、手順 7 でコードを実行することにより、このモデルが評価され、以前のモデルと比較されます。評価メトリックは、平均精度が 0.7 から 0.834 に増加し、検出がより高速かつ正確になったことを示しています。画像を追加し、ラベルを追加し、位置を変えることで、インストラクターはモデルを改善し、より優れたオブジェクト検出モデルを作成する方法を示します。最後に、新しいモデルが読み込まれ、リアルタイム検出のためにコードが実行されます。これにより、オブジェクトが非常に迅速かつ正確に検出されます。

  • 03:10:00 このセクションでは、モデルのアーキテクチャを変更して Tensorflow Object Detection モデルのパフォーマンスを向上させる方法について講師が説明します。これを行うには、ユーザーは検出ノートブックで使用する事前トレーニング済みモデルのリンクを更新する必要があります。新しいリンクと名前をコピーして貼り付けることで、ユーザーは新しい事前トレーニング済みモデルを事前トレーニング済みモデル フォルダーにダウンロードできます。ただし、インストラクターは、さまざまなスタイルの画像を使用したり、さまざまな角度の画像を使用したり、より長い期間トレーニングしたりするなど、画質を向上させることでパフォーマンスが向上することを強調しています。インストラクターは、画像を圧縮してアーカイブし、Colab のトレーニングおよび検出ノートブックにインポートすることで、Google Colab でモデルをトレーニングする方法も示します。

  • 03:15:00 このセクションでは、インストラクターが、TensorFlow オブジェクト検出プログラムで使用する画像をアップロードするプロセス、TensorFlow モデル リポジトリのクローンを作成するプロセス、および TensorFlow オブジェクト検出ソフトウェアをインストールするプロセスを視聴者に案内します。事前トレーニング済みのモデルが取り込まれ、ラベル マップが作成されます。インストラクターは、モデルをトレーニングする前に、models/my_ssd_mobnet フォルダー内にカスタム構成を確立します。 Colab を使用した Web カメラではリアルタイムのオブジェクト検出を行うことはできませんが、画像では行うことができるという警告が視聴者に表示されます。視聴者はプロセスを段階的に進めながら、モデルを評価して、平均精度と平均再現率を確認できます。

  • 03:20:00 ビデオのこのセクションでは、インストラクターがトレーニング済みモデルを使用して画像内のオブジェクトを検出する方法を示します。最新のチェックポイントが読み込まれ、検出スクリプトを実行するためにイメージ名が指定されます。インストラクターは、画像が有効で、images フォルダーにある必要があることを強調しています。セルを実行すると、トレーニング済みのオブジェクト検出モデルが画像内のオブジェクトを識別します。インストラクターはさらに、ファイルを圧縮してエクスポートする方法を説明し、コードをローカルで実行するときにオブジェクト検出 API をインストールする必要性を強調します。このセクションは、オブジェクト検出のための顕微鏡の使用、TensorFlow.js Web アプリの構築、Raspberry Pi 感情検出の実行など、次に取り上げる 3 つのプロジェクトをプレビューすることで締めくくります。

  • 03:25:00 このセクションでは、インストラクターが最初のプロジェクトの説明から始めます。このプロジェクトでは、USB 顕微鏡を使用して小さな LED の欠陥を検出します。顕微鏡は他のカメラと同じように扱われ、ビデオ フィードは OpenCV ライブラリを使用して取得されます。インストラクターは、Python コードを使用して顕微鏡を配置およびズームする方法を示し、ビデオ フィードを表示します。次に、ビデオ フィードを使用して、オブジェクト検出用のトレーニング イメージを収集します。このプロジェクトの目標は、モデルをトレーニングして LED の欠陥を検出し、それらを曲がっているか曲がっていないかを分類することです。

  • 03:30:00  TensorFlow Object Detection フル コースの 3 つのプロジェクトのこのセクションでは、インストラクターが OpenCV を使用して Web カメラまたは顕微鏡フィードから画像をキャプチャする方法を示します。彼は、cv2 Web キャプチャを閉じた後に「cap.release」を実行するなど、キャプチャ デバイスを解放し、OpenCV ウィンドウを破棄するためのベスト プラクティスについて説明しています。次に、顕微鏡の位置と焦点を調整して LED ピンの画像をキャプチャする方法と、欠陥のあるピンと正常なピンの画像を保存する 2 つの新しいフォルダーを作成する方法を示します。最後に、画像キャプチャ用の Web カメラ フィードをテストして、すべてが期待どおりに機能していることを確認します。

  • 03:35:00 ビデオのこのセクションでは、インストラクタが、物体検出のために欠陥のあるピンと欠陥のないピンの画像を収集する方法を実演します。ピンを配置し、画像キャプチャ間のスリープ時間を調整してから、スリープ機能を使用してキャプチャ間で一時停止します。インストラクターは、ラベル付けラインとフォルダーの場所を使用して画像にラベルを付ける方法についても説明します。視聴者に、コメント セクションまたは Discord サーバーで説明を求めたり、フィードバックを提供したりすることをお勧めします。

  • 03:40:00 ビデオのこのセクションでは、講師が画像にラベルを付けて、TensorFlow を使用してカスタム オブジェクト検出モデルをトレーニングするプロセスを説明します。インストラクターは顕微鏡を使用して、欠陥のあるピンと欠陥のないピンの画像をキャプチャし、それに応じてラベルを付けます。次に、トレーニング パイプラインを設定する前に、イメージをトレーニング フォルダーとテスト フォルダーにコピーします。講師は、カスタム オブジェクト検出モデル用の新しいフォルダーを作成し、ラベル マップを更新して新しいラベルを含める方法を説明します。このセクションで使用されるコード ベースは非常に汎用的なものであり、多くのカスタマイズが可能であり、講師はパフォーマンス チューニングに関するヒントを提供します。

  • 03:45:00 チュートリアルのこのセクションでは、モデルのトレーニングを可能にする TensorFlow レコードの作成に焦点を当てています。事前トレーニング済みモデルのダウンロードとラベル マップの作成に必要なセルについて説明しますが、モデルのトレーニングを可能にする TensorFLow レコードの作成に重点が置かれています。 TensorFlow レコードが作成されると、モデルが新しいクラスで更新され、更新された構成が保存されます。モデルは 2000 ステップでトレーニングされ、新しいモデルがテストされて、欠陥のあるピンと欠陥のないピンが検出されます。ノートブックの概要が示され、ユーザーはこのモデルの開発を可能にする特定のセルに向けられます。

  • 03:50:00 このセクションでは、インストラクターが画像を更新して、欠陥のあるピンと欠陥のないピンを検出します。システムは、高い信頼性で両方のピンを正常に検出します。しかし、インストラクターは、特定の位置に欠陥のあるピンがあるとシステムがうまく機能しないことに気付き、チューニングのトレードオフを浮き彫りにします。インストラクターは、検出フレームには、検出精度のレベルを決定するために変更できるパラメーターがあることを示しています。最小スコアしきい値を下げることにより、システムは欠陥のあるピンを適切に検出できますが、他の多くのものを欠陥として検出するという代償を払います。インストラクターは、システムの堅牢性を示すために、トレーニングを受けていないものを含むさまざまな色のピンを斜めに使用してシステムをテストします。

  • 03:55:00 このセクションでは、インストラクターが顕微鏡を物体検出方法として使用しながら、最初のプロジェクトの結果を実演します。彼は、検出されたピンと、ピンの角度と位置を変更することによって、それらがどのように不良または良品に分類されるかを指摘します。彼は、画像のキャプチャとラベル付け、顕微鏡フォルダーの設定、モデルのトレーニングを含む最初のプロジェクトのプロセスを要約しています。次のプロジェクトでは、オブジェクトの方向を検出するための Web アプリの構築に焦点を当てています。これには、TensorFlow オブジェクト検出コースのコードを TensorFlow オブジェクト検出アプリの Github リポジトリと組み合わせることが含まれます。目的は、将来 Web サイトとして展開できる上下左右の動きを検出することです。

パート5

  • 04:00:00 ビデオのこのセクションでは、講師が Tensorflow オブジェクト検出のラベルを設定およびリセットする方法を説明します。サムズアップまたはサムダウン、欠陥のあるピンと欠陥のないピンなどのラベルを定義する代わりに、左、右、上、下などの方向の動きを定義する方法を示します。次に、さまざまな方向のフォルダーを作成し、トレーニングに使用する画像を収集する方法を示します。また、インストラクターは、LabelImg を使用して画像にラベルを付ける方法を説明し、画像のケースに注意を払い、結果が芳しくない場合にパフォーマンス チューニングを提案します。最後に、正しい方向の画像にラベルを付ける方法を示します。

  • 04:05:00 ビデオのこのセクションでは、インストラクターが物体検出モデルで使用する画像にラベルを付ける方法を実演します。オブジェクト/クラスごとに使用されるイメージは 5 つだけですが、ユーザーは必要に応じて数を調整できます。インストラクターは、これは反復的なプロセスであり、さまざまな数の画像を試しても問題ないとアドバイスしています。画像にラベルが付けられると、画像/クラスごとに 80/20 に分割されて、トレーニング フォルダーとテスト フォルダーに分類されます。フォルダーが設定されると、インストラクターはフォルダーの名前を変更し、「方向」と呼ばれる新しいファイル パスを作成します。最後に、インストラクターは、仮想環境が既にセットアップされており、追加の手順を実行する必要がないことに注意します。

  • 04:10:00 このセクションでは、ラベル マップが「左」、「右」、「上」、「下」の新しいラベルで更新され、それぞれに一意の識別子が割り当てられます。次に、注釈が実行されてラベル マップが更新され、必要なトレーニングとテストの tfrecord ファイルが生成されます。次に、トレーニング スクリプトを生成するコマンドを使用してモデルがトレーニングされ、損失が 0.299 と計算されます。リアルタイム検出の依存関係をインポートするためにチェックポイント 3 が復元され、最小スコアしきい値が 90 に設定されます。最後に、オブジェクト検出モデルのリアルタイム検出を生成するために Web カメラがアクティブ化されます。

  • 04:15:00 このセクションでは、インストラクターがモデルを評価し、パフォーマンスが良くない特定のクラスの画像を追加して精度を向上させる方法を示します。彼は指さしてこれを示します
    両手を使ってさまざまな方向に移動し、モデルがどのように機能するかを確認します。次に、グラフをフリーズしてエクスポートし、tensorflow.js に変換します。また、モデルを IBM Cloud Object Store にアップロードする方法と、github リポジトリーで利用可能な手順を順を追って説明する方法についても説明しています。その後、講師はリポジトリのクローンを作成し、新しいコマンド プロンプトを開き、適切なフォルダーに移動する方法を示します。

  • 04:20:00 ビデオのこのセクションでは、インストラクターが、画像認識に TensorFlow オブジェクト検出を使用するための開発環境を準備する方法を順を追って説明しています。講師はまず、必要なフォルダーに移動し、TensorFlow オブジェクト検出リポジトリのクローンを作成する方法を示します。次に、講師は Node.js とリポジトリの依存関係をインストールする方法を示します。最後に、インストラクターは、IBM Cloud で新しいクラウド オブジェクト ストレージ バケットを作成する方法と、それに名前を付ける方法を示します。このプロセスは、ビデオの後半のセクションで Web ベースのユーザー インターフェイスを使用するために必要です。

  • 04:25:00 このセクションでは、講師はチュートリアルのステップ 5 に進みます。これは、IBM Cloud Object Storage にバケットを作成し、model.json ファイルと .bin ファイルをそこにアップロードすることです。次に、パブリック アクセス ポリシーを有効にして、任意の場所からモデルにアクセスできるようにし、後でアプリで使用するために model.json ファイルへの URL を取得する方法を示します。次に、IBM Cloud Object Storage CLI のインストール後に CLI コマンドを実行して Cross-Origin Resource Sharing (CORS) を有効にするプロセスを順を追って説明します。

  • 04:30:00 このセクションのビデオでは、コマンド・ライン・インターフェースを介して IBM Cloud CLI と IBM Cloud Object Storage CLI をインストールし、クロスオリジン・リソース共有 (CORS) を有効にして、Web アプリが URL にアクセスできるようにする方法を示しています。どこかから。このコマンドは、IBM Cloud Storage Client もインストールし、構成ファイルを使用して構成します。このビデオでは、原因ポリシーをバケットのルート フォルダーに配置するコマンドにユーザーのバケットの名前を代入する方法を示します。最後に、このビデオでは、原因ポリシーがクラウド構成ファイル内に含まれており、複製されたリポジトリの一部であることを説明しています。つまり、ファイルを作成する必要はありません。
     
  • 04:35:00 このセクションでは、講師が TensorFlow.js Web アプリを実行するために必要なファイルを更新する方法を説明します。この手順には、Google Cloud Storage 資格情報の設定、app.js でのモデル URL の更新、utilities.js でのラベル マップの更新、npm start を使用したアプリの開始が含まれます。インストラクターは、アプリが機能しない場合にアプリをデバッグする方法についても説明します。これには、信頼度メトリックの変更や、検出結果配列内のオブジェクトの順序の確認が含まれます。全体として、これらの手順により、ユーザーは特定のユース ケースに基づいて Web アプリをカスタマイズし、適切に実行されていることを確認できます。

  • 04:40:00 このセクションのビデオでは、オブジェクトの場所を特定する方法と、結果の配列を操作する方法を示しています。ユーザーはコードを調べることで、結果の配列に 5 つの値が含まれていること、および各配列に特定のアプリで使用できるさまざまなクラスがあることを識別できます。このビデオでは、オブジェクト 3 などの各オブジェクト配列を正しく使用する方法についてユーザーをさらにガイドします。オブジェクト 3 は、非常に低い数値で表される非ポスト プロセス ボックス クラスです。ビデオでは、信頼度メトリックとスコア値を変更し、ボックス値を調整する方法を示します。これは、ユーザーがボックス配列の値を変更することで迅速に行うことができます。

  • 04:45:00 このセクションでは、ビデオは 2 番目のプロジェクトを終了し、Raspberry Pi でオブジェクト検出モデルを実行することを含む 3 番目のプロジェクトに進みます。講演者は、GPU がないため、Raspberry Pi でオブジェクト検出モデルを実行することは、前の 2 つのプロジェクトとは異なり、そのためモデルを特に Tensorflow lite 形式に変換すると述べています。幸せそうな顔と悲しい顔の画像を収集し、以前と同じプロセスを使用してモデルをトレーニングします。ただし、彼らはこのプロジェクトに Raspberry Pi を使用し、検出のためにリモート デスクトップを使用します。ビデオは、さまざまなデバイスで複数の異なるモデルを実行する可能性に言及して終了し、視聴者にこのトピックに関するアイデアを共有するよう促します.

  • 04:50:00 ビデオのこのセクションでは、インストラクターが、幸せそうな顔と悲しい顔を認識する感情検出器のために画像を収集してラベルを付ける方法を示します。このプロセスには、既存の画像の削除、新しい画像のパスの作成、各感情の 5 つの画像の収集、画像のラベル付け、および各オブジェクトの保存が含まれます。インストラクターは、ラベル付けでは大文字と小文字の区別が重要であり、この演習ではグリーン スクリーンは必要ないことを視聴者に伝えます。さらに、インストラクターは、ユーザーはいつでもイメージ ディレクトリに戻ってイメージ ラベルを更新できることに注意しています。

  • 04:55:00 このセクションでは、講師が収集した画像と注釈を整理してトレーニング フォルダーとテスト フォルダーに移動する方法を示します。新しいカスタム モデルを作成し、ラベル マップを更新することで、収集した画像に幸せと悲しみのラベルを付ける方法を示します。次に、tf レコードを作成し、事前トレーニング済みのモデル構成をカスタム モデル フォルダーにコピーします。構成を更新した後、仮想環境で実行される生成されたコマンドを使用してモデルをトレーニングし、プロセスが完了するのを待ちます。

パート6

  • 05:00:00 このセクションでは、インストラクターが、GPU マシンで作業しているときにセンチメント モデルのトレーニング実行中に発生する可能性がある一般的なエラーについて説明します。このエラー メッセージは、GPU が完全に消費され、システムに問題が発生していることを示しています。この問題を解決するには、GPU を使用する可能性のあるものをいつでも停止してから、トレーニングの実行を再開する必要があります。トレーニングが完了すると、ユーザーはオペレーティング システムとこれらのパスをインポートし、最新のチェックポイントも確認できます。また、インストラクターは、センチメント モデルの使用方法をリアルタイムで実演します。これは、システムがセットアップされると、迅速かつ簡単なプロセスです。

  • 05:05:00 このセクションでは、講師が TensorFlow オブジェクト検出を使用して Raspberry Pi 検出モデルを構築するために必要な手順を説明します。最初のステップは、TensorFlow オブジェクト検出コースを実行して TfLite ファイルを作成することです。次に、ユーザーは Raspberry Pi 検出リポジトリを複製するか、PC にダウンロードするか、Raspberry Pi から複製する必要があります。これが完了したら、ユーザーは必要な依存関係をインストールし、変換されたモデルをコピーして、既存の detect.tf lite モデルを使用して実行する必要があります。インストラクターは、xrdp を使用して Raspberry Pi にリモート デスクトップする方法も示し、プロセスを簡単にします。

  • 05:10:00 このセクションでは、講師が Raspberry Pi で TensorFlow の Object Detection API を操作するために必要なすべての依存関係をインストールするプロセスを順を追って説明します。インストラクターは、OpenCV Python をインストールする方法と、OpenCV が Raspberry Pi で動作するために必要な他のいくつかの依存関係を示します。その後、講師は TensorFlow Lite ランタイムをインストールします。これは、Raspberry Pi で TensorFlow Lite モデルを実行するために必要です。すべての依存関係がインストールされたら、サンプルのオブジェクト検出モデルを Raspberry Pi で実行して、その動作を示します。最後に、インストラクターはカスタム モデルとラベルをシステムに追加する方法を説明します。

  • 05:15:00 このセクションでは、インストラクターがカスタム オブジェクト検出と、より良い結果を得るために検出しきい値を調整する方法について説明します。カスタム オブジェクト検出には 2 つのラベルが含まれます。嬉しくて悲しい。インストラクターは、ラベルの順序を最初のオブジェクトとして幸せに、2 番目のオブジェクトとして悲しいように調整します。カスタム モデルを実行してもオブジェクトが検出されないため、インストラクターは検出しきい値を 20% に下げることにしました。コマンドを再実行すると、モデルはオブジェクトを検出します。 1つの大きな悲しいオブジェクトと幸せなオブジェクト。インストラクターは、より良いパフォーマンス結果を得るには、より多くの画像でモデルをトレーニングする必要があることを強調しています。インストラクターは、実行中のクラスの画像をさらに追加し、モデルをより長くトレーニングすることで、追加のパフォーマンス チューニングを実行します。
     
  • 05:20:00 このセクションでは、講演者が感情分析モデルのパフォーマンスをどのように改善したかを説明します。まず、彼はさまざまな角度から自分自身の画像を追加しました。これにより、モデルが適切に一般化される可能性が高くなります。次に、彼はさらに 5600 ステップのモデルをトレーニングし、より大きなインデックス チェックポイントを備えた新しいモデルを提供しました。次に、その新しいモデルを凍結された tf-lite グラフに変換し、それを Raspberry Pi に取り込みました。これを使用して、彼が幸せか悲しいかを検出しました。話者は、グリーン スクリーンが上下してもモデルのパフォーマンスに影響がなく、彼が幸せか悲しいかを正しく検出できたことを示しています。スピーカーは、パフォーマンス チューニングの威力と、それを使用してモデルの精度を向上させる方法を強調しています。

  • 05:25:00 この最後の抜粋は、Tensorflow Object Detection in 5 Hours with Python コースを締めくくるもので、インストラクターは視聴者に、さらに支援が必要な場合はコメントまたは Discord チャンネルを通じて連絡するように促しています。このコースは、コース自体に 3 つのプロジェクトが含まれているため、オブジェクト検出について学びたい視聴者や、Tensorflow の詳細な知識を必要としている視聴者にとって有益です。
GitHub - nicknochnack/TFODCourse
GitHub - nicknochnack/TFODCourse
  • nicknochnack
  • github.com
This set of Notebooks provides a complete set of code to be able to train and leverage your own custom object detection model using the Tensorflow Object Detection API. This accompanies the Tensorflow Object Detection course on my YouTube channel. Steps Step 1. Clone this repository: https://github.com/nicknochnack/TFODCourse Step 2. Create a...
 

Tensorflow と EasyOCR を使用した自動ナンバー プレート認識を 2 時間でフル コース |パイソン

最終ノート: https://github.com/nicknochnack/RealTimeAutomaticNumberPlateRecognition

ベースライン コード: https://github.com/nicknochnack/TFODCourse



Tensorflow と EasyOCR を使用した自動ナンバー プレート認識を 2 時間でフル コース |パイソン

「Tensorflow と EasyOCR を使用した自動ナンバー プレート認識 2 時間のフル コース | Python」というタイトルの YouTube ビデオは、Tensorflow と EasyOCR を使用して正確かつ効率的な自動ナンバー プレート認識 (ANPR) システムを構築するための包括的なガイドを提供します。 ANPR システムは、TensorFlow を使用してナンバー プレートの関心領域を検出し、EasyOCR は検出された領域からテキストを抽出する 2 部構成のシステムを利用します。このビデオでは、仮想環境のセットアップと必要な依存関係のインストールから、トレーニング用のデータの準備とトレーニング中に発生する可能性のあるエラーのトラブルシューティングまで、さまざまなトピックをカバーしています。全体として、視聴者は、リアルタイムまたは標準の画像検出機能を備えたプロダクション グレードの ANPR システムを構築する方法を詳細に理解できます。

TensorFlow と EasyOCR を使用した自動ナンバー プレート認識 (ANPR) に関する YouTube チュートリアルでは、オブジェクト検出を使用してナンバー プレートを正確に検出する方法と、OCR を使用してナンバー プレートを抽出する方法について説明しています。インストラクターは、サイズと座標に基づいてテキストをフィルタリングして、プレートから関連情報のみを抽出する方法について説明します。 GPU リソースを割り当てて TensorFlow のメモリ消費を制限し、検出しきい値を超える画像スコア、クラス、およびボックスを抽出し、EasyOCR を使用して OCR を適用する方法を示します。さらに、このビデオでは、リアルタイム結果と画像結果の両方について、出力結果を CSV ファイルとフォルダー パスに保存する方法について説明します。スピーカーは、視聴者がコードを利用できることを強調し、助けを求めてフィードバックを共有するよう奨励します。

  • 00:00:00 システムは OCR または光学式文字認識です。このステップでは、EasyOCR というライブラリを使用して、検出されたナンバー プレート フィードからテキストを抽出し、リアルタイムまたは標準画像でナンバー プレートからテキストを読み取って分析できるようにします。さらに、このコースでは、以前に検出されたプレートとその関心領域を保存してログに記録することにより、生産グレードの事前に構築された AMPR システムを模倣する、より高度なシステムの構築についても説明します。全体として、このコースは、Tensorflow と EasyOCR を使用して、正確で効率的な自動ナンバー プレート認識システムを構築するための包括的なガイドを提供します。

  • 00:05:00 このセクションでは、プレゼンターが自動ナンバー プレート認識に使用される 2 部構成のシステムについて説明します。最初の部分では、TensorFlow オブジェクト検出モデルを使用して、ナンバー プレートである関心領域を検出します。 2 番目の部分では、EasyOCR を使用して、検出された領域からテキストを抽出します。プレゼンターは、TensorFlow や EasyOCR などの必要なコンポーネントをインストールする方法を示し、必要なファイルを含む GitHub リポジトリへのリンクを提供します。発表者は、リポジトリのクローンを作成する方法を説明し、結果として作成されるフォルダーの内容を示します。このフォルダーには、ナンバー プレートのトレーニングと検出に使用されるノートブック ファイルが含まれています。

  • 00:10:00 ビデオのこのセクションでは、プレゼンターは仮想環境をセットアップし、TensorFlow と EasyOCR を使用して自動ナンバー プレート認識 (ANPR) を実行するために必要な依存関係をインストールする手順を実行します。プレゼンターは、最初に ANPR リポジトリのクローンを作成し、Python で仮想環境を作成します。次に、仮想環境をアクティブ化し、ipi カーネルやアップグレード pip などの重要な依存関係をインストールします。これらの手順を通じて、仮想環境を Jupyter ノートブックに関連付けて、ANPR の機能を最大限に活用する方法を示しています。

  • 00:15:00 このセクションでは、インストラクターが、例として「ampr sys」環境を使用して、仮想環境を Jupyter Notebook に関連付けるプロセスを視聴者に説明します。多くの場合、仮想環境で作業している人は自分の環境にすべてをインストールするため、インストラクターはこれが重要であると述べていますが、Jupyter Notebook 内に入ると、まだそこにないと言っています。仮想環境が Jupyter Notebook に関連付けられると、インストラクターは、TensorFlow オブジェクト検出 API をインストールし、TensorFlow を使用してオブジェクト検出を実行できるようにフォルダー構造を設定するプロセスを視聴者に案内します。

  • 00:20:00 このセクションでは、インストラクターが転移学習の概念を説明することから始めます。転移学習では、ナンバー プレートの検出など、特定のユース ケースに合わせて既存の最先端のモデルを微調整できます。次にインストラクターは、TensorFlow Model Zoo から事前トレーニング済みのモデルをダウンロードし、いくつかのコード セルを実行して TensorFlow Object Detection API をインストールします。オブジェクト検出フォルダなどの API とそのコンポーネントが TensorFlow モデル ガーデン リポジトリに複製され、TensorFlow オブジェクト検出モデルのインストールが開始されます。インストールには、いくつかの依存関係とプロトコル (プロトコル バッファー システム) が含まれ、完了するまでに時間がかかる場合があります。

  • 00:25:00 このセクションでは、講師が TensorFlow とその GPU バージョンのインストールについて説明します。 TensorFlow 2.4.1 と TensorFlow GPU 2.4.1 をインストールします。これは、Nvidia GPU とのみ互換性があります。最後に「OK」を出力する検証スクリプトを実行して、インストールが成功したことを検証する方法を示しています。インストラクターは、pip を使用して Matplotlib や Pillow ライブラリをインストールするなど、インストール プロセス中に発生する可能性のある「モジュールが見つかりません」というエラーを解決する方法も示します。検証スクリプトは、次のセクションに進む前に、必要なすべての依存関係がインストールされていることを確認します。

  • 00:30:00 ビデオのこのセクションでは、プレゼンターは、物体検出モデル、特にナンバー プレート認識の構築に必要なさまざまなモジュールのインストールについて説明します。インストール プロセス中にいくつかのエラーが発生しますが、それらを解決する方法を順を追って説明します。 TensorFlow Object Detection や EasyOCR などの必要なモジュールがすべてインストールされると、プレゼンターは次のステップに進み、データを操作して、車の画像とナンバー プレートの注釈を含む Kaggle データセットを紹介します。モデルで使用するデータセットをダウンロードして準備する方法を示します。

  • 00:35:00 このセクションでは、インストラクターが自動ナンバー プレート認識 (ANPR) に必要なデータをダウンロードし、それを物体検出用のトレーニング セットとテスト セットに編成する方法について説明します。注釈と対応する画像を含むデータは、Kaggle からダウンロードされ、ANPR フォルダーに解凍されます。 images フォルダー内にトレーニング用とテスト用の 2 つの新しいフォルダーが作成され、ダウンロードされたイメージが train フォルダーにコピーされます。アノテーションはトレーニング セットとテスト セットにも分割され、トレーニング アノテーションは対応する画像と一緒にトレーニング フォルダーに配置されます。これらの個別のセットの目的は、オブジェクト検出モデルを 1 つのデータ セットでトレーニングし、独立したセットでテストしてそのパフォーマンスを評価することです。

  • 00:40:00 このセクションのビデオでは、ナンバー プレート検出モデルをトレーニングするためのデータを準備するプロセスについて説明します。プレゼンターは、Kaggle からナンバー プレートの画像をダウンロードし、対応する注釈を TensorFlow ワークスペース内の「train」と「test」という 2 つの新しいフォルダーにコピーしたと説明しています。次のステップは、オブジェクト検出モデルをトレーニングすることです。これには、ラベルの更新、tf レコードの作成、構成の準備、最後にモデルのトレーニングが含まれます。プレゼンターは、「ラベル マップ」を使用して、使用する 1 つのラベル「ライセンス」を識別し、オブジェクト検出モデルで必要な形式である tf レコードを作成します。このプロセスは簡単であると説明されており、tf レコードを生成するスクリプトが提供されています。

  • 00:45:00 このセクションのビデオでは、TensorFlow と EasyOCR を使用してトレーニング用のデータを準備する方法について説明しています。ここで説明するスクリプトは、画像や注釈を含む生データを tf レコード形式に変換しますが、Kaggle データ セットの注釈の形式がわずかに異なるため、更新する必要があります。このビデオでは、不足しているモジュールのインストール、インデックスを変更して正しいバウンディング ボックス メトリックを取得する、事前トレーニング済みのモデル構成をトレーニング フォルダーにコピーするなど、この不一致が原因で発生するエラーを修正する方法を示します。

  • 00:50:00 このセクションでは、モデルをトレーニングする前に更新する必要がある構成のさまざまな行を含む事前トレーニング済みモデル パイプラインの詳細について説明します。スピーカーは、パラメータが更新され、トレーニング コマンドを実行してモデルをトレーニングすることを保証する、更新された構成ファイルをコピーする方法を示します。また、コマンドを外部で実行して進行状況を適切に確認することの重要性と、仮想環境をアクティブにしてコマンドを実行する方法についても言及しています。最後に、モデルのインストール中に発生する可能性がある標準エラーを解決する方法について説明します。

  • 00:55:00 コースのこのセクションでは、インストラクターがトレーニング中に発生する可能性のあるエラーをトラブルシューティングします。彼は、numpy ドット nd 配列サイズの変更に関連する値エラー、cv2 のモジュールが見つからないエラー、tensorflow アドオンのモジュールが見つからないエラー、gin のモジュールが見つからないエラーなど、特定の問題を解決する方法を示しています。インストラクターは、これらのエラーは珍しくなく、それらを解決するには必要なライブラリをインストールすることが不可欠であると説明しています。モデルがトレーニングされると、インストラクターは、損失メトリックを読み取る方法と、最新のトレーニング済みモデル チェックポイントを見つける方法を示します。

  • 01:00:00 Tensorflow と EasyOCR を使用した自動ナンバー プレート認識に関するビデオ チュートリアルのこのセクションでは、講師が画像から、または同じモデルを使用してリアルタイムでナンバー プレートを検出する方法について説明します。画像ファイル名を変更することで、モデルはさまざまな種類のプレートを正確に検出して分類できます。この方法は、プレートのフォーマットが異なる可能性があるため、従来のコンピューター ビジョン技術を活用するよりも、オブジェクト検出を介してはるかに優れたパフォーマンスを発揮することがわかっています。このモデルは、ライブ ビデオ ストリームから、または車のプレートの前に電話をかざすことによってプレートを検出することもできます。インストラクターは、この方法は効率的であり、ナンバー プレート検出器を構築するための良い出発点であることを強調しています。次のステップは、OCR コンポーネントを適用して画像から意味のあるデータを抽出することです。

  • 01:05:00 このセクションのビデオ チュートリアルでは、オープン ソース ライブラリ EasyOCR を使用して画像からテキストを検出および抽出し、ナンバー プレート番号を特定する方法について説明します。チュートリアルでは、より正確な OCR モデルが利用可能である一方で、PyTorch で実行される EasyOCR が使用され、GPU メモリをすべて消費することなく TensorFlow と一緒に実行できるように、GPU に少し余裕が必要であることに注意してください。このチュートリアルでは、EasyOCR をスムーズに実行できるようにするために、GPU リソースを割り当て、TensorFlow のメモリ消費を制限する方法を示します。

  • 01:10:00 このセクションでは、スピーカーは、TensorFlow と EasyOCR を使用して自動ナンバー プレート認識 (ANPR) に必要なファイル パスとラベルをロードする方法、および CUDA アクセラレーションを使用して EasyOCR と PyTorch をインストールする方法について説明します。サンプル画像を読み込んでANPRを実行した後、ナンバープレート番号と検出スコアが「検出」と呼ばれる変数に保存され、EasyOCRを使用してOCRを適用するために使用されることを示しています。検出しきい値は 0.7 に設定されており、スコアが 0.7 を超える検出のみがさらに処理されます。

  • 01:15:00 このセクションでは、講師が数行のコードを使用して、検出しきい値を超える画像スコア、クラス、およびボックスを抽出する方法を説明します。これらは、検出スコア配列の各値をループして、しきい値を超えるスコアのみを返す方法を示しています。また、ボックスとクラスにフィルターを適用して、それらが Web カメラの正しいサイズと形式であることを確認します。最後に、画像の幅と高さを取得してボックス座標を再計算し、画像にフィルタリングを適用して関心領域を決定します。

  • 01:20:00 このセクションでは、画像から関心領域を抽出し、光学式文字認識 (OCR) を適用してプレートの結果を抽出する方法をビデオで示します。まず、image.shape を使用して、イメージの幅と高さのパラメーターを取得します。 ROI を抽出するには、検出の座標を表すボックス変数の各ボックスをループし、関心領域を除外します。最後に、EasyOCR を使用して OCR が ROI に適用され、結果がコンソールに出力されます。このビデオでは、EasyOCR リーダーをセットアップし、言語パラメーターを通過させ、画像を解析してプレートの結果を抽出するプロセスを視聴者に説明します。

  • 01:25:00 このセクションでは、OCR (光学式文字認識) を使用して印刷されたプレートまたはプレートからテキストを効果的に抽出する方法についてプレゼンターが説明します。これらは、OCR リーダーを混乱させる可能性がある、プレート番号に加えて余分なテキストがある画像の例を示しています。この問題を解決するために、発表者はサイズと座標に基づいて結果をフィルタリングすることを提案しています。このフィルタリングを行う関数を作成し、それを画像に適用して適切なテキストを取得する方法を示しています。結果は、OCR リーダーがプレート番号を正確に抽出できることを示していますが、OCR モデルにはまだ改善の余地があります。

  • 01:30:00 このセクションでは、スピーカーは「フィルター テキスト」と呼ばれる新しい機能を紹介します。この関数は、領域、OCR 結果、および領域しきい値の 3 つの引数を取ります。領域は画像を表し、OCR 結果は EasyOCR から抽出されたテキストを表し、領域しきい値はナンバー プレート領域を検出するためのサイズしきい値です。この関数は、OCR の結果をループし、それぞれの長さと幅を抽出して乗算し、領域のしきい値と比較します。このフィルターを通過すると、テキストと見なされ、その領域が「プレート」という変数に格納されます。スピーカーは、領域のサイズを計算し、フィルターがどのように機能するかを示すコード部分についても説明します。

  • 01:35:00 このセクションでは、著者は OCR エンジンを使用して画像内のテキストを効果的に除外する方法を示します。 filterText アルゴリズムを使用すると、ユーザーは領域のしきい値を指定できます。これにより、このしきい値を満たすか超えるテキスト ブロックのみが除外されます。この機能を使用して、プレートからすべてを取得するのではなく、必要なコンポーネントを抽出します。彼らはまた、OCR フィルターと OCR コンポーネントを組み合わせた OCR_it 関数を作成しました。この関数は、対応するしきい値で画像と検出を渡すと、任意の画像に適用できます。

  • 01:40:00 このセクションでは、指定された検出と領域のしきい値を使用して「ocr_it」関数に画像を渡すことにより、インストラクターが光学式文字認識 (OCR) メソッドをテストします。この方法では、画像内のナンバー プレートとその領域を正確に抽出できます。次に、try-except ブロックと、有効な検出ごとに OCR 関数を呼び出す新しいコードを使用して、リアルタイムで OCR メソッドを適用してナンバー プレートを検出する方法を示します。インストラクターはスマートフォンでリアルタイム検出をテストし、ナンバー プレートのテキストを正確に検出して抽出することを示しましたが、結果は完全ではなく、微調整が必要になる可能性があります。

  • 01:45:00 動画のこのセクションでは、インストラクターが開発した OCR システムの出力結果を保存する方法を説明しています。テキスト、領域、ファイル名、およびフォルダを入力パラメータとして受け取る「save_results」という新しい関数を作成します。次に、uuid ライブラリを使用して一意のファイル名を生成し、csv ライブラリを使用して出力結果を csv ファイルに保存します。また、cv2 ライブラリを使用して、選択したフォルダーに画像を書き込みます。最後に、コードをまとめてテストします。

  • 01:50:00 ビデオのこのセクションでは、講師が CSV ファイルとフォルダー パスを設定して、すべての画像結果または領域を書き出す方法を示します。彼らは、すべての画像結果が書き込まれる、detection_images という名前の新しいフォルダーを作成します。講師は、CSV ファイル名とフォルダー パスを渡し、コードをテストして結果を保存する方法を示します。結果を保存するメソッドを設定して、作成したフォルダーに結果を書き出すようにしました。このフォルダーには、画像の名前とナンバー プレートが含まれています。次にインストラクターは、コードをリアルタイムで実行して、検出中に結果を保存する方法を実演します。最後に、コードをテストして、結果をリアルタイムで保存しながら画像を正確に出力します。

  • 01:55:00 このセクションでは、スピーカーは視聴者に、構築された OCR 機能とリアルタイムで適用されるフィルタリング アルゴリズムが利用可能であることを伝えます。彼は、視聴者が問題に直面した場合は助けを求めることを奨励し、コードは GitHub で利用できるようになると述べています。最後に、彼は視聴者にチャンネルを合わせてくれたことに感謝し、いいね、チャンネル登録、コメントを求めてサインオフします。
GitHub - nicknochnack/RealTimeAutomaticNumberPlateRecognition
  • nicknochnack
  • github.com
Contribute to nicknochnack/RealTimeAutomaticNumberPlateRecognition development by creating an account on GitHub.
 

3時間で強化学習 | Python を使用したフル コース

コード: https://github.com/nicknochnack/ReinforcementLearningCourse



3時間で強化学習 | Python を使用したフル コース

00:00:00 - 01:00:00 「3 時間で強化学習」ビデオ コースでは、実践的な実装や理論と実践のギャップの解消など、強化学習のさまざまなトピックを取り上げます。このコースでは、強化学習エージェントのトレーニングと、さまざまなアルゴリズムとアーキテクチャを使用したエージェントの評価に重点を置いて、RL 環境のセットアップからカスタム環境の構築まですべてをカバーしています。ロボット工学やゲームなどの一般的な RL アプリケーションについて説明するとともに、環境がマルコフであるという仮定や不安定なトレーニングの可能性などの RL の制限についても説明します。このコースでは、オープンソースの RL ライブラリである Stable Baselines と OpenAI Gym を使用して、シミュレートされた環境を構築します。インストラクターは、エージェントが環境で実行できるアクションと値を表すために使用されるさまざまなタイプのスペース、および A2C や PPO などのさまざまな RL アルゴリズムについて説明します。アルゴリズムを実装する前に環境を理解することの重要性が強調され、ユーザーは、強化学習用のコンピューティング プラットフォームのセットアップ、適切な RL アルゴリズムの選択、モデルのトレーニングとテストをガイドされます。

01:00:00
- 02:00:00 この YouTube ビデオでは、Python を使用した強化学習に関する 3 時間のコースを提供しています。インストラクターは、エージェント、環境、アクション、報酬など、強化学習のコア コンポーネントについて説明します。このセクションでは、環境を定義し、強化学習を使用してモデルをトレーニングし、TensorBoard を使用してトレーニング ログを表示してトレーニング プロセスを監視する方法について説明します。講師は、トレーニング済みモデルの保存と再読み込み、モデル パフォーマンスのテストと改善、ニューラル ネットワークでのカスタム アクターと値関数のネットワーク アーキテクチャの定義、強化学習を使用した Atari ゲーム ブレイクアウトのプレイなど、他のトピックについても説明します。さらに、このコースには、Atari でのブレイクアウト ゲーム、自動運転用のレーシング カーの構築、OpenAI ジム スペースを使用したカスタム環境の作成など、学習者が強化学習手法を使用して構築する 3 つのプロジェクトが含まれています。

02:00:00 - 03:00:00 「3 時間で強化学習 | Python を使用したフル コース」というタイトルのこの YouTube ビデオでは、強化学習に関連するさまざまなトピックが取り上げられています。インストラクターは、レーシングカー環境を使用して Atari ゲームと自動運転用の強化学習エージェントをトレーニングする方法を実演します。また、さまざまな OpenAI ジムの依存関係、ヘルパー、安定したベースライン、および強化学習用のさまざまなタイプのスペースも紹介します。さらに、このビデオでは、強化学習用のカスタム環境を作成する方法、環境の状態、その観察空間と行動空間を定義する方法、モデルのテストとトレーニング、学習後にトレーニング済みモデルを保存する方法についても説明します。インストラクターはまた、パフォーマンスを向上させるためにモデルを長期間トレーニングすることの重要性についても説明し、問題が発生した場合は視聴者に連絡するように勧めています.

  • 00:00:00 ビデオのこのセクションでは、プレゼンターが強化学習コースを紹介し、コース全体でカバーされるさまざまなトピックの概要を説明します。彼は、このコースは理論と実際の実装の間のギャップを埋めるように設計されており、RL 環境のセットアップからカスタム環境の構築まですべてをカバーしていると説明しています。プレゼンターは、強化学習、その応用、およびいくつかの制限の概要を説明します。このコースでは、強化学習エージェントをトレーニングし、さまざまなアルゴリズムとアーキテクチャを使用してそれらをテストおよび評価する実践的な経験を提供し、ブレイクアウト環境、自動運転環境、およびカスタム環境に焦点を当てた 3 つの異なるプロジェクトをカバーします。

  • 00:05:00 ビデオの「3 時間で強化学習」のこのセクションでは、インストラクターが強化学習の基本的な概念について説明します。強化学習エージェントは、さまざまなアクションを実行することで、環境から得られる報酬に基づいて学習します。エージェントは環境を観察して、特定の決定を行うことで、時間の経過とともに報酬を最大化します。インストラクターは、自動運転、証券取引、ニューラル ネットワーク アーキテクチャ検索など、強化学習の実用的なアプリケーションについても説明します。

  • 00:10:00 このセクションでは、シミュレーション環境を使用して特定のタスクを実行するようにロボットをトレーニングできるロボティクスなど、強化学習の一般的なアプリケーションのいくつかについて説明します。ビデオでは、報酬関数が毎回異なる別の人気のあるアプリケーションとしてゲームについても言及されており、強化学習に適した環境になっています。環境がマルコフ的であるという仮定や、トレーニングに時間がかかり、不安定になる可能性があるという事実など、強化学習の限界についても説明します。強化学習モデルのセットアップについて説明します。これには、OpenAI から安定したベースライン ライブラリをインストールし、その役立つガイドとドキュメントを利用することが含まれます。

  • 00:15:00 このセクションでは、インストラクターがコースを紹介し、カバーされる 10 の異なるステップの概要を説明します。最初のステップは、強化学習用のオープンソース ライブラリである安定したベースラインを含む、必要な依存関係をインポートして読み込むことです。インストラクターは、ライブラリ内で利用可能なさまざまなアルゴリズムと、PPO (Proximal Policy Optimization) を使用する利点について説明します。依存関係には、オペレーティング システム機能用の OS と、環境の構築と操作用の gym も含まれます。全体として、このプロセスは簡単で、数行のコードだけで安定したベースラインを使い始めることができます。

  • 00:20:00 このセクションでは、インストラクターが強化学習に必要な依存関係と環境について説明します。環境のベクトル化による機械学習の高速化を可能にする Stable Baselines と、Dummy Vec Env ラッパーが導入されています。また、OpenAI Gym を使用してシミュレートされた環境を構築する方法についても説明しています。これにより、コストを削減し、モデルの作成を高速化できます。これらは、ロボットなどの実際の環境の例と、多くのドキュメントとサポートがある OpenAI Gym のようなシミュレートされた環境の例を提供します。

  • 00:25:00 ビデオのこのセクションでは、強化学習環境を作成するための標準である OpenAI Gym についてインストラクターが説明します。彼は、OpenAI Gym は、Fetch Robot や Shadow Hand Robot などの実際のロボットに基づくものを含む、事前に構築された環境を提供すると説明しています。彼はさらに、ボックス、離散、タプル、dict、マルチバイナリ、マルチ離散など、OpenAI Gym がサポートするさまざまなタイプの空間について説明しています。これらのスペースは、エージェントが環境内で実行できるさまざまなタイプの値またはアクションを表すために使用されることに注意してください。次に、インストラクターは、強化学習エージェントのトレーニングに使用する例として、Classic Control 環境、特に CartPole 問題を紹介します。目標は、2 つのアクションを使用してビームを左右に動かし、ビームのバランスを取ることです。

  • 00:30:00 このセクションでは、インストラクターが OpenAI Gym を使用して環境をロードしてテストする方法を説明します。まず、2 行のコードを使用して CartPole-v0 環境をインスタンス化します。次に、複数のエピソードをループし、env.reset() を使用して観測の初期セットを取得することにより、環境をテストする方法を示します。これらの観察結果は後で強化学習エージェントに渡され、報酬を最大化するための最適なアクションが決定されます。インストラクターは、アルゴリズムを実装する前に環境を理解することの重要性を指摘しています。

  • 00:35:00 このセクションでは、インストラクターが強化学習で環境をサンプリングするために使用されるコードについて説明します。このコードは、環境の最大ステップ数を設定し、スコア カウンターを設定し、環境によって定義されたアクション スペースに基づいてランダム アクションを生成します。各アクションの後に環境によって返される観察には、エピソードが完了したかどうかを示す報酬と値が伴います。結果が印刷され、テスト後に環境が閉じられます。インストラクターはまた、観察空間の概念を説明し、それをどのようにサンプリングできるかを実演します。

  • 00:40:00 このセクションでは、インストラクターが環境の 2 つの部分、アクション スペースと観察スペース、およびそれらが OpenAI ジムのドキュメントでどのように表現されているかについて説明します。観測空間は、カートの位置、速度、極角度、および極角速度を表す 4 つの値で構成されます。一方、アクション スペースには 0 または 1 の 2 つのアクションがあり、0 はカートを左に押し、1 はカートを右に押します。このセクションでは、モデルベースとモデルフリーの強化学習におけるさまざまなタイプのアルゴリズムと、それらの違いについても説明します。インストラクターは、モデルフリーの強化学習に焦点を当て、トレーニング段階で使用される A2C および PPO アルゴリズムを掘り下げます。

  • 00:45:00 ビデオのこのセクションでは、インストラクターが、使用されている環境のアクション スペースに基づいて適切な強化学習アルゴリズムを選択する方法を説明します。彼は、A2C、DDPG、DQN、HER、PPO、SAC、および TD3 など、Stable Baselines で利用可能なさまざまな種類のアルゴリズムと、それらが最適に機能するアクション スペースについて説明します。インストラクターは、評価指標、時間指標、損失指標、その他の指標など、トレーニング中に考慮する必要があるトレーニング指標についても説明します。彼は、Stable Baselines は GPU アクセラレーションの有無にかかわらずインストールできることをユーザーに思い出させ、GPU アクセラレーションが必要な場合に PyTorch をインストールする手順を提供します。

  • 00:50:00 このセクションでは、インストラクターが強化学習用のコンピューティング プラットフォームをセットアップする方法について説明します。これは、GPU アクセラレーションを利用したい人にとって重要です。 CUDA と cuDNN は NVIDIA GPU でのみサポートされているため、CUDA を使用して GPU アクセラレーションを利用するには、NVIDIA GPU が搭載されていることを確認する必要があります。一方、AMD GPU は、Linux でのみ利用可能なベータ パッケージである RockM でサポートされています。講師はまた、強化学習よりも GPU を使用することで、従来の深層学習のパフォーマンスが向上する可能性があることを強調しています。最後に、講師はログ パスを定義し、アルゴリズムとエージェントをインスタンス化します。

  • 00:55:00 このセクションでは、ラムダ関数を使用してダミーのベクトル化された環境内にベクトル化されていない環境をラップする方法を講師が実演します。次に、トレーニングされるエージェントであるモデルを PPO として定義し、ポリシー、環境、詳細、およびテンソルボードのログ パスを引数として渡します。インストラクターは、PPO アルゴリズムに渡すことができるさまざまなハイパーパラメーターについて説明します。最後に、model.learn 関数を使用してモデルをトレーニングする方法を示し、この例では 20,000 に設定されている時間ステップ数を通過してトレーニングします。モデルがトレーニングされた後、インストラクターはそれをテストし、トレーニング メトリックをチェックします。


パート2

  • 01:00:00 ビデオのこのセクションでは、インストラクターがトレーニング済みモデルを保存してリロードする方法を示します。モデルは `model.save()` 関数を使用して保存され、保存されたモデルを見つけるためのパスが定義されます。次にインストラクターは、保存されたモデルを削除し、`ppo.load()` 関数を使用して再ロードする方法を示します。次のステップは、トレーニング済みモデルをテストして、そのパフォーマンスを確認することです。インストラクターは、ロールアウト メトリックはトレーニングに使用されるアルゴリズムに依存することを説明し、「A2C」アルゴリズムがトレーニング中にこれらのメトリックを提供するのに対し、「PPO」アルゴリズムはこれらのメトリックを生成するために明示的なコマンドを必要とすることを示します。

  • 01:05:00 このセクションのビデオでは、evaluate_policy メソッドを使用してモデルのパフォーマンスをテストし、この特定のケースで PPO モデルが「解決済み」と見なされるかどうかを判断する方法について説明します。 evaluate_policy メソッドは、モデルのパフォーマンスをテストする方法であり、平均スコアが 200 以上の場合、モデルは解決済みと見なされます。メソッドは、モデル、環境、テストするエピソードの数、およびレンダリングが必要かどうかを介して渡されます。平均報酬とその報酬の標準偏差は、evaluate_policy から得られる値であり、環境の終了は emv.close を使用して行われます。最後に、このビデオでは、カプセル化された関数にモデルをデプロイする方法が強調されています。

  • 01:10:00 このセクションでは、報酬を最大化するために、環境からの観察を使用して、エージェントを使用して最適なアクションを予測する方法をインストラクターが示します。このコード ブロックは、モデルを使用してアクションを実行するために、env.actionspace.sample の代わりに model.predict を使用するように重要な変更を行う方法を示しています。インストラクターは、エージェントがランダムなステップよりも優れたパフォーマンスを発揮し、ポールのバランスをとっていることを示しています。このコードは、model.predict 関数に渡された観測値も示しており、モデル アクションと次の状態の 2 つの値が返されます。最初の値は、エージェントの最適なアクションを決定するためにここで使用されます。

  • 01:15:00 このセクションでは、インストラクターが強化学習のコア コンポーネントであるエージェント、環境、アクション、および報酬について説明します。彼は、環境を定義し、強化学習を使用してモデルをトレーニングし、ポールを直立位置に保ち、倒れないようにすることで、毎回 1 の値を蓄積する方法を示しています。インストラクターは、TensorBoard を使用してトレーニング ログを表示し、トレーニング プロセスを監視する方法も示します。

  • 01:20:00 ビデオのこのセクションでは、講師が Jupiter ノートブックで TensorBoard を使用して強化学習モデルのトレーニング メトリクスを表示する方法を説明します。彼は、マジック コマンドを使用して TensorBoard コマンドを実行する方法を示し、トレーニング ログ パスを指定する方法を示します。インストラクターは、TensorBoard で 1 秒あたりのフレーム数、エントロピー損失、学習率、ポリシー勾配損失などのトレーニング メトリックを表示する方法も示します。彼は、平均報酬がモデルのパフォーマンスを調整するときに監視する最も重要な指標であることを強調しています。最後に、視聴者からのフィードバックとコメントを募集します。

  • 01:25:00 このセクションの動画では、強化学習モデルのパフォーマンスを判断するための 2 つの重要な指標、つまり報酬指標と平均エピソード長について説明します。このビデオでは、パフォーマンスが良くない場合にモデルのパフォーマンスを改善するための 3 つの戦略も提供しています。これには、長期間のトレーニング、ハイパーパラメーターの調整、さまざまなアルゴリズムの探索が含まれます。次に、コールバック、代替アルゴリズム、およびアーキテクチャについて詳しく説明します。具体的には、報酬のしきい値に達したらトレーニングを停止するようにコールバックを設定する方法について説明し、さまざまなニューラル ネットワーク アーキテクチャとアルゴリズムを調べます。このビデオでは、より長いトレーニング時間を必要とする大規模なモデルにコールバックを使用することの重要性も強調しています。

  • 01:30:00 このセクションでは、講師が強化学習でコールバックを使用して、より柔軟で効率的なトレーニングを行う方法について説明します。この例では、stop コールバックと eval コールバックの 2 つのコールバックが使用されています。停止コールバックは、トレーニングが停止するまでの平均報酬を指定します。一方、eval コールバックは、最適な新しいモデルを評価し、報酬のしきい値を超えたかどうかを確認します。インストラクターは、新しいニューラル ネットワーク アーキテクチャを指定してポリシーを変更する方法も示します。全体として、コールバックは強化学習モデルをより細かく制御し、よりカスタマイズされた効果的なトレーニングを可能にします。

  • 01:35:00 このセクションでは、スピーカーはニューラル ネットワークでカスタム アクターと値関数のネットワーク アーキテクチャを指定するプロセスについて説明します。これは、ユニットとレイヤーの数を変更してモデルに渡すだけで実行できます。講演者はまた、カスタム特徴抽出器を定義できることを強調し、PPO の代わりに DQN などの代替アルゴリズムを使用する方法を示し、安定したベースラインで利用可能な他のアルゴリズムを強調します。最後に、トレーニング済みの DQN モデルを紹介します。

  • 01:40:00 このセクションでは、インストラクターが学習者が強化学習手法を使用して構築するプロジェクトについて説明します。彼らは、Atari のブレイクアウト ゲームである Project One から始めます。次に、強化学習を使用して自動運転をシミュレートするレーシングカーを構築するプロジェクト 2 にも取り組みます。最後に、OpenAI ジム スペースを使用してカスタム環境を作成するプロジェクト 3 に取り組みます。また、インストラクターは、プロジェクトに必要なライブラリと依存関係をインポートする方法がメイン コースのものと似ていることを説明し、プロジェクトに応じて異なるアルゴリズムを使用するだけで済みます。

  • 01:45:00 このセクションでは、ビデオ インストラクターが、Python での強化学習用に Atari 環境をセットアップする方法を説明します。最近の変更により、環境を使用するには、ユーザーは atarimania.com から raw ファイルをダウンロードし、それらをフォルダーに抽出する必要があります。必要なパッケージと依存関係をインストールした後、ユーザーは「emv.reset」および「emv.action_space」関数を使用して環境をテストできます。観測空間は、寸法が 210x160x3 の画像を表すボックスです。インストラクターは、環境内でモデルをテストする方法も示します。

  • 01:50:00 このセクションでは、インストラクターがランダム アクションを使用してブレイクアウトをプレイするためのコードを示し、モデルのトレーニングに時間がかかる可能性があることを指摘します。トレーニングを高速化するために、インストラクターは環境をベクトル化し、同時に 4 つの異なる環境をトレーニングします。 CNN ポリシーが使用されるため、Breakout の RAM バージョンとは対照的に、使用される環境はイメージ ベースの環境です。モデルを設定するためのコードが表示されます。これには、ログ パスと CNN ポリシーを使用した A2C アルゴリズムの指定が含まれます。

  • 01:55:00 このセクションでは、ビデオ インストラクターが強化学習を使用してモデルをトレーニングし、Atari ゲーム「Breakout」をプレイします。このモデルは、多層パーセプトロン ポリシーよりも高速にトレーニングできる畳み込みニューラル ネットワーク (CNN) ポリシーを使用します。環境は OpenAI Gym の make_atari 関数を使用して定義され、トレーニング プロセスを高速化するためにベクトル化が使用されます。モデルは 100,000 ステップでトレーニングされ、モデルを保存してリロードした後、評価ポリシー メソッドを使用して評価されます。最終的なモデルは、標準偏差 1.9 で 6.1 の平均エピソード報酬を達成し、ランダム エージェントよりも大幅に改善されています。インストラクターは、300,000 ステップでトレーニングされた事前トレーニング済みモデルに関する情報と、それをロードしてテストする方法についても説明します。


パート3

  • 02:00:00 このセクションでは、講師が環境、特に Atari を操作する際のフリーズの問題を処理する方法について説明します。環境がフリーズした場合は、ノートブックを再起動し、モデルを保存した後にカーネルを再起動する必要があります。次に、インストラクターは、依存関係をインポートし、Atari ROM をインストールし、環境をベクトル化して 4 つの Atari 環境で同時にトレーニングし、エージェントをトレーニングし、最後にモデルを評価して保存するプロセスを順を追って、ブレークアウトのために強化学習エージェントをトレーニングする方法を示します。インストラクターは、モデルをより長くトレーニングすることの影響も示し、トレーニング済みのモデルを Github リポジトリで利用できるようにして、学習者が自分で試すことができるようにします。

  • 02:05:00  3 時間の強化学習に関するビデオのこのセクションでは、インストラクターは、強化学習を使用してゲームをプレイするようにモデルをトレーニングするプロジェクト 1 の結果を示すことから始めます。このモデルは以前のモデルよりも大幅に優れたパフォーマンスを示し、50 エピソードを超える平均報酬は 22.22、標準偏差は 9.1 でした。次にインストラクターは、レーシングカー環境を利用した自動運転に強化学習を使用するプロジェクト 2 を紹介します。環境をセットアップするには、インストラクターは、swig をインストールする必要があり、2 つの新しい依存関係 (box 2d と piglet) をインストールする必要があることを説明します。次に、インストラクターは、環境をテストし、必要な依存関係をインポートするプロセスを実行します。

  • 02:10:00 このセクションでは、強化学習のためのカーレース環境の観察と行動空間についてビデオで説明します。観察空間は 96 x 96 x 3 の画像で、値は 0 ~ 255 です。アクション空間は、3 つの異なる値に対してマイナス 1 ~ 1 です。報酬関数は、フレームごとにマイナス 0.1 であり、アクセスしたトラック タイルごとにプラス 1000 を n で割ったものです。エージェントが一貫して 900 ポイント以上を獲得できる場合、ゲームは解決したと見なされます。これは、トレーニングによって達成するのに時間がかかる場合があります。その後、ビデオは PPO アルゴリズムを使用してモデルをトレーニングし、トレーニング済みのモデルを使用してレーシング環境をテストする方法を示します。

  • 02:15:00 このセクションでは、インストラクターが OpenAI Gym を使用して自動運転車の環境をセットアップし、それをダミーの Vectorize Environment Wrapper 内にラップします。次に、エージェントとモデルが PPO アルゴリズムを使用して指定され、モデルが 100,000 ステップのトレーニングを受けます。保存されたモデルは環境で読み込まれ、評価されます。ハイパワーの車はトラクションが不足しているにもかかわらず、前進せずにスピンしてドーナツ状に走ります。最後に、環境が閉じられ、インストラクターはテストのために 438,000 ステップでトレーニングされたモデルを読み込みます。

  • 02:20:00 このセクションでは、インストラクターが 438,000 歩のトレーニングを受けた自動運転車モデルをロードし、トラックでテストします。速度は遅くなりますが、トラックをたどり、100,000 歩でトレーニングされた以前のモデルよりもはるかに高いスコアを取得します。インストラクターは、強化学習エージェントを長期間トレーニングすると、より優れたモデルを生成できると説明しています。理想的には、このモデルを最適に実行するには、100 万から 200 万ステップでトレーニングする必要があります。彼は、メイン チュートリアルのコード スニペットを使用してモデルをテストする方法を示しています。これは、画像のみでトレーニングした場合でも、モデルがトラックを正常にナビゲートできることを示しています。最終的に、インストラクターはこのモデルに 200 万ステップを追加してトレーニングし、パフォーマンスを改善して約 700 の報酬見積もりに達しました。

  • 02:25:00 このセクションでは、インストラクターはモデルを読み込んで実行します。このモデルは、コーナーでスピンアウトすることがありますが、以前にトレーニングしたモデルよりもパフォーマンスが大幅に向上しています。彼は、モデルの評価スコアが 800 ポイントに達し、以前のモデルから大幅に改善されたことを示しています。彼は、このモデルがより長い期間トレーニングされ、標準偏差が高かったことに注目しています。次に、インストラクターは最後のプロジェクトを紹介します。これには、カスタム環境での強化学習に安定したベースラインを使用することが含まれます。彼は必要な依存関係をインポートし、問題が発生した場合は視聴者に連絡するように勧めています。

  • 02:30:00 ビデオのこのセクションでは、インストラクターは、強化学習コースで使用されるさまざまなジムの依存関係または OpenAI ジムの依存関係、ヘルパー、および安定したベースラインについて説明します。それらは、標準のインポートである gym 、env からの gym 環境クラス、および離散、ボックス、辞書、タプル、マルチバイナリ、マルチ離散などのさまざまなタイプのスペースをインポートします。インストラクターは、これらの各スペースの使用方法と、さまざまな目的での使用方法を説明します。インストラクターは、numpy、random、os などのインポートされたさまざまなヘルパーと、ppo、common.vec_env、dummy_vec_nv、および evaluate_policy 関数を含む安定したベースラインも調べます。

  • 02:35:00 ビデオのこのセクションでは、プレゼンターが強化学習のために OpenAI Gym で利用できるさまざまなタイプのスペースについて説明します。これらのスペースには、discrete、box、tuple、dict、multi-binary、および multi-discrete が含まれます。プレゼンターは、これらの各スペースの例と説明を提供します。ビデオでは、シャワーの温度を調整するようにエージェントをトレーニングするためのシミュレートされた環境の構築について説明しています。最終的な目標は、37 度から 39 度の間の温度を達成することですが、エージェントはこれをアプリオリに知ることはなく、試行錯誤を通じて学習する必要があります。

  • 02:40:00 このセクションでは、インストラクターが 4 つの主要な機能を実装してシャワー環境用のシェルを構築します。これらの関数は、init、step、render、および reset です。 init 関数は、アクション空間、観測空間、および初期状態を定義することによって、環境を初期化します。ステップ関数はアクションを実行し、それを環境に適用します。 render 関数は環境を表示します。リセット関数は、環境を初期状態にリセットします。また、講師は環境のエピソードの長さを 60 秒に設定します。

  • 02:45:00 このセクションでは、インストラクターがシャワー環境のステップ関数を定義します。これには 6 つのコード ブロックが含まれます。最初のブロックは、状態に対するアクションの影響を適用します。3 つの可能なアクションとして、0、1、および 2 があります。 0 は温度を 1 度下げ、1 は温度を同じままにし、2 は温度を 1 度上げます。 2 番目のブロックは、シャワー時間を 1 秒短縮します。 3 番目のブロックは報酬を定義します。気温が 37 ~ 39 度の場合は 1、その範囲外の場合は -1 です。 4 番目のブロックは、シャワーが完了したかどうかを確認し、シャワー時間がゼロ以下の場合は完了を true に設定します。 5 番目のブロックは空白の情報ディクショナリを作成し、最後のブロックは状態、報酬、シャワーが終了したかどうか、およびディクショナリを返します。リセット機能は、初期温度をデフォルト値にリセットし、シャワー時間を 60 秒にリセットします。

  • 02:50:00 このセクションでは、講師が Python を使用して強化学習用のカスタム環境を作成する方法を説明します。彼は、環境とその観察および行動空間の状態を定義する方法を示しています。インストラクターは、定義された環境を使用してモデルをテストおよびトレーニングする方法と、学習後にトレーニング済みモデルを保存する方法も示します。彼は、ゲーム環境は単純な環境に比べてトレーニングに時間がかかると述べており、プロジェクトの計画やクライアントへの取り組みにおいて、このことを念頭に置いておくことを推奨しています。

  • 02:55:00 このセクションでは、インストラクターがトレーニング済みモデルをテストして保存する方法を示します。 「ポリシーの評価」メソッドを使用してモデルのパフォーマンスをテストし、「model.save」メソッドを使用してモデルを保存します。さらに、安定したベースラインを使用した環境のセットアップから、PPO、A2C、DQN などのさまざまなアルゴリズムを使用したモデルのトレーニングまで、さまざまなトピックをカバーするコースの簡単な要約を提供します。また、カスタム環境の作成や、Breakout をプレイするためのモデルのトレーニングやトラックでの車のレースなどのプロジェクトの構築についても話し合います。

  • 03:00:00 このセクションでは、インストラクターは、David Silva の Reinforcement Learning コース、Richard Sutton と Andrew Bartos による Reinforcement Learning: An Introduction と呼ばれる書籍、ハイパーパラメータ調整の探索、カスタム環境の構築など、さらなる学習のための追加リソースを推奨しています。 、ラズベリーパイを使用して実際の環境に実装する前に、カートポールロボットを構築してシミュレートされた環境でトレーニングするなど、エンドツーエンドのソリューションを実装します。インストラクターは、視聴者からのフィードバックや質問を奨励し、視聴してくれたことに感謝します。
GitHub - nicknochnack/ReinforcementLearningCourse
GitHub - nicknochnack/ReinforcementLearningCourse
  • nicknochnack
  • github.com
Contribute to nicknochnack/ReinforcementLearningCourse development by creating an account on GitHub.
 

Python での ACTION RECOGNITION を使用した手話検出 | LSTM 深層学習モデル

コード: https://github.com/nicknochnack/ActionDetectionforSignLanguage



Python での ACTION RECOGNITION を使用した手話検出 | LSTM 深層学習モデル

「Python で ACTION RECOGNITION を使用した手話検出 | LSTM 深層学習モデル」というタイトルのこの YouTube ビデオでは、プレゼンターは、アクション検出と主要モデルを使用してリアルタイムの手話検出フローを構築する方法を説明しています。プレゼンターは、OpenCV と MediaPipe Holistic を使用して、手、顔、体からキー ポイントを抽出し、TensorFlow と Keras を使用して、一連のフレームで示されるアクションを予測する LSTM モデルを構築します。プレゼンターは、Web カメラにアクセスしてキー ポイントを抽出するプロセスを実行し、Web カメラにアクセスするためのループを設定し、Web カメラから最後にキャプチャされたフレームにランドマークを適用することで、手話の検出を容易にします。また、欠落しているキー ポイントを処理するようにコードを変更し、姿勢モデルと顔ランドマーク検出にエラー処理を追加する方法も示します。最後に、Pythonによる行動認識を用いた手話検出のキーポイント抽出機能について発表者が解説します。

このビデオでは、Python で動作認識を使用して手話検出モデルを作成する方法について詳しく説明しています。データを収集するために、プレゼンターはアクションとシーケンスごとにフォルダーを作成し、MediaPipe ループを変更して、各アクションのビデオごとに 30 個のキー ポイント値を収集します。データは、LSTM 深層学習モデルのラベルと特徴を作成することによって前処理され、モデルは TensorFlow と Keras を使用してトレーニングされます。トレーニング済みモデルは、マルチラベル混同行列と精度スコア関数を使用して評価されます。最後に、検出用の新しい変数を作成し、フレームを連結し、予測ロジックを適用することにより、リアルタイム検出が確立されます。しきい値変数は、特定の信頼度メトリックを超える結果をレンダリングするために実装されています。

ビデオ チュートリアルでは、行動認識を使用した手話検出に Python と LSTM 深層学習モデルを使用する方法を紹介しています。講演者は予測ロジックを順を追って説明し、コードを説明して理解しやすくしました。また、append メソッドを使用してコードを調整し、検出しきい値を上げ、確率の視覚化を追加して検出を視覚的に説得力のあるものにする方法も視聴者に示しました。スピーカーは、結果がしきい値を超えているかどうかを確認する方法、確率を操作する方法、および追加のアクションまたは視覚化を追加してプロジェクトを拡張および変更する方法についても説明しました。最後に、スピーカーは、モデルの追加ロジックを提示しました。これにより、誤検出が最小限に抑えられ、モデルの精度が向上し、ビデオとチャンネルをサポートするよう招待されました。

  • 00:00:00 ビデオのこのセクションでは、アクション検出と主要モデルを使用してリアルタイムの手話検出フローを作成するという目標について、作成者が説明しています。 MediaPipe Holistic を使用して、手、顔、体からキー ポイントを抽出し、TensorFlow と Keras を使用して、一連のフレームで示されるアクションを予測する LSTM モデルを構築します。このプロセスには、キー ポイントに関するデータの収集、ニューラル ネットワークのトレーニング、精度の評価、OpenCV と Web カメラを使用したリアルタイムでのモデルのテストが含まれます。作成者は、このプロセスを達成するための 11 のステップを概説し、依存関係をインストールしてインポートすることから始めます。

  • 00:05:00 このセクションでは、OpenCV、MediaPipe、scikit-learn、NumPy、Matplotlib、TensorFlow など、プロジェクトで使用されるさまざまな依存関係についてプレゼンターが説明します。これらの依存関係をインポートした後、プレゼンターは、OpenCV と MediaPipe Holistic を使用して、ウェブカメラにアクセスし、重要なポイントを抽出するプロセスを実行します。次に、プレゼンターはループを設定して Web カメラにアクセスし、複数のフレームを画面にレンダリングして、プロジェクトのリアルタイム テストを可能にします。このループは、フレームの抽出時やプロジェクトのテスト時など、プロジェクト全体で複数回使用されます。プロジェクトで使用されるすべてのコードは、最終的なトレーニング済みの重みを含め、Github で利用できるようになります。

  • 00:10:00 ビデオのこのセクションでは、プレゼンターが OpenCV を使用してウェブカメラにアクセスし、すべてのフレームのループを開始する方法を説明します。プレゼンターは、「ビデオ キャプチャ」機能を使用して Web カメラからフィードを読み取り、読み取り、表示、およびキー入力がループから抜け出すのを待機するループを開始します。プレゼンターは、ループを正常に中断する方法と、Web カメラが表示されない場合のデバイス番号の問題のトラブルシューティング方法についても説明します。最後に、プレゼンターは MediaPipe Holistic と MediaPipe Drawing Utilities を紹介します。これは、ポーズ検出のためにホリスティック モデルをダウンロードして活用し、画像にポーズ ランドマークを描画するために使用される 2 つの Python モジュールです。

  • 00:15:00 トランスクリプトのこのセクションでは、話者は手話の検出を容易にする機能を設定しています。この関数は、画像とメディア パイプの全体的なモデルを取り込み、BGR から RGB への色変換、検出、画像を BGR に戻すなどの一連の手順を実行してから、画像と結果をループに返します。レンダリング。これらの手順は対称的に実行され、検出前にイメージが書き込み不可に設定され、検出後に書き込み可能に戻されます。スピーカーは、画像の色を変換するために使用される cvtColor 関数についても説明し、ループ内でメディア パイプ検出関数を呼び出す方法を示します。

  • 00:20:00 このセクションでは、プレゼンターが「with ステートメント」を使用して MediaPipe モデルにアクセスする方法を説明し、初期信頼度と追跡信頼度を設定します。また、さまざまなタイプのランドマークにアクセスして視覚化する方法も示します。顔、左手と右手、および姿勢のランドマークです。次にプレゼンターは、MediaPipe Holistic を使用してランドマークを検出し、結果をフレームに表示する方法を示します。最後に、関数を記述してランドマークを画面にレンダリングする方法を示します。

  • 00:25:00 このセクションでは、YouTuber が「draw_landmarks」と呼ばれる新しい関数を設定します。この関数は、プロジェクトで使用されるメディア パイプ モデルによって検出されたさまざまなランドマークを視覚化できるように、ランドマーク データを画像にレンダリングします。この関数は、メディア パイプによって提供される「mp.drawing」ヘルパー関数を使用してランドマークを描画し、入力として画像とランドマーク データも必要とします。この関数では、接続マップと書式設定オプションを指定することもできます。次に YouTuber は、matplotlib の「plot.imshow」関数を使用して、ウェブカメラから最後にキャプチャされたフレームを表示する方法を示します。

  • 00:30:00 このセクションでは、話者は画像の色を修正し、ランドマークを「ランドマークの描画」関数に渡すことで画像に適用します。メディア パイプ検出モデルの結果は、最後のフレームおよびループの実行結果としてアクセスされます。 「mp_drawing.draw_landmarks」メソッドは現在のフレームに適用され、すべての手、ポーズ、顔の接続をレンダリングします。次に、スピーカーは「ランドマークの描画」機能をリアルタイム ループに適用し、レンダリングの前に、「ランドマーク描画仕様」と「接続描画仕様」を使用して書式設定を適用し、点と接続をそれぞれ描画します。最後に、スピーカーは、必要に応じて「ランドマークの描画」機能をカスタマイズするために、「スタイル ランドマークの描画」と呼ばれる新しい機能を作成します。

  • 00:35:00 このセクションでは、スピーカーは、ランドマーク描画関数の書式設定を更新し、mp_drawing.drawing_spec 関数に 2 つのパラメーター (色と円の半径) を追加します。顔ランドマークの変更を示し、最初のパラメーターがランドマークを色付けし、2 番目のパラメーターが接続を色付けすることを説明します。次に、スピーカーはポーズと手のモデルごとに変更を関数にコピーし、各モデルに固有の色を付けます。変更は純粋に表面的なものであり、パフォーマンスには影響しませんが、さまざまなモデルの動作を示しています。

  • 00:40:00 このセクションのビデオ チュートリアルでは、MediaPipe ホリスティック モデルの結果変数からキー ポイント値を復元力のある方法で抽出する方法を説明しています。このチュートリアルでは、ループとリスト内包表記を使用して、1 つのランドマークの値を抽出し、すべてのランドマークの値を更新する方法について説明します。次に、すべてのランドマークを含む最終的な配列がフラット化され、ランドマークの複数のセットではなく、1 つの配列にすべての値が含まれるようになります。

  • 00:45:00 このセクションでは、プレゼンターは、手がフレームから外れているためにキー ポイントがない場合に処理するコードを変更する方法を説明します。まず、左側のランドマークにはそれぞれ 3 つの値があり、21 のランドマークがあり、合計で 63 の値が必要であることを示しています。次に、欠損値を空白の numpy 配列に置き換える if ステートメントを適用します。この同じ変更が右側のランドマークに適用されます。これも 63 個の値があります。このコードは、x、y、z の値を 1 つの大きな配列に連結し、LSTM モデルで使用できる適切な形式にフラット化することで、さまざまなキー ポイントを抽出します。

  • 00:50:00 このセクションでは、スピーカーは姿勢モデルと顔ランドマーク検出にエラー処理を追加する方法について説明し、「extract_key_points」と呼ばれる関数を作成して、ランドマーク検出とアクション検出に必要なキー ポイントを抽出します。この関数は numpy 配列を使用し、結果をループして各ランドマークの x、y、および z 値を抽出し、それらを配列にフラット化します。講演者はまた、ビデオの説明でコードが利用可能になると述べ、視聴者にコメントで質問するように勧めます.

  • 00:55:00 動画のこのセクションでは、Python による行動認識を使用した手話検出のキーポイント抽出機能についてスピーカーが説明しています。この関数は、ポーズ、顔、左手、右手のキー ポイントを抽出し、それらを平坦化された numpy 配列に連結します。これらのキー ポイントは、人間の行動検出を使用した手話の検出に使用されるフレーム値を形成します。また、スピーカーは、エクスポートされたデータ パスと、検出されるアクション (こんにちは、ありがとう、愛しています) の変数を設定します。アクションごとに 30 フレームのデータを使用します。
  • 01:00:00 ビデオのこのセクションでは、プレゼンターが Python での行動認識を使用して手話を検出するためのデータ収集プロセスについて説明します。彼らは、検出したい 3 つのアクションのそれぞれについて、各ビデオの長さが 30 フレームである 30 本のビデオに相当するデータを収集すると説明しています。これはかなりの量のデータになりますが、プレゼンターは視聴者に一歩一歩進んでいくことを保証します.彼らは、各アクションとアクションのシーケンスごとにフォルダーを作成し、各シーケンスの各フレームからの 30 個のキー ポイントが numpy 配列として格納されます。発表者はまた、ステップ 11 で、単語を連結して文を形成する方法を視聴者に示すと述べています。

  • 01:05:00 このセクションでは、インストラクターが手話認識モデルのデータを収集する方法を示します。まず、3 つの異なるクラス (こんにちは、ありがとう、愛してる) のサインのフォルダーと、それに対応する個々のシーケンス フォルダーを作成します。次に、メディア パイプ ループを変更して、各アクション、ビデオ、およびフレームをループしてデータを収集します。フレームがすぐに収集されないようにするために、彼は論理ステートメントを使用して各ビデオの間に休憩を追加します。これにより、モデルはビデオごとに 30 個のキー ポイント値を収集し、アクションごとに 30 個のビデオ、ビデオごとに 30 フレームの 3 つのアクションのスタック セットを効果的に構築します。

  • 01:10:00 このセクションでは、ビデオ作成者が、OpenCV とディープ ラーニング モデルを使用してビデオから手話ジェスチャーを検出する Python スクリプトのコレクション ロジックについて説明します。ロジックには、テキストを画面に出力し、2 フレームごとに休憩を取ることが含まれます。ビデオ作成者は、np.save を使用してフレームを numpy 配列として保存する方法も示します。これは mp_data フォルダーに保存されます。次に、キーポイントを抽出してフレームを正しいフォルダーに保存するための最終的なコード ブロックを提供します。

  • 01:15:00 トランスクリプトのこのセクションでは、スピーカーは、アクションとシーケンス (ビデオ) をループし、メディア パイプ検出を適用し、スタイル付きランドマークを描画し、特定のフォルダーに保存されるさまざまなキー ポイントを抽出するために適用されるロジックについて説明します。 3 つのアクション (こんにちは、ありがとう、愛しています) を使用し、30 シーケンスのアクションごとに 30 フレームを収集します。このコードを実行する前に、エラーがないか再確認し、フォントが隠れないように線幅を調整します。コードが実行されると、ポップアップに「Starting Collection」と表示されます。アクションを実行する位置に着くまでに 2 秒かかり、30 フレームあります。コードは無限にループしてデータを収集できる必要があります。

  • 01:20:00 ビデオのこのセクションでは、プレゼンターが、Python で MediaPipe および OpenCV ライブラリを使用して手話データを収集する方法を示します。プレゼンターは、モデルのパフォーマンスを向上させるためにさまざまな角度の手サインをキャプチャすることを提案し、それぞれ 30 フレームの 30 シーケンスを使用するとうまくいく傾向があると述べています。画像の代わりに MediaPipe によって収集されたキー ポイントを使用して、さまざまなシナリオでモデルの回復力を高めます。発表者はまた、収集されたデータは将来の使用のために numpy 配列として保存されることも説明しています。

  • 01:25:00 このセクションのビデオでは、データの前処理と、LSTM 深層学習モデルのラベルと機能の作成に焦点を当てています。ビデオは依存関係をインポートすることから始まり、ラベル マップを作成します。これは基本的に、さまざまなアクションのそれぞれを表す辞書です。次に、データが読み込まれ、まとめられて 90 個の配列を持つ 1 つの大きな配列に構造化されます。各配列には、キー ポイントを表す 1662 の値を持つ 30 フレームが含まれます。シーケンスとラベルの 2 つの空の配列が作成されます。ここで、シーケンスは特徴データを表し、ラベルはラベル データを表します。次に、コードはアクションとシーケンスのそれぞれをループし、その特定のシーケンスのすべての異なるフレームを表すウィンドウ用の空の配列を作成します。最後に、numpy.load を使用して各フレームをロードします。

  • 01:30:00 このセクションでは、データを numpy 配列に格納し、「to_categorical」関数を使用してラベルをワンホット エンコード表現に変換することで、データを前処理するプロセスをスピーカーが実行します。次に、「train_test_split」関数を使用して、データをトレーニング セットとテスト セットに分割します。トレーニング セットは 85 のシーケンスで構成され、テスト セットは 5 つのシーケンスで構成されます。スピーカーは、TensorFlow と Keras を使用して LSTM ニューラル ネットワークをトレーニングする準備をする際に、シーケンシャル モデル、LSTM 層、密層などの必要な依存関係もインポートします。

  • 01:35:00 このセクションでは、シーケンシャル、lstm、dense、tensorboard など、ニューラル ネットワークの構築に必要な依存関係について説明します。彼らは、シーケンシャルを使用するとモデルにレイヤーを簡単に追加でき、lstm は時間分析とアクション検出に使用されると説明しています。スピーカーは、テンソルボード コールバックを設定してトレーニングの進行状況を監視する方法も示します。次に、ニューラル ネットワーク アーキテクチャの構築に進みます。これには、3 セットの lstm 層を追加し、活性化関数と入力形状を指定することが含まれます。最後に、シーケンスを密層に戻さないことの重要性に言及し、さらなる学習リソースを推奨しています。

  • 01:40:00 ビデオのこのセクションでは、プレゼンターは LSTM モデルに追加されたさまざまなタイプのレイヤーについて説明し、次の 3 つのレイヤーがすべて高密度レイヤーであることを指定します。各高密度層は、64 および 32 の高密度ユニットまたは ReLU の活性化値を持つ完全に接続されたニューロンを使用します。最後の層はアクション層で、softmax の活性化値を使用して 3 つのニューラル ネットワーク ユニットとして返された値を抽出します。モデルは「こんにちは」などのアクションを予測し、この出力は 30 フレームと 1,662 のキー ポイントを通過し、アクションを抽出するために前処理されます。発表者は、彼らが行った研究開発について議論することで、MediaPipe と LSTM レイヤーを使用するに至った経緯を説明します。最後に、損失関数としてカテゴリカル クロス エントロピーを使用してモデルがコンパイルされ、指定されたエポック数に対して x トレインと y トレインで適合およびトレーニングされます。

  • 01:45:00 このセクションの動画では、Python で動作認識を使用して、手話検出用の LSTM ディープ ラーニング モデルをトレーニングするプロセスを紹介しています。モデルは MediaPipe Holistic のモデルを使用します。このモデルでは、データがメモリに収まるため、データ ジェネレーターは必要ありません。このビデオでは、TensorBoard を使用してトレーニング プロセスをセットアップする方法と、TensorBoard でのトレーニング中にモデルの精度と損失を監視する方法を示します。このビデオには、妥当なレベルの精度が達成されたらトレーニング プロセスを停止する方法と、model.summary 関数を使用してモデルの構造を検査する方法も含まれています。

  • 01:50:00 このセクションでは、スピーカーはモデルをトレーニングし、保存されたモデルを使用して予測を行います。このモデルは、LSTM 深層学習手法を使用して、手話からアクションを識別します。モデルは、softmax 関数を使用して、検出されたアクションの最高確率を予測します。予測値を実際の値と比較して、モデルのパフォーマンスを評価します。スピーカーは、トレーニング済みのモデルを action.h5 として保存し、コンパイルおよびロード関数を使用して再読み込みします。スピーカーは、sklearn からメトリクスをインポートして、モデルのマルチラベル混同行列のパフォーマンスを評価します。

  • 01:55:00 ビデオのこのセクションでは、マルチラベル混同行列と精度スコア関数を使用して、トレーニング済みモデルのパフォーマンスを評価する方法についてプレゼンターが説明しています。混同行列は真陽性と真陰性を表し、左上隅と右下隅にあるこれらの値の数が多いほど、モデルのパフォーマンスが向上します。精度スコア関数は、モデルの正しい予測のパーセンテージを示します。次に、トレーニング済みのモデルがテスト データを使用して評価され、リアルタイム検出のためにループが再確立されます。これには、検出用の新しい変数の作成、フレームの連結、および予測ロジックの適用が含まれます。特定の信頼度メトリックを超える結果をレンダリングするために、しきい値変数も実装されています。

  • 02:00:00 このセクションでは、スピーカーは、Python と LSTM 深層学習モデルによる行動認識を使用した手話検出の予測ロジックについて説明します。まずキー ポイントを抽出し、それらを 30 フレームのシーケンスに追加します。シーケンスの長さが 30 に等しい場合、シーケンスの拡張された次元で model.predict を呼び出して予測を実行します。次に、np.argmax と以前に定義したアクションを使用して、予測されたクラスを出力します。また、スピーカーはシーケンスの先頭にキー ポイントを挿入してロジックを整理し、視覚化ロジックをコードに追加します。

  • 02:05:00 このセクションでは、「mp.argmax」を使用して最高スコアの結果を抽出し、「res」を通過させることによって、プログラムが結果がしきい値を超えているかどうかをチェックする方法を説明するコードをスピーカーが分解します。プログラムのロジックは、最後の単語が現在の予測と一致することを確認することです。その場合、プログラムは文の長さに追加しません。一致しない場合、プログラムは現在検出されているアクションを文配列に追加します。プログラムが巨大な配列をレンダリングしようとしないように、文の長さは最大 5 語までにする必要があります。最後に、プログラムはテキストと長方形を画像に配置して、文章を表示します。

  • 02:10:00 このセクションの動画では、Python と LSTM 深層学習モデルを使用して、行動認識を使用して手話を検出する方法を示しています。このチュートリアルでは、append メソッドを使用するようにコードを調整し、検出しきい値を上げて精度を高める方法について説明します。このビデオでは、クイック関数を使用して確率をレンダリングして確率の視覚化を作成し、検出出力を視覚的に説得力のあるものにする方法も示しています。全体として、このチュートリアルは、深層学習モデルを使用して Python で手話を検出する優れた例を提供しており、同様のプロジェクトを構築しようとしている人にとって優れたリソースとなっています。

  • 02:15:00 ビデオのこのセクションでは、プレゼンターが、さまざまなアクションとその確率がリアルタイムで計算される方法を表示できる確率視覚化機能を実演します。この関数は、cv2.rectangle を使用して動的な四角形を出力フレームに配置し、現在作業中のアクションに基づいて配置および塗りつぶします。次に、cv2.put テキスト メソッドを使用してテキスト値を出力します。プレゼンターは、この関数をループに入れてリアルタイムで視覚化する方法を示しています。確率値に基づいて、こんにちは、ありがとう、愛してるなどのさまざまなアクションを検出および認識していることがわかります。プレゼンターは、この機能には多くのアプリケーションがあることを強調し、コードを使用してさまざまなシナリオでさまざまなアクションを検出および認識する方法を示します。

  • 02:20:00 ビデオのこのセクションでは、プレゼンターが手話検出プロジェクトのプロセスを要約しています。収集用のフォルダーを設定し、重要なポイントを収集し、データを前処理し、LSTM ニューラル ネットワークを構築し、予測を行い、リアルタイムでテストしました。彼らは、確率の視覚化を含め、検出をリアルタイムで効果的に実行することができました。彼らは、コロンを移動してネガを追加することで、正しいフレームを取得してシーケンスに追加するようにコードを修正した方法のデモンストレーションを提供します。また、アクションを予測する際の安定性を高めるために、予測を新しい予測配列に追加する行を追加しました。最後に、ユーザーが必要に応じて追加のアクション、色、および/または視覚化を追加することにより、プロジェクトを拡張および変更できることを提供します。

  • 02:25:00 このセクションでは、スピーカーは、追加のロジックを実装することで、アクション検出モデルがどのように安定性と回復力を高めたかを示します。モデルは、誤検出を最小限に抑え、検出をより長い期間保持できるようになり、精度が向上しました。また、スピーカーは、モデルのトレーニング済みの重みが GitHub リポジトリで利用可能になり、ユーザーが利用できるようになることにも言及しています。ビデオは、ビデオに高評価を付けてチャンネルに登録するようにという招待状で締めくくられます。
GitHub - nicknochnack/ActionDetectionforSignLanguage: A practical implementation of sign language estimation using an LSTM NN built on TF Keras.
GitHub - nicknochnack/ActionDetectionforSignLanguage: A practical implementation of sign language estimation using an LSTM NN built on TF Keras.
  • nicknochnack
  • github.com
A practical implementation of sign language estimation using an LSTM NN built on TF Keras. - GitHub - nicknochnack/ActionDetectionforSignLanguage: A practical implementation of sign language estim...