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

 

レクチャー 10 ツリー モデルとアンサンブル: デシジョン ツリー、AdaBoost、勾配ブースティング (MLVU2019)



10 ツリー モデルとアンサンブル: デシジョン ツリー、AdaBoost、勾配ブースティング (MLVU2019)

ビデオのこの最初の部分では、インスタンス空間をセグメント化し、各セグメントのクラスを選択することによって機能する、分類と回帰に使用される一般的な機械学習モデルであるデシジョン ツリーを紹介します。このビデオでは、情報取得を使用して意思決定ツリーをトレーニングする方法と、プルーニングが過剰適合を軽減する方法についても説明します。講演者は、モデル間の公平性を確保するために、データをトレーニング、検証、およびテスト セットに分割することの重要性を強調しています。さらに、このビデオでは、複数の決定木またはその他のモデルをトレーニングして組み合わせ、高分散や不安定性などの問題に対処するアンサンブル学習について説明しています。ブースティングは、モデルのアンサンブル手法としても導入されています。これには、分類器を順次トレーニングし、データを再重み付けしてアンサンブルを改善することが含まれます。最後に、アンサンブルを改善するために損失関数を最小化する分類器を選択する Adaboost アルゴリズムについて説明します。

ビデオのこの 2 番目の部分では、AdaBoost や勾配ブースティングなど、さまざまなツリー モデルとアンサンブルについて説明します。 AdaBoost は、分類器のパフォーマンスに基づいてデータのインスタンスを重み付けする分類モデルの一般的なブースティング方法です。勾配ブースティングには、定数関数を使用したモデルの初期化、残差の計算、ラベル付けされた残差への新しいモデルの適合、およびアンサンブルへの追加が含まれます。講演者は、勾配ブースティングと AdaBoost の違いを説明し、アンサンブルは結果を混乱させる可能性があるため、研究ではあまり使用されないことを指摘します。さらに、バギングは分散を減らし、ブースティングはバイアスを減らします。

  • 00:00:00 ビデオのこのセクションでは、プレゼンターが 3 つの機械学習モデルとモーダル アンサンブルを紹介します。これは、プロダクションや Kaggle などのコンテストで一般的なアプローチです。このアプローチは、決定木学習の基本的な考え方、分類モデルまたは回帰モデル、および多くのモデルをトレーニングし、それらを組み合わせてモデルをより強力にするアンサンブル手法を組み合わせたものです。発表者はまた、決定木は数値的特徴とカテゴリ的特徴の両方で機能すると説明しています。これらは主にカテゴリ機能に使用されます。このセクションは、映画に関するデータセットを紹介することで終わります。これは、決定木モデルのデモに使用されます。

  • 00:05:00 このセクションのビデオでは、デシジョン ツリーがどのように機能し、データ セットを使用してどのようにトレーニングできるかについて説明します。決定木学習のプロセスには、分割するのに適した特徴を見つけ、段階的に木を拡張し、データのサブセットを作成することが含まれます。分割は、各サブセット内でクラス ラベルの最も均一でない分布を作成することによって決定されます。映画のレーティングとジャンルに関するデータ セットの例を示します。レーティングで分割しても、クラスの分布が適切ではありませんが、ジャンルで分割すると良好な分布が得られます。

  • 00:10:00 このセクションのビデオでは、インスタンス空間をセグメント化し、各セグメントに特定のクラスを選択することで決定木がどのように機能するかを説明しています。ツリーは、葉ごとに新しい分割を選択することによって展開されますが、ルートから葉へのパス内の同じカテゴリ機能で 2 回分割することは意味がありません。停止条件は、すべての入力またはすべての出力が同じ場合であり、不均一性はセグメント間のクラスの分布によって決まります。各クラスの割合を考慮する必要があるため、3 つ以上のクラスの場合は難しい場合があります。

  • 00:15:00 このセクションでは、エントロピーを分布の均一性の尺度として使用する方法と、決定木分類で特徴の情報ゲインを計算する方法についてスピーカーが説明します。エントロピーは、分布がどの程度均一であるかの尺度であり、均一な分布はより高いエントロピーを持ちます。話者はこれを 2 つの分布で示し、エントロピーの式を使用して、一様分布のエントロピーは 2 ビットであるのに対し、不均一分布のエントロピーは、短いコードで情報を送信する効率が向上するため、はるかに低いことを示します。何かに条件付けられた単なるエントロピーである条件付きエントロピーも説明されており、特徴の情報利得は、特徴を見る前の一般的なエントロピーから特徴を見た後のエントロピーを引いて計算されます。

  • 00:20:00 このセクションでは、情報ゲインが最も高い機能を使用してツリーを分割するプロセスについて詳しく説明します。アルゴリズムはラベルのない葉から始まり、すべての葉がラベル付けされるまでループします。セグメントを持つラベルのない葉ごとに、アルゴリズムは停止条件をチェックします。停止条件は、機能が不足しているか、同じクラスを持つすべてのインスタンスである可能性があります。停止条件が満たされない場合、リーフは情報ゲインが最も高いフィーチャで分割されます。数値特徴のしきい値は、情報ゲインを最大化するように選択されます。数値特徴を含む決定木分類子は、異なるしきい値で同じ特徴を複数回分割する可能性があるため、より複雑な決定境界を持つことができます。

  • 00:25:00 このセクションでは、スピーカーは、大きくて複雑な決定木を使用する場合のオーバーフィッティングの問題について説明します。彼らは、ツリーの最大サイズでトレーニングの精度がどのように向上するかを説明していますが、テストまたは検証データの精度は大幅に低下する可能性があります。この問題に対処するために、講演者はプルーニングの概念と、オーバーフィッティングの軽減にどのように役立つかを紹介します。また、モデル間の公平性を確保するために、ハイパー パラメーターの選択とモデル検索のためにデータをトレーニング、検証、およびテスト セットに分割することの重要性も強調しています。最後に、スピーカーは、SK Learn のようなツールは、トレーニング プロセス中に一部のトレーニング データを自動的に差し控えて、枝刈りを行うことに注意します。

  • 00:30:00 このセクションでは、対象ラベルがクラスではなく数値である場合に使用される回帰木について話します。基本原則はディシジョン ツリーと同じですが、注意すべき点がいくつかあります。まず、回帰木では、葉はクラスではなく数字でラベル付けされます。平均または中央値は、セグメント内のインスタンスにラベルを付けるためによく使用されます。次に、エントロピーの代わりに分散を使用して、各ステップで分割する機能を決定し、得られる情報を最大化します。講演者は、モデル空間の一般化階層についても説明します。最も一般化されたモデルは定数関数であり、分割を追加するとモデルの複雑さが増します。

  • 00:35:00 このセクションでは、スピーカーは、モデルとしての決定木と回帰木について説明し、高い分散や不安定性の問題などのそれらの制限について説明します。これらの問題の解決策は、複数の決定木をトレーニングし、それらを組み合わせてアンサンブルにすることです。これは一般的な手法です。アンサンブル学習の目標は、バイアスと分散のトレードオフを解決することです。ここで、バイアスは構造的な問題であり、分散はモデルの誤差の広がりです。アンサンブル学習はこれらの問題を解決するのに役立ち、決定木を他のモデルと組み合わせることが可能です。生徒のプロジェクトをルーブリックで採点することの類推は、高いバイアスと低い分散を説明するために使用されます。

  • 00:40:00 このセクションでは、講演者は、機械学習におけるバイアスと分散の問題と、ブートストラップがこの問題の解決にどのように役立つかについて説明します。利用可能なデータセットが限られているため、観測されたターゲットからの距離が偏りが大きいためなのか分散が大きいためなのかを判断するのは難しい場合があります。ブートストラップは、別のデータセットからのサンプリング プロセスをシミュレートし、元のデータセットを置換して再サンプリングして新しいサンプル データセットを作成することで、これに対処します。経験的分布の累積密度関数を分析することで、元のデータセットからのリサンプリングが元のデータ分布からのサンプリングに近似していることが明らかになり、トレーニング用のさまざまなデータセットを作成することで大きな分散を検出できるようになります。

  • 00:45:00 このセクションでは、データ セットのリサンプリングと各リサンプリング データ セットでの複数のモデルのトレーニングを含む Bootstrap 集計またはバギングについて説明します。次に、多数決をとってモデルを組み合わせて新しいデータを分類します。この方法では変動性は減少しますが、バイアスは減少しません。さらに、このビデオではブースティングについて説明しています。これは、弱いモデル ファミリーを一緒にブーストして、より低いバイアスを実現するのに役立ちます。ブースティングでは、重みと呼ばれる小さな列をデータセットに追加します。これは、学習プロセスの特定の時点で各機能がどれほど重要かを示します。ブースティングの一般的な考え方は、線形分類器、定数モデル、または多数派クラスを出力するものなど、任意の分類器 M0 から開始することです。

  • 00:50:00 このセクションでは、モデルアンサンブルテクニックとしてのブースティングの概念が紹介されています。ブースティングでは、分類器を順次トレーニングし、前の分類器が正しくないインスタンスの重みを増やし、正しいインスタンスの重みを減らすことで、データを再重み付けします。分類器には、アンサンブルを改善する上での重要性に基づいて重みが与えられ、最終的なアンサンブルは、それぞれの重みでトレーニングされたすべてのモデルの合計です。 AdaBoost は、ブーストに対するより原理的なアプローチであり、最小化するエラー関数の定義と、重み付けされたトレーニング データの使用を伴います。エラー関数は、アンサンブル内の各モデルに与えられる重みを決定するために使用されます。

  • 00:55:00 ビデオのこのセクションでは、スピーカーは、Adaboost で使用される損失関数と、アンサンブルに追加する次の分類器を選択するために損失関数を最小化する方法について説明します。彼は、データセット内の各インスタンスについて、ターゲット ラベルと予測ラベルの差の指数をとることによって誤差を計算する方法を説明し、この誤差をデータセット全体で合計して現在のアンサンブルの誤差を得る方法を示しています。 .次にスピーカーは、このエラーがどのように新しい関数にさらに単純化されるかを説明します。この関数は、次の分類器を選択して、誤って分類されたインスタンスの重みの合計を最小化することで最小化できます。これは、式の選択によって影響を受ける唯一の部分です。分類子。全体として、Adaboost アルゴリズムは、この損失関数を最小化する分類子を繰り返し選択することによって機能し、誤分類されたインスタンスの重みを効果的に増やし、将来の反復での誤分類の頻度を減らします。

  • 01:00:00 このセクションでは、スピーカーは、分類モデルの一般的なブースティング手法である AdaBoost アルゴリズムについて説明します。アンサンブルを作成するために、アルゴリズムは特定の分類子から開始し、そのインスタンスで分類子がどのように実行されたかに従って、データの各インスタンスの重みが計算されます。新しい分類器は、誤った分類の重みの合計を最小化するようにトレーニングされます。この新しい分類器には重みが与えられます。重みは、誤差の指数を取得し、合計誤差を最小化する a の値を見つけることによって計算されます。このプロセスが設定されたステップ数だけ繰り返され、アンサンブルの最終的なモデルが結果として得られます。スピーカーは、ブースティングとバギングの違いについても説明し、回帰モデル用に設計されたブースティングの変形である勾配ブースティングを紹介します。

  • 01:05:00 このセクションでは、スピーカーは勾配ブースティングの基本的な考え方について説明します。これには、定数関数でモデルを初期化し、これまでのアンサンブルの残差を計算することが含まれます。次に、元のラベルの代わりに残差でラベル付けされたデータセットに新しいモデルが当てはめられ、ガンマ値で重み付けされたアンサンブルに追加されます。このモデルは、M3 = M2 + 別のモデルとして再帰的に書き下すことができ、和をゆっくりと拡張します。これは、勾配ブースティングと呼ばれます。これは、モデル出力とターゲット出力の差、または残差勾配である二乗誤差損失関数の合計について、スーパー オーバーフィッティング モデルで勾配を計算する必要があるためです。

  • 01:10:00 このセクションでは、スピーカーは、モデルに予測空間の勾配に従うように指示することによって勾配ブースティングがどのように機能するかを説明します。勾配ブースティングにより、損失関数を別の損失関数 (L2 損失の代わりに L1 損失など) に置き換えることができます。モデル出力に関する損失値の導関数を取得し、チェーン ルールを適用することにより、残差自体の代わりに残差のサインを計算し、アンサンブル内の次の分類子をトレーニングして残差のサインを予測できます。この方法により、勾配ブースティングでさまざまな損失関数を最適化できます。

  • 01:15:00 このセクションでは、勾配ブーストと ADA ブーストの違いについて説明します。勾配ブースティングでは、各モデルは前のモデルの疑似残差に適合しますが、ADA ブーストでは、新しいモデルはそれぞれ、前のモデルのパフォーマンスに基づいて再重み付けされたデータセットに適合します。勾配ブースティングは、損失関数を最適化せず、微積分にヒントを得た学習方法では機能しないモデルに適しています。一方、スタッキングは、複数のモデルの判断を 1 つの出力に組み合わせる単純な手法です。この手法は、少数のモデルをトレーニングし、それらをさらに優れたモデルに結合したい場合に、パフォーマンスをさらに向上させるために使用されます。

  • 01:20:00 このセクションでは、アンサンブルは個々のモデルよりも優れていますが、結果を混乱させる可能性のあるブースティングを行わずにモデルを個別にテストして比較する必要があるため、研究ではあまり使用されないことをスピーカーは説明しています。さらに、アンサンブルは、大規模なニューラル ネットワークで使用するとコストがかかる可能性があるため、ほとんどの場合、デシジョン スタンプや小さなデシジョン ツリーなどの小さなモデルで使用されます。講演者はまた、バギングがバリアントを減らし、ブースティングがバイアスを減らすことを繰り返します。
10 Tree Models and Ensembles: Decision Trees, AdaBoost, Gradient Boosting (MLVU2019)
10 Tree Models and Ensembles: Decision Trees, AdaBoost, Gradient Boosting (MLVU2019)
  • 2019.03.09
  • www.youtube.com
ERRATA: In slide 55, W_i and W_c are the wrong way around in the definition of a_t.slides: https://mlvu.github.io/lectures/52.Trees.annotated.pdfcourse mater...
 

講義 11 シーケンシャル データ: マルコフ モデル、単語埋め込み、および LSTM



11 シーケンシャル データ: マルコフ モデル、単語埋め込み、LSTM

このビデオでは、講演者は、機械学習で遭遇するさまざまなタイプのシーケンシャル データ (時間またはシーケンスで配置された数値または記号データなど) について説明します。彼らは、これらの問題に取り組むためのモデルとして、マルコフモデル、単語埋め込み、および LSTM を導入しています。このビデオでは、特定のものをテストする前に発生したデータの検証とトレーニングの概念を含め、シーケンシャル データを使用したトレーニングと予測のプロセスの概要を説明しています。さらに、スピーカーは、さまざまな長さのシーケンスと時間モデリングの処理方法、および時間による逆伝播を使用した再帰型ニューラル ネットワークのトレーニング プロセスなど、ニューラル ネットワークを使用してシーケンスをモデル化する方法について説明します。最後に、このビデオでは、シーケンスからラベルへの分類の側面について説明します。これは、再帰型ニューラル ネットワークが物事をすぐに忘れてしまう場合に、マルコフ モデルを使用して改善できます。

このビデオでは、マルコフ モデルとその制限、Long Short-Term Memory (LSTM) ネットワークとその利点、テキストと画像の生成に LSTM を使用する方法、教師の強制手法、画像のキャプションなど、シーケンシャル データ処理に関連するさまざまなトピックを取り上げます。講演者は、LSTM 構造とそこに含まれるさまざまなゲートの詳細な説明、およびシェークスピアのテキスト生成や画像キャプションなどのタスクのためにこれらのネットワークからトレーニングおよびサンプリングする方法を提供します。埋め込み層を使用して単語レベルの LSTM を改善することの重要性についても説明し、単純なモデルから LSTM のようなより強力なモデルまで、シーケンス処理に使用できるさまざまな方法についても説明します。

  • 00:00:00 このセクションでは、スピーカーは、投票率が低いため、コンピューター サイエンスの学生が全国学生調査に参加することの重要性について説明します。次に、講演者は、来週は模擬試験に取って代わられるため、宿題がないことを発表します。スピーカーは、コースの難しい部分が終わったことを視聴者に保証し、残りの講義はそれほど複雑ではありません.この講義のテーマは時系列データであり、講演者はそのような問題に取り組むためのモデルとして、マルコフ モデル、単語埋め込み、および LSTM を紹介します。

  • 00:05:00 このセクションでは、スピーカーは、機械学習で遭遇する可能性のあるさまざまなタイプのシーケンシャル データ (時間またはシーケンスで配置された数値または記号データなど) について説明します。データは、問題の性質に応じて、1 次元または 2 次元など、さまざまな次元を持つことができます。たとえば、言語データは、各単語が個別の値である 1 次元として表示することも、ポスト テキストの品詞タグを使用して 2 次元として表示することもできます。スピーカーは、データのタイプと次元に応じて、分類や予測などの可能な機械学習タスクについても言及しています。

  • 00:10:00 このセクションでは、スピーカーは機械学習モデルを使用して、データを前の値とターゲットの特徴を含むテーブルに変換することにより、単一のシーケンス設定で前の値を指定してシーケンスの次の値を予測する方法を説明します価値。彼らは、線形回帰や回帰ツリーなどの回帰学習器を使用してモデルをトレーニングすることを提案していますが、データをトレーニング、検証、およびテスト セットに分割し、ウォークフォワード検証プロセスを使用して、モデルがトレーニングされるだけであることを確認することが重要であることに注意してください。過去のデータと将来のデータでテストされています。これは、実際のユース ケースで発生することです。

  • 00:15:00 このセクションでは、スピーカーは、シーケンシャル データを使用したトレーニングと予測のさまざまな方法について説明します。彼らは、特定のものをテストする前に発生したデータの検証とトレーニングの重要性を強調しています。彼らは、単語レベル モデリングの確率モデルとしてマルコフ モデルを紹介し、確率の連鎖則を使用して複数の確率変数の同時確率分布を分解する方法を説明しています。彼らは、「おめでとう、あなたは賞を獲得しました」という文を、6 つの個別の確率変数である 6 つの確率変数にわたる同時確率分布に分解し、その同時確率分布を、条件付けされた単語の条件付き分布の積に分解する方法を示しています。その前にある言葉。

  • 00:20:00 このセクションでは、スピーカーは文を条件付き確率の積に分解することによって文の確率を計算する方法について説明します。特に語彙が多い場合、特定の単語の確率が非常に低くなる可能性があるため、アンダーフローを回避するために対数確率を使用することをお勧めします。そのため、代わりに対数を使用することをお勧めします。理想的な言語モデルには、文法規則だけでなく、常識的な推論と物理学も含まれている必要がありますが、今のところ、話者は、単語の確率が最後の 2 つの単語のみに依存すると仮定するマルコフ仮定を使用します。これらの確率は、コーパスと呼ばれる言語の大規模なデータセットで発生する回数を数えることで推定できます。

  • 00:25:00 このセクションのビデオでは、マルコフ モデルと条件付き確率を使用して、テキストを生成する言語モデルを作成する方法について説明します。マルコフ モデルでは、一連の単語の確率を計算できます。これは、逐次サンプリングによるテキスト生成に使用できます。この手法には制限がありますが、言語モデルの機能と精度をテストできます。さらに、マルコフモデルを分類に使用できます。これは、スパムまたはハムを条件とした言語モデルで単語をモデル化するベイジアン分類器によって行われ、電子メールがスパムである可能性を推測します。

  • 00:30:00 このセクションでは、スピーカーはマルコフ モデルについて説明しました。マルコフ モデルは、クラスが与えられたシーケンスの確率を推定し、ベイズ ルールを使用してクラスの確率を取得することによってシーケンス データをモデル化するために使用されます。ゼロ次マルコフ モデルはスパムに使用できますが、他のタスクには高次モデルの方が適している場合があります。ただし、マルコフモデルは単語を原子記号として扱い、いくつかの単語が同様の意味を持つという事実を考慮していません。これに対処するために、埋め込みモデルを使用して、オブジェクト間の類似性をモデル化する重みベクトルを各オブジェクト (この場合は単語) に割り当てることができます。これは、ベクトル表現で画像をエンコードするのと同様に、これらのベクトルのパラメーターまたは値を学習して潜在因子を計算することによって行われます。

  • 00:35:00 このセクションでは、分布仮説が導入されています。これは、類似した単語の近くに出現する単語は、多くの場合、同じことを意味する可能性があることを示しています。次に、この仮説を応用して埋め込みを計算する単語埋め込みアルゴリズムについて説明します。アルゴリズムを適用する前に、単語の表現が必要です。これは、単語ごとにワンホット ベクトルを持つニューラル ネットワークであり、語彙が埋め込み空間の 300 の出力にマップされる非常に単純なニューラル ネットワークを可能にします。モデルの下部は、埋め込み空間のエンコードとして使用されます。一部の研究者はこれをルックアップ テーブルと考えていますが、これは基本的に、ワンホット ベクトルから埋め込みへのマッピングと同じものです。

  • 00:40:00 このセクションでは、講師が単語埋め込みの概念について説明します。これは、単語などの離散オブジェクトが密なベクトルとして表現される方法です。埋め込みは、埋め込みの線形マッピングのマトリックスを作成することによってトレーニングされます。これを使用して、単語のコンテキストで確率分布を見つけることができます。彼は、「女性」から「男性」の埋め込みを差し引くと、物事がよりフェミニンになる方向がどのように作成されるか、およびこの方向を使用して「女王」などの他の単語の単語ベクトルを計算する方法の例を示しています。講師は、これらの埋め込みを機械学習用の大規模なニューラル ネットワークの出発点として使用する方法と、膨大な量のテキスト データでトレーニングされた膨大な数の単語埋め込みを Google のオープン ソース モデル ライブラリからダウンロードして他のプロジェクトで使用する方法について説明します。 .

  • 00:45:00 このセクションでは、異なる長さのシーケンスを処理する方法や時間をモデル化する方法など、ニューラル ネットワークを使用してシーケンスをモデル化する方法について説明します。 1 つのアプローチは、非表示層が前の非表示層を取り込んでネットワーク内のサイクルを可能にする再帰接続を使用することです。これにより、ネットワークはさまざまな長さのシーケンスで動作でき、シーケンスを一度に 1 つずつ入力してシーケンス出力を取得できます。講演者はまた、ニューラル ネットワークを使用したバッチ処理とトレーニングのためにシーケンスを同じ長さにパディングすることの重要性を強調しています。

  • 00:50:00 このセクションでは、時間による逆伝播を使用して再帰型ニューラル ネットワークをトレーニングするプロセスについて説明します。課題は、隠れ層が変化し続けるため、再帰層を介して逆伝播することです。これを解決する 1 つの方法は、ネットワークをアンロールして、繰り返し接続がネットワークの前のコピーから次のコピーに移動するようにすることです。結果のネットワークは、再帰接続のない大きなフィードフォワード ネットワークとして扱われ、重みは逆伝播によって更新されます。このトレーニング プロセスは、シーケンス ツー シーケンス学習と呼ばれ、入力シーケンスが出力シーケンスにマッピングされます。

  • 00:55:00 このセクションでは、スピーカーは、出力ラベルがバンド分類などのシーケンス データに由来するシーケンス ツー ラベルについて説明します。ただし、シーケンスの最後の要素のみを使用して出力を予測することは理想的ではありません。非対称性が生じ、勾配の伝播で問題が発生する可能性があるためです。代わりに、シーケンスの出力全体を取得して平均化することをお勧めします。これにより、ネットワークは入力シーケンスのすべての部分を考慮できるようになり、ラベルのより適切な予測子になります。さらに、スピーカーは、ラベル付きシーケンスは、入力ラベルを n 回繰り返してニューラル ネットワークに入力して出力を生成するか、入力で最終状態を初期化し、ニューラル ネットワークに 0 ベクトルを与えて順序。ただし、再帰型ニューラル ネットワークは物事をすぐに忘れる傾向があるため、これは効率的ではありません。つまり、場合によってはマルコフ モデルの方が適している可能性があります。

  • 01:00:00 このセクションでは、スピーカーは記憶に関して、特にどの情報を覚えておく価値があるかを判断する際のマルコフ モデルの限界について説明します。解決策は、Long Short-Term Memory (LSTM) です。これは、どの情報を記憶するか、または忘れるかを決定するいくつかの学習についてのゲートを持つ一種の再帰型ニューラル ネットワークです。ゲートには、0 と 1 の間、または -1 と 1 の間の値の 2 つのベクトルが含まれます。左の値は、メモリに追加する部分を選択し、右の値は、入力情報が必要な量に応じて、保持する情報を決定します。追加され、キャンセルする必要がある金額。 LSTM を使用すると、記憶のために選択された情報が継続的に追加されます。これは、長期記憶の保持に役立ちます。

  • 01:05:00 このセクションでは、スピーカーは、セルで構成される再帰型ニューラル ネットワークの一種である長短期記憶 (LSTM) ネットワークの構造について説明します。セルは、時間ステップ間で値 C (セルの状態) と値 Y (出力) を渡しながら、時間ステップごとに入力を受け取り、出力を提供します。講演者は LSTM ネットワークの視覚的表記法を分解し、メモリ内のアクティベーションを減らす忘却ゲートや、入力のどの部分をメモリに追加するかを決定する入力ゲートなど、さまざまなゲートについて説明します。最後のステップでは、出力値を決定します。これは、別のシグモイド活性化層を通じて発生します。講演者は、LSTM ネットワークを使用する利点を強調しています。つまり、ネットワークのスパインやコンベヤー ベルトに沿って勾配が消失しないため、効率が向上します。

  • 01:10:00 このセクションでは、スピーカーは LSTM からサンプリングして文字レベルのシーケンス ジェネレーターを構築する方法を説明します。出力は、入力履歴に基づく次の文字の確率分布です。このモデルは、コンマなどの配置、新しい行の配置、弱強五歩格の概算を学習します。これは、声に出して読むとシェイクスピアのように聞こえます。モデルは、より強力であるため、単語レベルではなく文字レベルでデータをシーケンスするようにトレーニングされますが、少数の文字のみをサンプリングする場合でも、シーケンス全体を供給する必要があります。講演者は、誰かがシェイクスピア モデルをトレーニングしてテストした実験を引用しています。このモデルは、印象的で非常にシェイクスピア的なテキストを生成し、リンクや特定のマークアップ テキストを含むウィキペディアの記事を編集することでモデルが構文を学習できることを示しています。

  • 01:15:00 このセクションでは、スピーカーは、大量のデータに関するネットワークのトレーニングを通じて、ウィキペディアの記事やドナルド トランプのツイートなどのテキストを生成する際の LS DM の使用について説明します。彼らは、HTML や XML など、LS DM がマニフェストできるさまざまなモードを強調し、ネットワークは高度な数学論文のように見える数学を生成することさえできると述べています。さらに、講演者は、LS DM を使用して、ネットワークに供給されるランダム ベクトルと変分アウター エンコーダー (VAE) に基づくエンコーダー/デコーダー ネットワークを使用してランダム出力を生成することを提案しています。 MIDI スニペットでトレーニングされています。

  • 01:20:00 このセクションでは、プレゼンターは、シーケンシャル サンプリング予測言語モデルを外部エンコーダーと組み合わせてより複雑なシーケンスを作成する、教師強制手法を使用して言語をモデル化する方法について説明します。彼はさらに、SketchRNN と呼ばれるティーチャー フォーシングを使用するモデルのデモを行います。これは、猫やフクロウなど、人間がすばやく描くスケッチをモデル化するために使用されます。 SketchRNN は、潜在空間につながる変分シーケンスからシーケンス エンコーダーを使用します。これは、同じ主題の異なる図面間でスムーズに補間するために使用されます。最後に、プレゼンターは、この同じ手法を使用して人間の文章間をスムーズに補間し、非常に優れた結果を得る方法を示します。

  • 01:25:00 このセクションでは、スピーカーは Image COCO データセットについて説明します。このデータセットには、ImageNet と呼ばれるデータセットからの画像と、画像で何が起こっているかを説明する 5 つの人間が書いたキャプションが含まれています。講演者は、画像キャプション タスクへの簡単なアプローチは、事前にトレーニングされた画像分類モデルをダウンロードし、分類レイヤーを取り除くことであると提案しています。結果のマッピングを LSTM にフィードして、キャプションを生成するようにモデルをトレーニングできます。スピーカーは、埋め込みレイヤーを使用して単語レベルの LSTM を改善する方法、および LSTM とマルコフ モデルの違いについても説明します。最後に、講演者は、強力なものから単純なものまで、シーケンス処理に使用できるさまざまな方法について説明します。
11 Sequential Data: Markov Models, Word Embeddings and LSTMs
11 Sequential Data: Markov Models, Word Embeddings and LSTMs
  • 2019.03.12
  • www.youtube.com
slides: https://mlvu.github.io/lectures/61.SequentialModels.annotated.pdfcourse materials: https://mlvu.github.ioIn the last lectures, we will discuss variou...
 

12 のマトリックス モデル: レコメンダー システム、PCA およびグラフ畳み込み



12 のマトリックス モデル: レコメンダー システム、PCA およびグラフ畳み込み

ビデオの最初の部分では、スピーカーはマトリックス モデルと、製品の推奨、ニュース記事、ソーシャル ネットワークに使用できるレコメンダー システムでのそのアプリケーションについて説明します。レコメンダ システムは、明示的および暗黙的なフィードバックとサイド情報に依存しており、適切に設計されていない場合、偽の情報を広めるために操作される可能性があります。行列因数分解は、ユーザーの行動に基づいて評価を予測するための一般的な方法です。UTM を R にできるだけ近づけるために U 行列と M 行列を見つける最適化問題は、二乗誤差法とフロベニウス ノルムの計算によって解決されます。スピーカーは、勾配降下法を使用してこの問題を最適化する方法についても説明し、協調フィルタリングの勾配更新規則について説明します。さらに、スピーカーは、ユーザーと映画のバイアスの制御、暗黙のいいねの使用、サイト情報の組み込みなど、行列分解モデルを改善する 5 つの方法について説明します。最後に、スピーカーは、従来の機械学習設定における行列分解の威力、行列分解における PCA の拡張、およびデータの保存におけるグラフ モデルの有用性について説明します。

ビデオの 2 番目の部分では、ノード分類とリンク予測のためのグラフ畳み込みを含む、レコメンダー システムのさまざまなマトリックス モデルを紹介します。グラフの畳み込みは、隣接行列を元の埋め込みで乗算することによってノードの埋め込みを混合しますが、このアプローチには大きなソーシャル グラフを表現する際の制限があります。従来の検証方法は、レコメンデーション システムで使用される混合機能モデルでは機能しないため、トレーニング セットのラベルのみが保留され、機能は保留されない変換学習が必要です。さらに、時間と評価のデータをモデル化するには、タイムスタンプ データと変換学習を考慮する必要があります。ビデオの最後には、講義の要約と、強化学習に関する次の議論のプレビューが表示されます。

  • 00:00:00 このセクションでは、スピーカーはマトリックス モデルの概念を紹介します。これは、マトリックスと見なすのが最適なデータ セットを分析するためのさまざまなアプローチです。説明するモデルは、データセットを行列として扱うという特徴を共有しています。講義では、通常は行列分解によって実装されるレコメンダー システムに焦点を当て、Netflix コンペティションの優勝モデルについて説明します。講義では、主成分分析とグラフ モデルについても簡単に触れてから、検証に関する議論で締めくくります。

  • 00:05:00 このセクションでは、スピーカーは、レコメンデーション システムで使用できる 3 つの形式のデータについて説明します。明示的なフィードバック、暗黙的なフィードバック、サイド情報です。明示的なフィードバックは、ユーザーが特定のアイテムを評価するように求められる場合です。これは非常に価値がありますが、比較的まれです。ページビュー、ウィッシュリスト、さらにはマウスの動きなど、ユーザーが何をしているかを見ることで、暗黙的なフィードバックを収集できます。サイド情報とは、ユーザーと映画のペアリングに関する情報ではなく、長さ、俳優、監督など、ユーザー自身と映画に関する情報です。講演者は、レコメンデーション システムは、製品レコメンデーション (Amazon など)、ニュース記事 (Google ニュースなど)、ソーシャル ネットワーク (Twitter や YouTube など) など、さまざまな設定で役立つことに注意します。

  • 00:10:00 このセクションでは、スピーカーはレコメンダー システムとその脆弱性について説明します。レコメンダー システムは、特定のユーザーにコンテンツを提案するために使用されますが、偽の情報を広めるために操作される可能性があります。話者は、2 つのセットとそれらの間の関係を含む状況は、推奨パラダイムと見なすことができることに注意します。たとえば、レシピや食材、政治家や投票法などです。レコメンデーション システムの問題は、すべてのユーザーがすべての映画を評価するわけではないため、不完全なデータです。スピーカーは、埋め込みモデルを使用して各ユーザーと映画にベクトルを割り当て、損失関数に基づいてそれらのベクトルの値を学習して、欠落しているデータを予測することを提案しています。

  • 00:15:00 このセクションでは、スピーカーは、ユーザーの行動に基づいて映画の評価を予測することを目的としたモデルでユーザーと映画を表す方法として行列分解について説明します。このモデルは、各ユーザーと各映画にベクトルを割り当て、それらを乗算して大きな行列を作成します。話者は内積を使用して、モデルが負の無限大と正の無限大の間の値を予測する方法を説明します。値が大きいほど、ユーザーが映画を好きになる可能性が高いことを示します。モデルのカテゴリは、ユーザーの行動に関する浅い仮定を強化する傾向があり、特に洗練されていませんが、モデルは信頼できる予測を提供できます。行列因数分解により、行列は 2 つの小さな行列に分解されます。一方の行列にはユーザーが埋め込まれ、もう一方には映画が埋め込まれ、それらの内積が予測を表します。

  • 00:20:00 このセクションでは、UTM を R にできるだけ近づけるために U 行列と M 行列を見つける最適化問題について説明します。これは、二乗誤差法を使用してフロベニウス ノルムを計算することによって行われます。ただし、問題は、評価マトリックスに欠損値が存在することが多いことです。この問題を解決するために、損失関数は、R のすべての要素ではなく、トレーニング セットで評価がわかっている R の要素に対してのみ計算されます。プレゼンターは、この問題を最適化するための 2 つの方法についても説明します。そして勾配降下。勾配降下法はより柔軟で、モデルに簡単に追加できます。

  • 00:25:00 このセクションでは、スピーカーは、行列分解による協調フィルタリング手法の勾配更新規則について説明します。彼は誤差行列を定義し、パラメータに関して損失関数の導関数を取得するプロセスを説明しています。次に、グラデーション更新ルールを使用して、ユーザーとムービーの埋め込みの値を更新する方法を示します。更新規則には、エラー行列の行と列とそれぞれの埋め込み行列の間の内積を計算し、それを更新されるパラメーターに追加することが含まれます。

  • 00:30:00 このセクションでは、スピーカーはレコメンダー システムの内積予測関数の背後にあるロジックと、確率的勾配降下法を使用してトレーニングする方法について説明します。肯定的な評価しか持たないという問題と、否定的なサンプリングによってそれを解決する方法についても説明します。次にスピーカーは、PCA の潜在空間の概念と同様に、映画の解釈可能な次元を生成する非負行列因数分解問題を解決する 2 つの方法を詳しく説明します。

  • 00:35:00 このセクションでは、講演者は映画レコメンデーションの行列分解モデルを改善する 5 つの方法について説明します。まず、学習したスカラー パラメーターを追加することで、ユーザーと映画のバイアスをモデルに組み込む方法を説明します。次に、ゴールド スターまたはコールド スタートの問題は、ブラウジング動作などの暗黙のいいね! を使用して 2 番目のユーザー埋め込みを作成することで対処されます。第 3 に、損失関数にペナルティ項を追加することで、過剰適合を回避するためにモデルを正則化できます。第 4 に、主成分分析 (PCA) を適用して、ユーザーと映画の埋め込みの次元を減らすことができます。最後に、スピーカーは、グラフの畳み込みを使用して映画のジャンルに関する情報を組み込み、モデルにキャストする方法について話します。

  • 00:40:00 このセクションでは、スピーカーは暗黙的な情報とサイト情報をレコメンダー システムに追加する方法を説明します。暗黙的な情報については、システムはユーザーが気に入ったすべての映画の埋め込みを合計し、それを既存の埋め込みに追加します。同様に、サイト情報については、ユーザーの特徴がカテゴリ データにエンコードされ、対応する埋め込みが合計されて 3 番目の埋め込みベクトルが作成されます。話者はまた、時間は評価に影響を与える可能性があるため、適切な予測を行うには時間を制御することが必要であると述べています。これは、埋め込みを個別の期間に分割し、各期間に対して異なる埋め込みを学習することで実行できます。このセクションの最後に、推奨システムの行列分解とバイアスの概要を示します。

  • 00:45:00 このセクションでは、講演者はレコメンダー システムにおける行列分解の威力と、それを従来の機械学習設定に適用する方法について説明します。特徴列とインスタンス行の行列を取得することにより、バックプロパゲーションまたはその他のトレーニング方法による行列因数分解により、インスタンスの低次元表現を作成できます。これは、C ベクトル C 行列で乗算することによって復元できます。これは、主成分分析 (PCA) などの次元削減手法に似ていますが、C の列が線形独立であると仮定することで PCA と同等にすることができ、制約付き最小化問題が発生します。

  • 00:50:00 このセクションでは、プレゼンターが行列分解における PCA とその拡張について説明します。彼らは、データの既知の値に対してのみ再構成を最大化することにより、不完全なデータに PCA を使用できると説明しています。これにより、分類または回帰に使用できるデータの低次元表現または埋め込みが可能になります。スパース PCA の拡張も導入されています。これは、L1 レギュラライザーを使用してスパース性を強化し、パラメーターの解釈を容易にします。次に、プレゼンターは、バイナリ データのバイナリ クロス エントロピーなど、さまざまな損失値を行列分解問題に適用する方法を説明し、これらの方法がデータのより良い埋め込みを生成する方法を示します。このセクションは、データの有用な形式としてのグラフ モデルの紹介で締めくくります。

  • 00:55:00 このセクションでは、スピーカーは、ソーシャル ネットワーク、タンパク質相互作用、トラフィック ネットワーク、ナレッジ グラフなど、データを保存する際のグラフの柔軟性について説明します。次にスピーカーは、グラフを使用できる機械学習モデルを使用するというアイデアを提案します。特に、リンク予測とノード分類タスクに使用します。これは、レコメンデーションの問題に似ていると見なすことができます。講演者は、ノード埋め込みの概念を紹介し、グラフをより深く調べて基本的な埋め込みを拡張する方法として、グラフ畳み込みニューラル ネットワークについて説明します。

  • 01:00:00 このセクションでは、講演者がレコメンダー システムでグラフの畳み込みがどのように機能するかを説明します。グラフの畳み込みは、グラフの各ノードにランダムな次元の埋め込みを割り当てます。これは、視覚化のためにランダムな色を割り当てると解釈できます。グラフ畳み込みの背後にある直感は、それらがこれらの埋め込みを混合し、ノードの近隣から独自の埋め込みに情報を引き出すことを可能にするということです。混合のいくつかのステップの後、最終的にすべてのノードは、全体的なグラフを表す同じ表現を持ちます。ノードの埋め込みを混合するには、隣接行列に元の埋め込みを乗算します。これにより、各ノードの埋め込みがその隣接ノードとそれ自体の合計を表す新しい埋め込みが得られます。値が爆発しないように、埋め込みを正規化する必要があります。

  • 01:05:00 このセクションでは、ノード分類とリンク予測にグラフ畳み込みを使用する方法についてスピーカーが説明します。ノード分類では、単純なグラフに各ノードの埋め込みが割り当てられ、隣接するノードに基づいて新しい埋め込みを作成するために 1 つのグラフ畳み込みが適用されます。次に、分類のために埋め込みを 2 次元にマッピングするために、別の畳み込みが適用されます。リンク予測では、複数層のグラフ畳み込みによってノードの埋め込みが生成され、これらの埋め込みの上で行列分解モデルが使用されます。次に、勾配を使用して元のグラフ畳み込みを逆伝播し、より深いグラフ構造に基づいてリンクを予測します。

  • 01:10:00 ビデオのこのセクションでは、スピーカーはグラフ畳み込みの課題について説明します。グラフ畳み込みには、ソーシャル グラフを選択的かつ過度に包括的ではない方法で表現することが含まれます。ソーシャル グラフのスモール ワールド プロパティにより、各ノードの表現でグラフ全体を表現することには問題があり、従来のグラフ畳み込みでは不要な情報を効果的に除外できません。さらに、トレーニングは完全なバッチで実行する必要があるため、パフォーマンスが低下する可能性があります。スピーカーは、より選択的なアプローチとしてグラフの注意を提案していますが、それはまだ活発な研究の分野です.講演者はまた、グラフ畳み込みモデルの検証は困難であり、標準的な機械学習の検証方法から逸脱する必要があることにも言及しています。

  • 01:15:00 このセクションでは、スピーカーは、従来のトレーニング テスト検証方法は、レコメンデーション システムで使用されるような混合機能アプローチでは機能しないことを説明します。ユーザー機能または映画機能のいずれかを差し控えると、埋め込みが失われるためです。代わりに、トレーニング セットのラベルのみが保留され、機能は保留されない変換学習が必要です。このアプローチは、語彙全体を事前に知っておく必要がある埋め込みモデルをトレーニングする場合に重要です。ただし、残りのデータをトレーニングとテストに使用するために、ランダムな評価またはリンクを保留することはできます。最後に、スピーカーは、ノード ID のラベル付けにおける分類は、グラフ全体を使用して行うことができることに注意します。

  • 01:20:00 このセクションでは、タイムスタンプ データとトランスダクティブ学習を考慮する必要があるデータセットで時間と評価をモデル化するという課題について話します。彼らは、未来からのトレーニング データがないことが重要であり、テスト セットはトレーニング セットの未来にある必要があると説明しています。さらに、スピーカーは講義を要約し、行列分解を使用してレコメンデーションの抽象的なタスクを解決すること、およびグラフ モデルとグラフ畳み込みを使用してレコメンデーションを一般化することを強調します。このセクションは、強化学習に関する次の講義のプレビューで終わります。
12 Matrix models: Recommender systems, PCA and Graph convolutions
12 Matrix models: Recommender systems, PCA and Graph convolutions
  • 2019.03.15
  • www.youtube.com
slides: https://mlvu.github.io/lectures/62.Matrices.annotated.pdfcourse materials: https://mlvu.github.ioToday we discuss a variety of models that benefit fr...
 

13 強化学習: 方策勾配、Q 学習、AlphaGo、AlphaStar (MLVU2019)



13 強化学習: 方策勾配、Q 学習、AlphaGo、AlphaStar (MLVU2019)

このビデオでは、強化学習とその基本的なコンポーネントを紹介し、ロボットのポールバランスカーや三目並べゲームなどの例について説明しています。講演者は、微分不可能な関数、報酬の受け取りの遅延、クレジット割り当ての問題など、強化学習の課題について詳しく説明します。クレジット割り当ての問題は、ランダム検索、ポリシー勾配、Q ラーニングなどの手法によって対処され、講演者は各アルゴリズム、その利点、および制限について説明します。 Q 学習アルゴリズムについては、大きな数値表を使用して Q 値を表す方法を説明しながら、より詳細に説明します。プレゼンテーションは、ディープ Q ラーニングと AlphaGo が強化学習の分野にどのように革命をもたらしたかについての説明で締めくくられます。

  • 00:00:00 このセクションでは、インストラクターが強化学習のトピックを紹介し、オフライン学習との違いについて説明します。強化学習には、世界と相互作用し、受け取ったフィードバックからリアルタイムで学習するエージェントをモデル化することが含まれます。未知の環境でのロボット掃除機の例を使用して、この概念を説明します。インストラクターは、強化学習のタスクを解決するための 3 つのアルゴリズム、つまりランダム検索、方策勾配、および Q 学習についても言及しています。その後、議論は強化学習の最近の発展に移ります。AlphaGo、AlphaZero に焦点を当て、AI を使用して StarCraft II で世界最高の人間プレーヤーを打ち負かすという進行中の探求に焦点を当てます。

  • 00:05:00 このセクションでは、環境、モデル、学習者を含む強化学習の基本的なフレームワークについて講師が説明します。モデルはアクションを実行し、即座に報酬を受け取り、それに応じて状態を変更しますが、学習者はその場でモデルを更新します。講師は、強化学習がどのように機能するかを説明するために、掃除機問題、三目並べ、制御問題などの簡単な例を紹介します。三目並べや掃除機の問題では、モデルが最終状態に達したときにのみ報酬が与えられますが、制御の問題では、自動化された環境でロボットや機械を制御する方法を学習する必要があります。

  • 00:10:00 このセクションでは、スピーカーは、フィールドでの制御の古典的な問題であるロボット ポール バランス カーのコンテキストでの強化学習について説明します。目的は、単純な物理エンジンまたは物理ロボットを使用して、車を直立状態に保つことです。システムはまばらな報酬を使用します。与えられる唯一の報酬は、カートがレールから落ちた場合、またはポールが垂直になった場合です。学習の目標は、このペナルティをできるだけ長く回避することによって報酬を最大化することです。次にスピーカーは、強化学習を使用してスタントを実行するように訓練された遠隔操作ヘリコプターのデモンストレーションを紹介します。このヘリコプターは、教師あり学習から始まり、補助目標と報酬形成を追加します。

  • 00:15:00 このセクションでは、スピーカーは、強化学習が深層学習のゲームをどのように変えたかについて説明します。彼は、AlphaGo の前に、研究者は Atari ゲームを使用してアルゴリズムをピクセルから学習させたと指摘しています。彼らは、深層強化学習と呼ばれるニューラル ネットワークを作成し、システムがさまざまなゲームをプレイすることを学習できるようにしました。これは強力な概念です。なぜなら、研究者はディープ ニューラル ネットワークを使用して状態からアクションへのマッピングを学習したからです。これをポリシーと呼びます。強化学習には、主に 3 つの問題があります。微分不能な損失、クレジットの割り当ての問題、探索と搾取です。

  • 00:20:00 このセクションでは、スピーカーは、環境内の微分不可能な機能の問題や、探索と活用のバランスなど、強化学習の課題について説明します。環境から実際の報酬を受け取るのが遅れることは、別の問題です。これは、以前のどのアクションが最終結果に貢献したかを認識する必要があるためです。講演者はまた、車の運転を学ぶ際に直面する課題の例を提供します。そこでは、ブレーキをかけることに対する即時の報酬が、その後の衝突との誤った関連付けにつながる可能性があります。このソリューションでは、以前のアクションに報酬を分配し、どのアクションがポジティブまたはネガティブな結果につながったかを学習する必要があります。

  • 00:25:00 このセクションのビデオでは、強化学習におけるクレジット割り当ての問題を紹介しています。これには、世界とやり取りしながら報酬を最大化するニューラル ネットワークの重みを決定することが含まれます。このビデオでは、報酬関数、状態遷移、およびポリシーがニューラル ネットワークの環境をどのように決定できるかを説明しています。最も単純なランダム検索から始めて、この問題を解決するための 3 つのアプローチを示します。人口ベースのブラック ボックス最適化手法の概念も紹介され、この手法を「Frostbite」と呼ばれる Atari ゲームにうまく適用した例が紹介されています。
     
  • 00:30:00 このセクションでは、講師が強化学習とクレジット割り当て問題に使用されるさまざまな手法について説明します。彼らは、基本的なアプローチとしてランダム検索から始めることを推奨しています。これは、いくつかの単純なゲームでうまく機能します。ただし、より深い強化学習パイプラインでは、方策勾配や Q 学習などのより複雑な方法が一般的です。ポリシー勾配は、最後の総報酬に基づいて、一連の軌道の各ステップに報酬を割り当てようとします。これは直感に反するように思えるかもしれませんが、複数の軌跡にわたって平均化され、深層学習パイプラインの一部が微分可能でない状況でうまく機能します。

  • 00:35:00 このセクションでは、ポリシー勾配の概念と、勾配の推定を通じて予想される最終的な報酬を最適化するためにそれらを使用する方法について説明します。このアルゴリズムでは、多数の軌跡をサンプリングして勾配を推定し、これらの各アクションをパイプラインの残りの部分で追跡し、最終的な報酬に、サンプル内の各軌跡のそのアクションの確率の対数の勾配を掛けます。この勾配の推定は、さらなる逆伝播に使用できます。このアルゴリズムは、AlphaGo と AlphaZero で使用されています。

  • 00:40:00 このセクションでは、講演者は割引報酬を最適化するために使用される強化学習の一般的なアルゴリズムである Q 学習について説明します。割引報酬は、ポリシーがさまざまな状態で特定のアクションを選択した場合に受け取る総報酬です。 Q ラーニングでは、再帰関数を使用して、ポリシーのアクションに基づいて各状態の割引報酬を計算します。次に、この計算に基づいて、割引された報酬を最大化する最適なポリシーが決定されます。スピーカーは、掃除機の世界の簡単な例を使用して、Q ラーニングがどのように機能するかを示します。

  • 00:45:00 このセクションでは、強化学習における最適ポリシーと最適値関数の概念について説明します。最適ポリシーは特定の状態の最大値につながりますが、最適値関数はそのポリシーの値関数です。ただし、これらの値は計算が難しいことがよくあります。次にスピーカーは、Q と呼ばれる関数の観点から最適ポリシーと最適値関数を再定義する Q 学習アルゴリズムを紹介します。Q は、取られたアクションから生じる次の状態の Q の割引値を乗じた即時報酬として定義されます。現在の状態で。 Q の循環定義により、Q 関数を作成し、値を入力することで最適かどうかを尋ねることができます。

  • 00:50:00 このセクションでは、スピーカーは、Q 学習に最適な Q 関数を見つける方法として、反復によって再帰方程式を解く方法について説明します。彼は、スカラー関数を使用して再帰関係を単純化し、反復計算を使用して安定した状態/解を見つけることができることを示しています。同様に、Q 学習では、最初の Q 関数がランダムに初期化され、次に再帰関係がプログラムとして適用され、再帰関係によって提供される値に基づいて Q 関数が更新されます。 Q 関数の値は、状態、アクション、報酬、または後続の状態が発生した環境との相互作用のたびに更新され、各後続の状態の最大値を使用して Q 関数が更新されます。

  • 00:55:00 このセクションでは、Q 値を表す大きな数値テーブルを学習する Q 学習アルゴリズムについて説明します。このアルゴリズムは、各状態で即時の報酬を観察し、同じ軌跡を繰り返すことでそれを開始状態に伝播することによって機能します。状態空間は、イプシロン貪欲な探索を通じて探索されます。このプロセスでは、状態をランダムに探索する確率がわずかながら最善のポリシーに従います。その後、ディープ Q 学習が導入されます。これには、Q 値関数を学習するためのニューラル ネットワークの実装が含まれます。バックプロパゲーションにより、観測された即時報酬と後続状態からの情報でネットワークが更新されます。最後に、ドキュメンタリー「AlphaGo」の推奨に従って、ビデオの残りの 30 分で AlphaGo の仕組みの説明が約束されています。

  • 01:00:00 このセクションでは、スピーカーが囲碁について説明し、AlphaGo に関する一般的な誤解を解消します。囲碁の分岐要素が高いのは事実ですが、囲碁を難しくしているのは木のサイズだけではありません。最適な移動戦略を見つけるためにツリーを深く調べることも、やりがいのある側面です。スピーカーは、現在の状態からすべての可能な未来を列挙するために使用されるミニマックス アルゴリズムなど、囲碁ゲームへの古いアプローチについても説明します。

  • 01:05:00 このセクションでは、ミニマックス アルゴリズムを近似するために、ゲーム ツリーを迅速かつ効率的に探索する方法であるモンテカルロ ツリー探索について説明します。この方法では、ランダムに移動を選択し、強化学習の観点から状態の値を推定するロールアウトを実行します。講演者は、モンテカルロ ツリー検索がロールアウトとローカル ツリーの記憶を組み合わせて、全体を調査することなくツリーの有望な領域を構築する方法について話します。基本的なアルゴリズムには、ノードの展開、ロールアウトの実行、値の逆伝播が含まれ、リーフに続くすべてのノードの確率が更新されます。この方法はうまく機能し、機械学習やニューラル ネットワークは一切使用しません。

  • 01:10:00 このセクションでは、AlphaGo と AlphaZero が囲碁に適用された強化学習の例である方法について説明します。 AlphaGo は、ポリシー ネットワークとバリュー ネットワークの 2 つのニューラル ネットワークを使用して囲碁をプレイします。ポリシー ネットワークはボードの状態をアクションにマッピングし、バリュー ネットワークは状態をその状態からの勝利の可能性にマッピングします。彼らは模倣学習を使用して、人間のゲームから学習することでこれらのネットワークをトレーニングし、その後、方策勾配強化学習を使用したセルフプレイを通じて改善します。実際のプレイ中、AlphaGo は値とポリシーのネットワークを使用してモンテカルロ木探索を使用して移動します。 AlphaZero は、人間の情報を一切使用しない新しいバージョンですが、セルフプレイを通じて完全にゲームの理解を深めます。 AlphaZero は、ポリシー ネットワークとバリュー ネットワークを 1 つのネットワークに結合し、モンテカルロ ツリー検索をポリシー改善演算子として使用し、バッチ正規化による残差接続を追加してパフォーマンスを向上させます。

  • 01:15:00 このセクションでは、「双頭の怪物」の概念について説明します。ネットワークには、ポリシーと値の出力の両方から勾配を取得する共有の最下層のセットがあります。トレーニング中、MCTS 原則はポリシー改善オペレーターとして使用されます。つまり、最初のポリシーから開始し、MCTS を使用して自身と対戦させ、結果のポリシーを MCTS として観察します。この観察された改善ステップは、トレーニング目標としてネットワークに与えられます。さらに、残差接続と優れた正規化の組み合わせがニューラル ネットワークのトリックとして使用され、特にバッチ正規化との組み合わせで非常にうまく機能する、ますます深くなるニューラル ネットワークの学習に向けて徐々に容易になります。

  • 01:20:00 このセクションでは、スピーカーは、深層強化学習ネットワークを適切にトレーニングするための重みの初期化とデータの標準化の重要性について説明します。講演者は、入力がゼロ平均と分散 1 で標準化されるように重みを初期化すると、バックプロパゲーション中の勾配の動作が改善されることを示唆しています。バッチ正規化は、バッチ内のすべてのインスタンスを調べ、平均と標準偏差を計算し、それらを標準化するため、この標準化を支援する便利なレイヤーです。これは、トレーニングを高速化し、より深いネットワークをトレーニングするのに役立ちます。講演者は、バッチ正規化を使用したトレーニングにおける AlphaGo と AlphaZero の成功を挙げています。

  • 01:25:00 このセクションでは、リアルタイム戦略ゲームに適用される機械学習における DeepMind の最新のブレークスルーである AlphaStar の開発についてスピーカーが説明します。 DeepMind の AlphaGo によって「解決済み」と見なされていた囲碁とは異なり、StarCraft は、その多様なアクション スペース、不完全な情報、およびゲーム ツリーの欠如により、機械学習に独自の課題をもたらしました。 AlphaStar は、Transformer torso、ディープ LSDM コア、ポインター ネットワーク、マルチエージェント学習などの手法を組み合わせて使用します。 DeepMind は AlphaStar がどのように機能するかの詳細をまだ公開していませんが、世界レベルのスタークラフト プレイヤーに対するその能力のデモンストレーションは印象的であり、この分野における現在の最先端技術を表しています。

  • 01:30:00 このセクションでは、スピーカーは埋め込みのように機能し、ニューラル ネットワークがユニット間の関係の学習を開始できるようにするトランスフォーマーの使用について説明します。これは、ニューラル ネットワークが特定のユニット間の関係 (ゲームのナビゲーションなど) を推論できるようにするため、重要です。次にスピーカーは、強化学習がシーケンシャル サンプリングでどのように機能するか、および自己回帰ポリシー ヘッドがより首尾一貫した効率的な一連のアクションを作成するのにどのように役立つかを説明します。最後に、スピーカーは、マルチエージェント学習の概念と、プレイヤーが簡単な戦略を打ち負かすのを防ぐためにどのように使用されるかを説明します。

  • 01:35:00 このセクションでは、DeepMind がゲーム StarCraft をプレイするために開発した AI システムである AlphaStar をめぐる論争について話します。 AlphaStar は StarCraft のプロ プレイヤーを打ち負かすことに成功し、AI システムが実際に人間のようなパフォーマンスを示しているのか、それとも人間が持っていない能力を利用しているのかについての議論につながりました。 AlphaStar の主な利点の 1 つは、カメラ ビューを常に調整しなければならない人間のプレイヤーとは異なり、ボード全体を一度に表示できることです。さらに、AlphaStar は 1 分間に約 600 回のアクションに制限されていましたが、これらのアクションは、ノイズの多い 1 分間に最大 800 回クリックできる人間のプレイヤーのアクションよりも高品質でした。ただし、AlphaStar の弱点の 1 つは、ゲーム中に遭遇する新しい戦略にうまく対応できないことでした。これは、認知への洞察を提供できるシステムの中心的な問題です。
13 Reinforcement Learning: Policy Gradients, Q Learning, AlphaGo, AlphaStar (MLVU2019)
13 Reinforcement Learning: Policy Gradients, Q Learning, AlphaGo, AlphaStar (MLVU2019)
  • 2019.03.21
  • www.youtube.com
slides: https://mlvu.github.io/lectures/71.Reinforcement%20Learning.annotated.pdfcourse materials: https://mlvu.github.ioToday we discuss the most generic ab...
 

14 レビュー: 誘導バイアス、アルゴリズムバイアス、機械学習の社会的影響 (MLVU2019)



14 レビュー: 誘導バイアス、アルゴリズムバイアス、機械学習の社会的影響 (MLVU2019)

ビデオの最初の部分では、損失関数、深層学習システム、帰納的バイアスとアルゴリズム バイアス、機械学習の未解決の問題など、機械学習のトピックを包括的に確認します。講演者は、データ サイエンス プロセスにおける方法論と実際のユース ケースの重要性を強調し、先延ばしを研究して克服するためのヒントを提供します。スピーカーは、機械学習の概念の理解を深めるための戦略についても説明し、さらに学習するためのリソースを提供します。最後に、このビデオでは、機械学習モデルにおける一般化の問題と、モデルのパフォーマンスを向上させるための帰納的バイアスの重要性が強調されています。

ビデオの 2 番目の部分では、帰納的バイアス、アルゴリズム バイアス、機械学習の社会的影響など、機械学習に関連するいくつかの問題について説明します。帰納的バイアスをニューラル ネットワークに組み込んで、因果関係、構成性、および一般化の問題を解決できます。ただし、このアプローチには、モデル化されていない変数に対するロバスト性の低下などの制限もあります。機械学習モデルがデータの偏りを強化すると、アルゴリズムの偏りが永続する可能性があります。これは、顔認識アルゴリズムが有色人種を認識できない場合や、米国の司法制度で使用されているアルゴリズムが黒人に偏っている場合などに問題になる可能性があります。これらのシステムの責任ある開発は、偏見を永続させず、意思決定プロセスの公平性を促進するために重要です。

  • 00:00:00 ビデオのこのセクションでは、講演者は機械学習コース全体でカバーされるトピックの復習を提供します。これには、分類や回帰などの標準的なタスクを含む機械学習の基本的なレシピ、インスタンスと機能の選択、モデル クラスを作成し、インスタンスと機能に適合する適切なモデルを検索します。講演者は、方法論の重要性と、データをトレーニング セットとテスト セットに分割してテスト セットの使い過ぎを避けるという考え方を強調しています。彼は、現実世界のユース ケースを念頭に置き、そのユース ケースを反映してデータ サイエンス プロセスで意思決定を行うことの重要性を強調しています。講演者は、試験の戦略と、機械学習の現状と将来の影響についての見通しも提供します。

  • 00:05:00 このセクションでは、スピーカーは機械学習で使用できるさまざまな損失関数について説明し、精度とその制限から始めます。シグモイド関数を使用してモデルの出力をクラス全体の確率として解釈し、最尤原理と交差エントロピー損失を使用してそれらの確率を最適化するロジスティック回帰損失関数が提示されます。説明するその他の損失関数には、最小二乗、エントロピー、ソフト マージン SVM などがあります。最後に、スピーカーは、複雑なモデルの勾配を計算するために使用される逆伝播のアルゴリズムを紹介します。これは、複雑なモデルをモジュールの構成に分割し、連鎖則を使用してローカル導関数の積を取得することによって行われます。

  • 00:10:00 ビデオのこのセクションでは、講師が深層学習システムの基礎と、テンソルを使用して滑らかな微分可能な関数の勾配を計算する方法について説明します。また、隠れ変数モデルについても話し、隠れ変数の分布を見つけるための期待値最大化アルゴリズムについても説明しています。次に、ニューラル ネットワークを含む隠れ変数モデルであるジェネレータ ニューラル ネットワークについて説明します。講師は、敵対的生成ネットワークと変分オートエンコーダーを使用して、データからパラメーターをフィッティングする方法について説明します。最後に、デシジョン ツリー モデルと回帰ツリー モデル、およびリカレント ニューラル ネットワークやマルコフ モデルなどのシーケンシャル データとモデルについて説明します。

  • 00:15:00 このセクションでは、講演者は機械学習における帰納的バイアスとアルゴリズム バイアスについて説明し、トレーニング データは常にテスト データよりも時間的に先行する必要があり、クロス検証はウォークフォワード クロス検証を使用して実行する必要があることを示唆しています。次にスピーカーは、ユーザーと映画の評価を唯一のデータ ソースとして使用するレコメンデーション システムと、このマトリックス モデルがユーザーと映画の両方にとって非常に有益である方法について触れます。最後に、スピーカーは、強化学習には探索と活用の間のトレードオフが必要であり、ドロップアウトを伴う畳み込みニューラル ネットワークは、探索と活用のジレンマを構成するのではなく、むしろオンライン ハイパーパラメーター最適化手法であると説明します。

  • 00:20:00 このセクションでは、スピーカーは、複雑なトピックについて話すとき、概念は私たちの頭の中のグラフのようなものですが、それらを説明するときはシーケンスになると説明しています。議論された概念間のより高いレベルの関係を再構築するのを助けるために、スピーカーは検索とモデルのマインドマップを作成します。モデルは、線形回帰、線形分類、ロジスティック回帰などのニューラル ネットワークの特定のインスタンスに分割され、さらに J by Ganz や v AE などのより複雑なモデルに分類されます。スピーカーは、さまざまなタイプの検索方法についても説明します。勾配降下法は最も一般的で確率的勾配降下法であり、ミニバッチ勾配降下法は特定のバリアントです。スピーカーは、ほとんどの場合、ミニバッチ勾配降下法が一般的に使用されていることに注意します。最後に、スピーカーは、機能、インスタンス、およびターゲット値に分割する基本設定や、特定の順序で個別のインスタンスを処理するシーケンス設定など、さまざまな設定とデータの処理方法について説明します。

  • 00:25:00 このセクションでは、スピーカーは、シーケンス データ、推奨システム、オンライン学習など、機械学習におけるさまざまな種類のデータ セットとタスクについて説明します。彼らはまた、情報を失うことを避けるために手動で特徴を抽出することなく、パイプラインをエンドツーエンドで構築する方法としての深層学習についても話しています。講演者は、いくつかの「商売のコツ」についてのヒントと、講義で議論されたすべての抽象的なタスクとモデルのレビューを提供します。最後に、スピーカーは試験の勉強のヒントを提供します。これには、想起、組み合わせ、および推論の 3 つのカテゴリの質問が含まれます。

  • 00:30:00 このセクションでは、講師が、今後の試験で学生が期待する可能性がある 3 種類の質問、つまり保持、組み合わせ、応用問題について説明します。彼は、生徒が先延ばしに対処するのを助けるためのいくつかのヒントを提供します。たとえば、先延ばしは完璧主義によって引き起こされることに気づき、タスクを開始するための実行可能な最小のコミットメントを見つけることです。講師はまた、進行状況を追跡し、作業を終わりのないタスクと見なさないように、プログレス バーを作成することも提案しています。最後に、彼は生徒たちに完璧主義者にならないように注意しています。

  • 00:35:00 ビデオのこのセクションでは、講演者が先延ばしを克服して生産性を向上させるためのヒントを提供します。彼が提案するテクニックの 1 つはポモドーロ テクニックです。タイマーを 25 分に設定し、その間極限まで集中して作業し、その後 5 分間休憩します。彼はまた、試験の講義内容に集中し、模擬試験を使用して次の試験の準備を迅速に行うことを提案しています。全体として、話し手は、一度に完璧を目指すのではなく、目標に向かって達成可能な小さな一歩を踏み出すことの重要性を強調しています。

  • 00:40:00 このセクションでは、講演者は機械学習の概念の理解を深めるための戦略を共有します。すべてを徹底的に読むのではなく、知識のギャップを特定するための簡単なパスを作成し、それらの特定の領域に焦点を当てることを彼は提案しています。このプロセスを支援するために、彼は学習中にキーワード リストを作成し、後で明確にするために参照することをお勧めします。彼はまた、どのトピックに焦点を当てるかの優先順位を付けるために独自の試験問題を考え出すように学生にアドバイスし、資料についてさまざまな視点を得るために複数の情報源から読むことを提案しています.最後に、さらなる学習のための包括的なリソースとして、Google Machine Learning Crash Course を推奨しています。

  • 00:45:00 このセクションでは、発表者が機械学習の未解決の問題、つまり因果関係、構成性、一般化について説明します。相関関係は因果関係を意味しないため、因果関係は最新の機械学習手法にとって難しい問題です。因果関係を特定するには介入が必要です。これは、実験を実施できる強化学習環境を通じて行うことができます。ただし、倫理的または実際的な理由により実験が不可能な場合は、背景知識を使用してモデルに注入することができます。プレゼンターは、世界で考えられる原因をモデル化するために小さなグラフを描くことについても言及しています。

  • 00:50:00 このセクションでは、スピーカーは帰納的バイアスとアルゴリズム バイアスについて話し、人間の推論を機械学習モデルに統合する方法を探ります。彼らは、因果関係を推測する方法と、背景知識を使用して相関関係を推論する方法について説明します。また、特に再帰型ニューラル ネットワークで見られる、機械学習における構成性と一般化の問題についても説明します。講演者は、機械学習をさらに進めるために複合効果を理解する必要があることを述べて締めくくります。

  • 00:55:00 このセクションでは、講演者は、機械学習モデルの一般化の問題と、トレーニング データとわずかに異なるデータでテストした場合にどのように崩壊する傾向があるかについて説明します。これに対する解決策は、帰納的バイアスについて考えることにあります。これは、モデル空間内の特定の解に向かってバイアスをかけるために、モデルに課される暗黙的または明示的な制約を指します。講演者は、さまざまなタイプのモデルとその帰納的バイアスの例を示し、畳み込みニューラル ネットワークで見られるようなより強い帰納的バイアスがモデルの一般化能力を向上させる方法を強調します。

  • 01:00:00 このセクションでは、因果関係、構成性、および一般化の問題を解決するためにニューラル ネットワークに組み込むことができる誘導バイアスのアイデアについて説明します。背景知識をモデルに注入し、構成性を明示的に構築することにより、ネットワークは、たとえ 100 までの数字しか見ていない場合でも、数百または数千の数字を表現することを学習できます。ただし、モデルが制約されるほど、モデル化されていないものに対する堅牢性が低下します。さらに、スピーカーは、機械学習がよりエンドツーエンドの学習システムに移行し、機械学習がシステム全体に広がり、差分プログラミングまたは「ソフトウェア 2.0」と呼ばれるものにつながることを想定しています。

  • 01:05:00 このセクションでは、スピーカーは、機械学習がプログラミング言語のプリミティブになる可能性と、これがどのようにしてより大規模で予測可能なシステムにつながるかについて説明します。講演者はまた、フォントのデザインなどの創造的な芸術に対する機械学習の影響を探り、機械が創造性やデザインなどの既存の人間のプロセスを強化する知能増強に機械学習を使用できることを示唆しています。キラーロボットの開発に関する懸念に対する可能な解決策として、インテリジェントインフラストラクチャの概念も紹介されています。

  • 01:10:00 このセクションでは、話者は、首尾一貫した言語を生成し、フェイク ニュースを大規模に生成する能力を持つ GPT などの言語ジェネレーターの潜在的な危険性について説明します。懸念されるのは、この種の技術が重大な社会的影響を与える可能性があり、個人がコンテンツを操作できるようにすることで、全国的な議論や選挙に影響を与える可能性があることです.さらに、アルゴリズムの偏りの問題についても説明します。機械学習モデルは、トレーニング対象のデータの偏りを強化する可能性があり、本番環境に導入したときに悪影響を与える可能性があるためです。

  • 01:15:00 このセクションでは、スピーカーはアルゴリズムのバイアスの問題について説明します。機械学習アルゴリズムは、データに既に存在するバイアスを排除するのではなく、増幅することができます。これは、顔認識アルゴリズムが有色人種を認識できなかったり、CEO の画像の検索エンジンの結果が主に男性であるなどの例に見られるように、意図しない結果や特定のグループに有害な影響を与える可能性があります。また、スピーカーは、システムを監視し、機械学習アルゴリズムに固有のバイアスを認識することの重要性を強調しています。

  • 01:20:00 このセクションでは、講演者は、機械学習システムにおけるアルゴリズムのバイアスの問題と、それが社会に与える影響について説明します。彼は、米国の司法制度で再犯を予測するために使用された機械学習システムの事例を説明しています。これは、黒人に対する偏見があり、誤った予測につながり、社会的偏見を永続させています。彼は、これらのシステムで使用されるデータが正確であっても、機械学習に依存して人種に基づいて意思決定を行うと、人種プロファイリングにつながり、体系的な偏見を永続させる可能性があると主張しています.彼は、人種プロファイリングが正常化され、一般に受け入れられたオランダの事例を引用しています。講演者は、偏見を永続させず、意思決定プロセスにおける公平性を促進するために、機械学習を倫理的に使用することを提唱しています。

  • 01:25:00 このセクションでは、スピーカーは人種プロファイリングの問題と、それが確率の誤用とどのように関係しているかについて説明します。彼らは、検察官の誤謬の概念と、特定の条件が与えられた場合の結果の確率が、結果が与えられた場合の条件の確率と同じであると誤って仮定する方法を説明しています。話者は、予測が正確であっても、それらの予測に基づく行動が公正または道徳的であるとは限らないと主張します。さらに、民族性などの特定の属性は、他の属性と推測または関連付けることができるため、機械学習システムから人種的偏見を完全に排除することは困難であると指摘しています。最後に、スピーカーは、個人は自分自身の行動に対して責任を負うべきですが、マイクロアグレッションや不当な状況での標的化などの悪影響を与える可能性がある、同じ属性を持つ他の人の行動に対して罰せられることを許可することは根本的に不公平であると指摘します。通行止めのように。

  • 01:30:00 このセクションでは、スピーカーは、機械学習の潜在的な社会的影響と、これらのシステムの責任ある開発の必要性について説明します。機械学習が多くの決定を下しているため、欠陥のある 1 つのコンポーネントに大規模に依存するという新たな問題が生じており、中国の社会信用システムはその一例です。政治家や人間はそのようなシステムの開発に問題がないため、これらの問題に精通しているコンピュータ サイエンティスト、情報科学者、データ サイエンティストが責任を持ってこれらのシステムを構築および開発する必要があります。これらのシステムを構築する責任は、これらの分野を研究している学生にあり、スピーカーは彼らの試験と最終プロジェクトでの幸運を祈っています。
14 Review: Inductive Bias, Algorithmic Bias, Social impact of machine learning (MLVU2019)
14 Review: Inductive Bias, Algorithmic Bias, Social impact of machine learning (MLVU2019)
  • 2019.03.21
  • www.youtube.com
slides: https://mlvu.github.io/lectures/72.Review.annotated.pdfcourse materials: http://mlvu.github.ioThe final lecture. A review of everything we've learned...
 

セグメント エニシング モデル (SAM) を使用して Python で画像とビデオをセグメント化する |ヨロv5 | YOLOv8 と SAM



セグメント エニシング モデル (SAM) を使用して Python で画像とビデオをセグメント化する |ヨロv5 | YOLOv8 と SAM

このビデオでは、さまざまなタスクのために画像やビデオからオブジェクトを識別して抽出できる AI モデルである、Segment Anything Model (SAM) を紹介します。 SAM は、110 億の画像と 11 億のマスクの巨大なデータセットでトレーニングされており、さまざまなセグメンテーション タスクで強力なパフォーマンスを発揮します。このビデオでは、ローカル システムで SAM を使用するための手順を順を追って説明しています。これには、必要なパッケージをインストールする方法、トレーニング済みのモデル チェックポイントをダウンロードする方法、Python を使用して画像とビデオのセグメンテーションを実行する方法が含まれます。このビデオでは、SAM を YOLOv5 または YOLOv8 で使用して、対象のオブジェクトの周囲に境界ボックスを作成する方法も示しています。 SAM はアニメーションにも応用できる可能性があります。

  • 00:00:00 このセクションのビデオでは、Segment Anything Model (SAM) を紹介しています。SAM は Meta から最近リリースされた AI モデルで、さまざまなタスクのために画像やビデオからオブジェクトを識別して抽出することができます。 SAM は 110 億の画像と 11 億のマスクでトレーニングされており、さまざまなセグメンテーション タスクで強力なゼロ ショットの一般化を行います。このビデオでは、ユーザーが画像をアップロードして完全な画像に対してセグメンテーションを実行したり、各オブジェクトを個別にカットしたりできるデモを通じて、SAM の使用方法を示しています。ユーザーは、バウンディング ボックスの描画、マスクの追加、マルチマスキングの実行もできます。 SAM はアニメーションにも応用できる可能性があります。このビデオでは、SAM のアーキテクチャ、データ セットの可用性、およびよく寄せられる質問に関する追加情報も提供します。

  • 00:05:00 ビデオのこのセクションでは、プレゼンターがセグメント エニシング モデル (SAM) を使用して、画像内のさまざまなオブジェクトのマルチマスクを作成する方法を示します。 SAM は、1,100 万の画像と 11 億のマスクのデータセットでトレーニングされており、さまざまなセグメンテーション タスクで強力なパフォーマンスを発揮します。プレゼンターは、画像を選択し、完全な画像に対してセグメンテーションを実行し、個別のオブジェクトを切り取る方法を示します。プレゼンターは、オブジェクトの周囲に境界ボックスを描画する方法と、結果のデータをダウンロードして配布する方法も示します。このビデオは、SAM のインストールと、YOLOv5 および YOLOv8 を含む Python での使用に関する情報で締めくくられています。

  • 00:10:00 ビデオのこのセクションでは、プレゼンターは、ローカル システムでセグメント エニシング モデルを実行するための要件について説明します。これには、GPU の使用や、CUDA をサポートする Torch や Dodge Vision などの必要なパッケージのインストールが含まれます。これらは、Segment Anything Model リポジトリのクローンを作成し、pip を使用して必要なすべての依存関係をインストールする方法を示しています。このビデオでは、セグメンテーション モデルを ONNX 形式に変換する方法と、3 つの異なるバックボーン サイズの事前トレーニング済みモデル チェックポイントをダウンロードする方法についても説明しています。次に、プレゼンターは、モデルを使用して画像とビデオをセグメンテーションする方法を示します。ビデオには、各タスクの詳細なステップバイステップの手順も含まれているため、視聴者は簡単に理解できます。

  • 00:15:00 ビデオのこのセクションでは、プレゼンターは最初に必要なすべてのライブラリをインポートします。これには、Google アプリ ノートブックに入力および出力画像を表示するための Matplotlib が含まれます。次に、ドライブからサンプル画像をダウンロードし、複数の人が建物を背景に歩いているサンプル画像を表示します。次に、ダッシュ エッジを含む事前トレーニング済みのモデル チェックポイントを Google アプリ ノートブックに読み込み、セグメント エニシング モデル自動マスク ジェネレーターを画像に適用してセグメント化します。プレゼンターは、SMAM が画像をスキャンし、提供されたポイントに基づいてセグメント化するために使用する画像の側面ごとにポイントを提供します。セグメンテーションの精度を高めるために、0.9 の予測 IOT しきい値が設定されています。

  • 00:20:00 ビデオのこのセクションでは、プレゼンターが、Segment Anything Model (SAM) を使用して、Python を使用して画像とビデオのオブジェクト セグメンテーションを実行する方法を示します。これらは、IU スケジュールを調整して精度を高め、出力内のジャンクの量を減らす方法を示しています。セグメンテーション モデルをサンプル画像に適用し、人物、建物、樹木を正確にセグメント化する方法を示します。次に、同じモデルを使用して、メタ セグメンテーション パッケージをインストールし、Google ドライブからサンプル ビデオをダウンロードして、サンプル ビデオをセグメント化します。次に、プレゼンターはコードを GitHub リポジトリからコピーしてビデオに適用し、ビデオに SAM を効果的に実装します。

  • 00:25:00 このセクションでは、スピーカーはセグメント エニシング モデル (SAM) リポジトリについて説明します。このリポジトリには、バックボーン サイズが異なる 3 つの異なるモデルが含まれており、ユーザーはモデル名を定義して、実装したいビデオを呼び出すことができます。次にスピーカーは、既存のパッケージとサンプル イメージを使用して、SAM を YOLOv5 または YOLOv8 と統合するために必要なコードを実行します。講演者は、SAM を使用して建物、樹木、車のセグメンテーションを実行し、カラー コードを使用して出力のノイズを除去する方法を実演します。講演者は、さまざまなセグメンテーション モデルのバージョンについても説明し、各モデルのバックボーン サイズが異なることを示しています。このデモンストレーションでは、最小の YOLOv8 Nano モデルの精度と速度が強調されています。

  • 00:30:00 このセクションでは、講演者は、YOLOv8 でセグメント エニシング モデル (SAM) を使用してセグメンテーションを実行し、関心のあるオブジェクトの周りに境界ボックスを作成する方法を示しています。人物を囲むバウンディング ボックスを表示し、画像のセグメンテーションも行うことで、モデルの機能を実証します。スピーカーは、YOLOv8 と SAM の統合を強調し、視聴者に別れを告げて、ビデオ チュートリアルを締めくくります。
Segment Images & Videos in Python using Segment Anything Model (SAM) | YOLOv5 | YOLOv8 and SAM
Segment Images & Videos in Python using Segment Anything Model (SAM) | YOLOv5 | YOLOv8 and SAM
  • 2023.04.13
  • www.youtube.com
#SAM #segmentation #computervision #yolo #yolov8 #python #pytorch Segment Images & Videos in Python using Segment Anything Model (SAM) | YOLOv5 | YOLOv8 and ...
 

YOLOv8 コース - YOLOv8 と Flask を使用したリアルタイム オブジェクト検出 Web アプリケーション - Webcam/IP カメラ


YOLOv8 コース - YOLOv8 と Flask を使用したリアルタイム オブジェクト検出 Web アプリケーション - Webcam/IP カメラ

YOLOv8 コースは、YOLOv8 と Flask を使用してリアルタイム オブジェクト検出 Web アプリケーションを作成する方法を視聴者に案内する一連のチュートリアルです。チュートリアルでは、Python や PyCharm などの必要なソフトウェアのインストール、仮想環境の作成、パッケージのインストール、画像や Web カメラでのオブジェクト検出のテストについて説明します。チュートリアルでは、テンソルから整数への出力の変換、検出されたオブジェクトのラベル付け、検出された出力ビデオの保存についても説明します。視聴者は、YOLOv8 を Flask と統合する方法と、ビデオとライブ Web カメラ フィードの両方でリアルタイム オブジェクト検出 Web アプリケーションを実行する方法を示します。

ビデオの 2 番目の部分では、プレゼンターは、個人用保護具検出用のカスタム モデルのトレーニングと推論を紹介するだけでなく、ライブ Web カメラ フィードとビデオでの物体検出のために Flask と YOLOv8 を使用して Web アプリケーションを作成する方法を示します。 Web アプリには、ホームページ、ビデオ ページ、ライブ Web カメラ フィード ページがあり、各ページに CSS スタイルが適用され、プレゼンターはプロジェクトに使用される HTML ファイルと Flask ファイルを確認します。このビデオでは、データセットのインポート、YOLOv8 モデルのトレーニング用の準備、モデルのトレーニング、結果の分析、デモ ビデオでのモデルのテストのプロセスを示します。全体として、このビデオは、リアルタイム オブジェクト検出 Web アプリケーションを開発およびテストするための包括的なチュートリアルを提供します。

プレゼンターは、個人用保護具 (PPE) データセットでトレーニングされた YOLOv8 モデルを使用する Web アプリケーションに加えられた変更についても説明します。変更には、クラス名に基づいてバウンディング ボックスとラベルの四角形に異なる色を割り当てるようにコードを変更し、バウンディング ボックスと四角形が表示されるように信頼スコアを 0.5 より高く設定することが含まれます。プレゼンターは、ビデオとライブ Web カメラ フィードで PPE アイテムの検出に成功したことを示し、コースの終わりを示します。

  • 00:00:00 次のステップは、Python と PyCharm Community Edition をダウンロードしてインストールすることです。エラーやバグ修正が含まれている可能性があるため、Python の最新リリースは推奨されません。推奨される Python 3.8 バージョンの最新リリースをダウンロードできます。 PyCharm Professional バージョンは 30 日間の無料試用版を提供しますが、チュートリアルには Community Edition で十分です。必要なソフトウェアをダウンロードしてインストールしたら、任意の名前で空のフォルダーを作成し、PyCharm で開いてプロジェクトを開始できます。

  • 00:05:00 YOLOv8 クラッシュ コースのこのセクションでは、インストラクターが Pycharm で新しい仮想環境を作成し、プロジェクトに必要なパッケージをインストールする方法を示します。講師は、新しいプロジェクトを作成し、ベース インタープリターを選択し、[パッケージ マネージャー] ウィンドウからパッケージをインストールする方法を示します。また、requirements.txt ファイルを作成して、コマンド ラインからインストールするすべてのパッケージを書き留める方法も示します。このビデオでは、YOLOv8 を使用したオブジェクト検出用に Ultralytics パッケージをインストールすることの重要性を強調しています。

  • 00:10:00 このセクションでは、インストラクターが YOLOv8 のインストール方法を示します。YOLOv8 は、独自のパッケージを持つ YOLO の唯一のバージョンです。 pip install ultralytics を使用することで、YOLOv8 をインストールできます。また、検出またはトレーニング スクリプトに変更を加える必要がある場合は、リポジトリを複製できます。次に、インストラクターは YOLOv8 を使用して、パッケージと YOLOv8 モデルをインポートし、事前トレーニング済みの重みファイルを指定して、入力画像パスを渡すことにより、画像内のオブジェクトを検出します。結果には、画像内で検出されたオブジェクトが表示されます。

  • 00:15:00 このセクションでは、新しい画像を画像フォルダーに追加して YOLO テスト スクリプトを実行することにより、新しい画像で YOLOv8 モデルをテストする方法をビデオで示します。 cv2 ライブラリをインポートして遅延を追加した後、モデルはオートバイと車を正確に検出する非常に印象的な結果を生成します。このビデオでは、さまざまな YOLO モデルを使用した場合の精度と速度の問題についても説明し、より正確な結果を得るために YOLOv8x モデルを使用することを提案しています。その後、ビデオは、新しいディレクトリを使用して Web カメラで YOLOv8 モデルをテストすることに移ります。

  • 00:20:00 ビデオのこのセクションでは、プレゼンターが「YOLOv8_webcam.py」という新しいファイルを作成します。彼らは、YOLOv8、CB2、および数学をインポートし、「cap」を「CV2.videoCapture(0)」と等しくなるように設定します。これにより、ウェブカメラで YOLOv8 を実行できるようになります。それぞれ「cap.get(5)」と「cap.get(4)」を呼び出して、フレーム レートと高さを計算します。彼らは、検出された出力ビデオを保存したいと説明しているため、CB2.VideoWriter() を使用して、出力ファイル名を「output.avi」として設定します。フレーム レートと高さを関数に渡し、"modern" を "YOLOv8" に等しく設定します。次にプレゼンターは、画像に対して「CV2.imshow('image', image)」および「CV2.waitKey(1)」を呼び出して、Web カメラが正常に動作しているかどうかをテストします。

  • 00:25:00 YOLOv8 コースのこのセクションでは、プレゼンターが Web カメラをテストし、出力ビデオが適切に保存されているかどうかを確認します。次に、YOLOv8 モデルを使用してライブ Web フィードで検出を実行し、結果を「results」という名前の変数に保存します。コードは、個々の境界ボックスを調べてパフォーマンスを確認します。各境界ボックスには、X1、Y1、X2、および Y2 の 4 つの座標があり、検出されたオブジェクトの周囲の境界ボックスをさらに処理して作成するために、テンソルから整数形式に変換されます。

  • 00:30:00 ビデオのこのセクションでは、プレゼンターが出力をテンソルから整数に変換する方法と、cv2.rectangle を使用して検出された各オブジェクトの周囲に長方形を作成する方法について説明します。境界ボックスの色と太さは、検出された各オブジェクトの開始点と終了点と共に定義されます。アプリケーションの出力は、検出されたオブジェクトの周りにバウンディング ボックスが完全に細かく描かれていることを示しています。ただし、プレゼンターは、検出されたオブジェクトごとにラベルと信頼スコアも表示する必要があると述べています。現在、信頼スコアはテンソル形式で表示されていますが、発表者は mat.c を使用して整数に変換する予定です。

  • 00:35:00 ビデオ チュートリアルのこのセクションでは、インストラクターが、検出されたオブジェクトに信頼スコアを追加し、それらを整数に変換し、クラス ID に従ってラベルを付ける方法を視聴者に示します。クラス ID は、オブジェクトのタイプによって決まります。0 は人、1 は自転車、2 は車です。インストラクターは、ラベルの周りに四角形を作成し、出力検出を output.avi という名前のファイルに保存する方法も示します。視聴者はライブ検出をフレームごとに見ることができ、インストラクターは画面をクリックしてプロセスを停止する方法を示します。インストラクターは出力ビデオ ファイルも表示し、結果が期待どおりであることを確認します。最後に、インストラクターは、次のチュートリアルで、Windows で YOLOv8 を実行し、結果を共有することを発表しました。

  • 00:40:00 YOLOv8 コースのこのセクションでは、作成者が YOLOv8 事前トレーニング済みの重みを使用して、サンプル ビデオでオブジェクト検出を実行する方法を示します。目標は、COCO データセットの一部である自転車と人の両方を検出することです。作成者は、スクリプトを実行してフォルダを指定されたビデオ フォルダにリダイレクトする方法を示し、自転車、人、および信号機などの他のオブジェクトを正常に検出します。次に、作成者は、検出された出力ビデオが選択したフォルダーに保存され、検出されたオブジェクトの周囲の境界ボックスにラベルと信頼スコアが表示されていることを示します。すべてのコードを含むビデオ検出関数が作成され、最後のアプリ ドット Pi という名前のファイルが作成されます。

  • 00:45:00 ビデオのこのセクションでは、スピーカーが YOLOv8 を Flask と統合してリアルタイムのオブジェクト検出 Web アプリケーションを作成するために必要な手順について説明します。最初のステップは、pip install を使用して行う Flask のインストールです。次に、スピーカーは必要なライブラリをインポートし、Flask を初期化します。次に、入力ビデオ ファイル パスを受け取り、検出されたオブジェクトの周囲にバウンディング ボックスを含む出力を生成する、generate frame と呼ばれる関数を作成します。最後に、スピーカーは画像をバイトとしてエンコードし、削除キーボードを使用して個々のフレームをビデオに変換する方法について説明します。最終結果は、検出されたオブジェクト、ラベル、および信頼スコアの周りに境界ボックスを持つ個々のフレームです。

  • 00:50:00 このセクションでは、動画作成者が YOLOv8 を Flask と統合してリアルタイムのオブジェクト検出 Web アプリケーションを作成する方法を説明します。このビデオでは、フレームのエンコードとイメージのバイトへの変換を示し、続いて個々のフレームをループして検出し、後続のフレームを表示します。ビデオでは、means-type を使用してビジュアル フレームを置き換える方法を紹介していますが、コンテンツ タイプは後続のフレームを表示するために使用されます。このビデオには、ビデオ ファイルが検出用の入力として渡されるデモが含まれており、検出されたオブジェクトの周囲に境界ボックスが作成されます。このシナリオでは、人、自転車、信号機です。このビデオは、次のチュートリアルでライブ Web カメラ フィードの検出について説明し、Fly Fast API を作成することで締めくくられています。

  • 00:55:00 このセクションでは、ライブ Web カメラ フィードで YOLOv8 リアルタイム オブジェクト検出 Web アプリケーションを実行する方法をプレゼンターが実演します。スクリプトでビデオ パスを 0 に変更すると、ライブ Web カメラ フィードでプログラムを実行できます。新しい URL が作成され、Flask アプリケーションにリンクされ、ライブ Web カメラ フィードのリアルタイム オブジェクト検出が可能になります。発表者は、プログラムがライブ フィードから人、自転車、信号機などのオブジェクトを正確に検出できることを示しています。さらに、ビデオ パスはビデオ URL に戻され、プログラムはビデオ内のオブジェクトを検出する能力も示します。

  • 01:00:00 このセクションのビデオ チュートリアルでは、フロントエンド デザインに HTML と CSS を使用し、バックエンド デザインに Flask を使用して、完全な HTML Web ページを作成することに焦点を当てています。 Web アプリは、ホームページ、ビデオ ページ、ライブ Web カメラ フィード ページの 3 つの異なるページで構成されます。ホームページには、さまざまなプロジェクトのサンプル結果を含むヘッダー、コンテンツ、およびフッターがあります。動画ページでは、ユーザーは動画をアップロードし、その動画で YOLOv8 検出を実行できます。ライブ Web カメラ フィード ページにより、ユーザーはライブ Web カメラ フィードで検出を行うことができます。このビデオでは、Flask アプリのドット パイル ファイルと 3 つの HTML ページも紹介しています。

  • 01:05:00 このセクションのビデオ チュートリアルでは、ユーザーが Flask フォームを使用してオブジェクト検出モデルにビデオ ファイルをアップロードできるようにする方法について説明します。このチュートリアルではバリデーターを使用して、ユーザーがビデオ ファイルを正しい形式 (MP4 または .avi) でアップロードしていることを確認します。アップロードされたビデオ ファイルのファイル パスは、クラス フォームを使用して file 変数に格納されます。このチュートリアルでは、入力ビデオ ファイル内のオブジェクトを検出するために使用されるフレーム生成機能も紹介します。入力ビデオ ファイルは静的ファイル フォルダーに保存され、ユーザーは [送信] ボタンをクリックして検出のためにビデオ ファイルを送信できます。

  • 01:10:00  YOLOv8 コースのこのセクションでは、YOLO Dash ビデオ ファイルにある検出機能に焦点を当てます。ビデオ縮小機能は方向を提供し、オブジェクト検出により、検出されたオブジェクトの周りにラベルと信頼スコアを含む出力バウンディング ボックスがあります。現在のフレームは、Flask の入力画像またはフレームの必要に応じて、バイトに変換されます。アプリのウェブカメラにアクセスまたはリダイレクトする場合、フレームの生成 Web 関数が呼び出されます。セッション ドット クリアにより、入力ビデオ ファイルがセッション ストレージから削除され、以前のビデオまたは入力ファイルではなく、新しいビデオまたは入力ファイルで検出が行われます。もの。アップロード ファイル フォーム インスタンスが作成され、ビデオ ファイル パスがセッション ストレージ変数に保存されます。セッション ストレージは後でクリアされ、新しいビデオで検出が行われるようになり、アプリが以前のビデオまたは入力ファイルを検出できなくなります。

  • 01:15:00 このセクションでは、スピーカーは、Flask と Webcam/IP カメラを使用した Web アプリケーションでのリアルタイム オブジェクト検出のための YOLOv8 コースで使用されるコードと HTML ファイルについて説明します。講演者は、ビデオ パーツをセッション ストレージに保存し、ビデオ パスを呼び出してビデオ内の検出を行う方法を示しました。また、プロジェクトの Flask アプリ ドット Pi ファイルも表示されます。 HTML ファイルは、言語、ページのタイトル、本文、およびヘッダーと、背景色、フォント ファミリー、テキストの色、高さ、その他の要素などのプロパティで構成されます。さらにスピーカーは、角の丸い長方形を作成する際のボーダー半径の目的を説明します。

  • 01:20:00 このセクションでは、スピーカーが構築した Web アプリケーションのメイン ページのデモを行っています。まず、ユーザーをビデオ フィード ページに誘導する Dash フロント ページの URL を表示します。このページでは、ビデオをアップロードして物体検出を行うことができます。次に、ライブ Web カメラ フィードで検出が行われる UI.html ページを表示します。また、サンプルの結果ページも示しており、保存して HTML に渡した 3 つの画像を示しています。最後に、クリックするとユーザーを YouTube チャンネルにリダイレクトするフッターを表示します。デモンストレーション全体を通して、スピーカーは各ページに使用した CSS スタイルを示します。

  • 01:25:00 このセクションでは、講演者が YOLOv8 と Flask を使用したリアルタイムのオブジェクト検出 Web アプリケーションをライブ Web カメラ フィードとビデオで実演します。 CSS スタイルが Web ページに追加され、スピーカーは Python クラス キャップ ファイルを実行して、ビデオとライブ Web カメラ フィードの検出を行います。ユーザーは、ビデオ ファイルを入力して検出を取得することもできます。 YOLOv8 モデルは人、自転車、信号機などのオブジェクトを検出し、ラベルと信頼スコアを含む境界ボックスを作成できるため、結果は印象的です。講演者は、ライブ Web カメラ フィードでの検出も正確に機能していることを示して締めくくります。

  • 01:30:00 ビデオのこのセクションでは、プレゼンターが、YOLOv8 を使用してビデオとライブ Web カメラ フィードの両方でオブジェクトを検出できる Flask Web アプリケーションを紹介します。このアプリには、ホームページ、任意の入力ビデオで検出を実行できるビデオ ページ、およびライブ Web カメラ フィード ページがあります。次にプレゼンターは、7 つの異なるクラスの 3235 枚の画像で構成される Roboflow で利用可能なデータセットを使用して、個人用保護具 (PPE) の検出に YOLOv8 を使用する方法のデモンストレーションに移ります。プレゼンターは、YOLOv8 によって検出された実際のオブジェクトを反映するように、それに応じてクラスの名前を変更します。次に、プレゼンターは、不均衡なクラス分布を含むデータセット統計を表示します。データセットに使用される分割比率は 70:20:10 です。最後に、発表者は YOLOv8 モデルを Collab ノートブックにインポートする方法を示します。

  • 01:35:00 YOLOv8 コースのこのセクションでは、インストラクターが必要なライブラリをインポートして GPU へのアクセスを確認する方法を説明します。 OS ライブラリはさまざまなファイルに移動するために使用され、画像ライブラリは Google Colab ノートブックで入出力画像を表示するために使用されます。次に、PPE データ検出データセットが Roboflow からインポートされ、新しく作成された「データ セット」フォルダーにダウンロードされます。 YOLOv8 モデルは pip install ultralytics を使用してインストールされ、その機能は import ultralytics を使用してインストールと操作についてチェックされます。

  • 01:40:00 ビデオのこのセクションでは、プレゼンターが YOLOv8 モデルをトレーニングするために PPE 検出データセットをダウンロードして準備する方法を示します。データセットは、テスト セットと検証セット、および各オブジェクトのクラス名を含む data.yml ファイルで構成されます。フォルダーをダウンロードして名前を変更した後、プレゼンターはコマンド ライン インターフェイスを使用して、モデルのトレーニング、検証、およびテストをローカルに実装します。トレーニングが完了するまでに約 3 時間かかります。プレゼンターは、最適なウェイト ファイルと 90 番目のワークの最後のウェイトを含むトレーニング結果を示します。モデルは、7 つの異なるクラスの PPE オブジェクトでトレーニングされました。

  • 01:45:00 このセクションでは、各クラスの平均精度と混同マトリックスを含む、YOLOv8 モデル トレーニングの結果が分析されます。トレーニングと検証の損失も調べられ、損失値はトレーニング プロセス全体で継続的に減少します。検証バッチのモデル予測も表示され、モデルがうまく機能していることを示しています。カスタム オーダーの検証には、モデルの最適な重みが使用され、平均精度スコアは高いままです。最後に、カスタム モデルを使用してラベルを検出するために、画像に対して推論が実行されます。全体として、YOLOv8 モデルは、リアルタイムのオブジェクト検出でさまざまなクラスを検出する際にうまく機能しているように見えます。

  • 01:50:00 このセクションでは、ビデオ作成者が、画像のテスト データセットとデモ ビデオで YOLOv8 モデルを実行する方法を示します。テスト データセットの結果は「予測」ファイルに保存され、作成者は「ipython.display」パッケージを使用して最初の 5 つの画像の出力を表示します。結果は、モデルが防護板、ジャケット、手袋、防塵マスク、防護服、ヘルメットなどのオブジェクトを正しく検出できることを示しています。次に、作成者はデモ ビデオをダウンロードしてモデルに渡し、モデルが保護ジャケットとハンドメイドを検出できることを示す出力を表示します。動画の作成者は、トレーニングと予測に GPU を使用すると時間がかからないという利点についても言及しています。

  • 01:55:00 このセクションでは、プレゼンターがデモ ビデオで YOLOv8 モデルをテストして、そのパフォーマンスを確認します。モデルは保護用のヘルメットとジャケットを検出できますが、手袋は検出できません。プレゼンターは、出力されたデモ ビデオをダウンロードし、それぞれでモデルがどのように機能するかを示します。このモデルは、テストされたすべてのデモ ビデオで保護用のハンドメイドとジャケットを検出できます。次に、プレゼンターはトレーニング済みのモデルに最適な重みファイルを個人用保護具にダウンロードし、それを Flask と統合してリアルタイムのオブジェクト検出 Web アプリケーションにする方法について説明します。

  • 02:00:00 このセクションでは、発表者が個人用保護具 (PPE) データセットでトレーニングされた Yellow V8 モデルを使用する Web アプリケーションのコードに加えられた変更について説明します。 PPE データセットには 7 つの異なるクラスがあり、それらの名前がリストされています。ベスト ウェイト ファイルは、80 の異なるクラスで構成される Coco データ セットから ppe.pt に名前が変更されました。プレゼンターは、クラス名に基づいて境界ボックスとラベルの四角形に異なる色を割り当てる機能を追加しました。プレゼンターは、信頼スコアに制限を設定し、スコアが 0.5 を超える場合にのみ境界ボックスと四角形が表示されると述べました。 Flask app.py と HTML ファイルは同じままです。最後に、プレゼンターは、PPE データセットと Web カメラでのビデオ検出の結果を示します。アプリケーションは、ビデオ内の PPE アイテムを正常に検出できます。

  • 02:05:00 このセクションでは、ライブ Web カメラ フィードを使用して、YOLOv8 モデルの成功した検出機能をリアルタイムで実演します。このモデルは、保護用ヘルメットと防塵マスクを着用している人物を正確に検出でき、手袋とシールドがないことを考慮に入れています。結果は満足のいくものとみなされ、コースの終わりを示します。
YOLOv8 Course - Real Time Object Detection Web Application using YOLOv8 and Flask - Webcam/IP Camera
YOLOv8 Course - Real Time Object Detection Web Application using YOLOv8 and Flask - Webcam/IP Camera
  • 2023.04.07
  • www.youtube.com
#objectdetection #yolov8 #yolo #computervision #opencv #flask #webapplicationdevelopment #computervision YOLOv8 Crash Course - Real Time Object Detection Web...
 

YOLOv8 と DeepSORT を使用したリアルタイムのオブジェクト追跡 |車両カウント(車両の入出庫)



YOLOv8 と DeepSORT を使用したリアルタイムのオブジェクト追跡 |車両カウント(車両の入出庫)

このビデオでは、YOLOv8 と DeepSORT を使用して高速道路に出入りする車両の数をカウントするリアルタイム オブジェクト トラッキングの実装を示しています。プレゼンターは、GitHub リポジトリのクローン作成、必要なパッケージのインストール、ディレクトリの設定、追跡スクリプトの調査から始める段階的なガイドを提供します。このチュートリアルでは、両端キュー、前処理、非最大回帰、および Deep SORT 関数を使用して、一意の ID を生成し、クラス名を決定する方法について説明します。また、プレゼンターは、画面上の線を使用して車両カウント機能を追加する方法を説明し、車両の軌跡がこの線と交差するたびにカウントが増加します。 UI は、特定の関数を使用して設定されます。最後に、プレゼンターは、スクリプトの現在の出力がラインとの交点を検出し、エリアに出入りする車両をカウントする方法を示します。

  • 00:00:00 セクションでは、YOLO V8 でのディープ ソートを使用したオブジェクト トラッキングの実装のデモンストレーションを示しています。このチュートリアルでは、高速道路に出入りする車両の数をカウントするアプリケーションの作成について説明します。プレゼンターは、PyCharm IDE を使用して従うためのステップバイステップのガイドを提供し、各ステップを詳細に説明します。最初のステップは、GitHub リポジトリのクローンを作成し、必要なパッケージをインストールすることです。このビデオには、ディレクトリの設定と追跡スクリプトの調査に関するセクションも含まれています。

  • 00:05:00 ビデオのこのセクションでは、スピーカーはトラッキング ドット ファイルをセットアップし、Google ドライブから DeepSORT ファイルをダウンロードして YOLOv8 フォルダーに配置する方法を説明します。 DeepSORT ファイルは大きすぎて GitHub にアップロードできないため、提供されている Google ドライブのリンクからダウンロードする必要があります。ビデオは、ダウンロードしたファイルを抽出して適切なフォルダーに配置する方法を示しています。講演者は、サンプル ビデオをダウンロードしてスクリプトを実行する方法も示します。スクリプトは CPU でテストしているため、実行に時間がかかる場合がありますが、スクリプトの実行中に講演者はコードについて詳しく説明します。

  • 00:10:00 このセクションでは、スピーカーは両端キュー (DQ) の使用と、挿入またはポップ操作を同時に実行するときにリストよりも優先される理由について説明します。スピーカーは、DQ を使用して境界ボックスの下部中央座標の形式で値を追加し、車がフレームから消えると値がどのように削除されるかを説明します。 DQ の最大長は 64 と定義されており、その値に達すると、それ以上の値は受け入れられません。また、スピーカーはカラー パレットと UI を定義して、検出されたオブジェクトの周りにスタイリッシュな境界線を作成します。

  • 00:15:00 このセクションのビデオでは、角丸四角形とテキスト ラベルを使用してユーザー インターフェイス (UI) を作成するコードと、プログラムが検出されたオブジェクトを両端キューに追加して生成する方法を詳しく説明しています。トレイル。このコードには、フレームのサイズを変更して検出を実行するための前処理と非最大回帰も含まれています。ディープ SORT 関数は、一意の ID を割り当ててクラス名を決定するために呼び出されます。 set.modern.names は、COCO データセットから情報を取得し、境界ボックスを生成するのに役立ちます。

  • 00:20:00 このセクションでは、講演者が YOLOv8 と DeepSORT を使用したオブジェクト検出のコードを説明し、スクリプトの概要とその仕組みを提供します。スクリプトの現在の出力を示し、nano モデルを使用しているため、オブジェクトの検出はまだ完全ではないことに注意してください。講演者はまた、Europa 向けに一連のコンピューター ビジョンの講義を作成する予定であると述べ、視聴者にさらに多くのコンテンツを購読するよう勧めています。最後に、トレイルがラインと交差したことをスクリプトが検出する方法を示し、オブジェクトが通過したことを示し、出入りする車両のカウントの実装を可能にします。

  • 00:25:00 このセクションでは、プレゼンターが、YOLOv8 と DeepSORT を使用してリアルタイム オブジェクト トラッキング システムに車両カウント機能がどのように追加されたかを説明します。システムは画面上の線を使用し、車両の軌跡がこの線と交差するたびにカウントが増加します。車両の移動方向に応じて、車両がエリアに出入りするかどうかにかかわらず、カウントが増加する可能性があります。プレゼンターは、特定の機能を使用して UI を設定する方法も示します。
Real-Time Object Tracking using YOLOv8 and DeepSORT | Vehicles Counting (Vehicles Entering& Leaving)
Real-Time Object Tracking using YOLOv8 and DeepSORT | Vehicles Counting (Vehicles Entering& Leaving)
  • 2023.01.11
  • www.youtube.com
#yolo #yolov8 #objectdetection #objectracking #opencvpython #opencv #computervision #machinelearning #artificialintelligence #deepsort #multiobjecttracking#...
 

YOLOv8 を使用したリアルタイムのオブジェクト セグメンテーションと追跡 |車両計数(入出庫)



YOLOv8 を使用したリアルタイムのオブジェクト セグメンテーションと追跡 |車両計数(入出庫)

このビデオ チュートリアルでは、YOLOv8 とディープ ソート アルゴリズムを使用したリアルタイムのオブジェクト セグメンテーションと追跡の実装に焦点を当てています。具体的には、特定のエリアに出入りするさまざまなサブタイプの車両を数えて区別する方法を示します。このチュートリアルでは、速度の推定、方向の測定、ID とトレイルを使用した各車両の正確なセグメンテーションと追跡など、さまざまな側面について説明します。プレゼンターは、さまざまな IDE でこれを実装するために必要な手順も提供し、Patreon サポーターに最終的なコードを提供します。

  • 00:00:00 ビデオのこのセクションでは、プレゼンターが YOLOv8 とディープ ソート アルゴリズムを使用した追跡によるオブジェクト セグメンテーションの実装方法を説明します。このビデオでは、車両のセグメンテーションと追跡 (出入りする車両の数や車両の種類のカウントなど) を示しています。実装には、車両の速度計算、各車両への一意の ID の割り当て、トレイルの定義も含まれます。プレゼンターは、Anaconda Navigator、PyCharm、Spider、Visual Studio などのさまざまな IDE でこれを実装するために必要な手順を提供します。 predict.5 スクリプトの実行中にエラーが発生しないように、ライブラリなどの必要な依存関係をインストールする必要があります。

  • 00:05:00 このセクションのビデオ チュートリアルでは、YOLOv8 とディープ ソートを使用したセグメンテーションとトラッキングの実装に焦点を当てています。ディープ ソート ファイルは Google ドライブからダウンロードされ、サンプル ビデオがテスト用に使用されます。スクリプトは、サブタイプごとの車両の数を格納するために使用されるディクショナリを使用して、出入りする車両のカウントを実装するように変更されています。オブジェクト カウンター 1 は、サブタイプごとに出発する車両の数を格納するために使用され、チェック カウンター ディクショナリは、進入する車両の数を格納するために使用されます。変更されたスクリプトは、車両のサブタイプと、フレームに出入りするかどうかに基づいて、車両を追跡およびカウントします。

  • 00:10:00 このセクションのビデオでは、YOLOv8 を使用して車両カウント システムを作成する方法について説明します。オブジェクト カウンターは、特定のエリアに出入りする自動車、大型トラック、バイクなどの車両のサブタイプを区別できます。ビデオでは、速度推定機能の使用方法と、車両が通過したときにカウンターをインクリメントするラインの作成方法について説明しています。さらに、ビデオは、画像内のピクセル数を測定するのに役立つ定数 PPM または画像パラメーターを定義します。

  • 00:15:00 このセクションでは、スピーカーは、オブジェクトとカメラの間の距離に基づく動的距離測定の概念について説明します。これは、距離ピクセルを PPM (メートルあたりのピクセル数) で割った値に、3.6 の定数を掛けて 1 秒あたりのフレーム レートで割った値に等しいメートル単位の距離を含む式を使用して達成できると説明しています。次にスピーカーは、角度を計算し、距離と時間に基づいて速度を返す関数を記述します。また、さらに 2 つの関数 (set_d と CCW) を作成し、get_direction 関数を記述して、y 軸に基づいてオブジェクトの方向を計算します。

  • 00:20:00 ビデオのこのセクションでは、プレゼンターが YOLOv8 を使用したリアルタイム オブジェクト セグメンテーションと追跡のコードを確認します。方向構造の追加や残りのコードの計算など、スクリプトに変更を加えます。プレゼンターは、オブジェクトの速度を計算して ID リストに追加する方法についても説明します。次に、交差点コードをコピーして貼り付け、コードのエラーを修正するための調整を続けます。

  • 00:25:00 ビデオのこのセクションでは、プレゼンターがカウンター コードを追加して、出入りする車両の数をカウントします。カウンターコードには、車両の総数と、入ってくる車、トラック、オートバイの数を含むサブカウントが表示されます。プレゼンターは、退出する車両の数の表示を追加することも提案しています。ドローボックス関数でエラーが発生し、プレゼンターはカウントアップとカウントダウンのグローバル変数を宣言して修正します。スクリプトは正常に実行され、出力されたデモ ビデオには、各車両の推定速度と、入力した車両の種類ごとのサブカウントを含む合計車両数が表示されます。

  • 00:30:00 このセクションでは、スピーカーは、車両のカウントに YOLOv8 を使用したリアルタイムのオブジェクト セグメンテーションと追跡の結果について説明します。彼らは正確な結果を達成しており、ID とトレイルの追跡とともに、各車両の速度を推定することさえできます。さらに、各車両の検出とセグメンテーションが正確に実行されており、車両の総数についても言及されています。彼らは、共有するすべてのコードとプロジェクトにアクセスできる Patreon サポーターだけがこのコードを利用できるようにしました。最後に、視聴者にデモ ビデオのテスト、サイトへのコードの実装、Patreon メンバーシップへの参加を呼びかけます。
Real-Time Object Segmentation and Tracking using YOLOv8 | Vehicles Counting (Entering and Leaving)
Real-Time Object Segmentation and Tracking using YOLOv8 | Vehicles Counting (Entering and Leaving)
  • 2023.01.29
  • www.youtube.com
#yolo #yolov8 #objectdetection #objectsegmentation #objecttracking #computervision #machinelearning #artificialintelligence Real-Time Object Segmentation and...
 

YOLOv8 によるオブジェクト追跡: 車両の追跡、カウント (進入と退出)、および速度推定



YOLOv8 によるオブジェクト追跡: 車両の追跡、カウント (進入と退出)、および速度推定

ビデオ チュートリアルでは、YOLOv8 と DeepSORT を使用してオブジェクト トラッキング、車両カウント、速度推定を実装する方法について説明します。プレゼンターは、コードを含む GitHub リポジトリへのリンクを共有し、リポジトリのクローン作成、DeepSORT ファイルのダウンロード、関連ライブラリのインポート、およびオブジェクトを追跡するためのデータ DQ リストの定義のプロセスを順を追って説明します。また、車両の方向を決定し、それに応じてカウントを増やす方法についても説明します。さらに、プレゼンターは、追跡対象の X 座標と Y 座標に基づいてユークリッド距離式を実装することによって車両の速度を推定し、カウント表示用のスペースを設定する方法を示します。最終的に、スクリプトの出力にはオブジェクトの数と速度が表示され、実装が成功したことが示されます。

  • 00:00:00 チュートリアルのこのセクションでは、プレゼンターが YOLOv8 を使用してオブジェクト検出追跡と速度推定を実装する方法を説明します。まず、プレゼンターは、Deep Sort GitHub リポジトリを使用した YOLOv8 オブジェクト トラッキングへのリンクを提供します。このリポジトリには、Google Colab ファイルと、Windows でコードを実行するための段階的な手順が含まれています。次に、プレゼンターは、リポジトリのクローンを作成し、現在のディレクトリを設定し、必要なすべてのライブラリをインストールするために必要な手順を実行します。その後、プレゼンターは検出フォルダーに移動し、提供された Google ドライブ リンクからディープ ソート ファイルをダウンロードします。

  • 00:05:00 このセクションでは、スピーカーは、DeepSORT を使用して YOLOv8 でオブジェクト トラッキングをダウンロードして実装する手順を説明します。彼らは、フォルダーを解凍してプロジェクトのメインフォルダーに配置することにより、DeepSORTフォルダーをダウンロードするよう視聴者に案内します。また、predict.py ファイルで使用されるライブラリ インポートについても説明し、フレームに出入りするオブジェクトの一意の ID を格納するために使用される両端キュー (DQ) の概念についても説明します。スピーカーは、処理に GPU ではなく CPU を使用しているため、Google ドライブからサンプル ビデオをダウンロードし、出力を数秒待つことについても言及しています。

  • 00:10:00 このセクションでは、スピーカーは、オブジェクト追跡のための追跡アルゴリズムであるディープ ソート トラッカーで使用されるさまざまな機能について説明します。これらには、両端キューの右端に値を追加するために使用されるドット追加関数、オブジェクトを格納するために使用されるコンテナ データ型、および両端キューの左端に値を挿入するために使用されるドット追加左関数が含まれます。スピーカーは、オブジェクトの種類に基づいて異なる色をオブジェクトに割り当てる、カラフルなラベルの計算機能についても説明します。さらに、Dash 境界線の描画と Dash ボックスの描画機能が詳細に説明されており、オブジェクトの一意の ID と名前を表示する角の丸い四角形と、CB2.9 を使用して作成されたトレース ラインを使用して UI を作成します。

  • 00:15:00 このセクションでは、スピーカーが Trail Line を作成し、データ DQ の概念を実装してオブジェクトを追跡する方法について説明します。 DQ リストを初期化し、検出された各オブジェクトの下部座標を追加します。オブジェクトがフレームから離れると、そのポイントはデータ DQ リストから削除されます。また、クラス検出予測子を作成し、ディープ ソート アルゴリズムを使用して各オブジェクトに一意の ID を割り当て、それらの名前を取得します。 draw-boxes 関数を呼び出して予測を実行します。さらに、ファイルをダウンロードして貼り付け、方向を北、南、東、または西として定義することにより、車両のカウントを実装します。オブジェクトが特定の方向に出入りすると、カウントが増加します。

  • 00:20:00 このセクションでは、講演者が YOLOv8 オブジェクト追跡スクリプトでオブジェクト カウントをどのように実装したかを説明します。彼らは、指定された線を横切る動きに基づいて、出入りするオブジェクトの方向を定義しました。また、出入りするオブジェクトの数を表示し、数を表示する必要があるスペースを設定しました。次にスピーカーは、追跡されたオブジェクトの X 座標と Y 座標を使用して速度を計算するユークリッド距離式を実装することにより、速度推定を追加しました。彼らは、カメラの位置に基づいて動的に行うことができる計算を行うために、メートルあたりのピクセル値を使用しました。スクリプトの出力には、オブジェクトの数と速度が示され、スクリプトが正しく機能していたことが示されました。

  • 00:25:00 このセクションでは、スピーカーは車両の速度を時速メートルで計算するために使用される式を説明します。これには、ピクセル単位の距離をメートル単位のピクセル値 (PPM) で割り、結果に時定数を掛けることが含まれます。 .車両がユーザーの定義した検出エリアによって設定されたラインを横切ると、スクリプトは車両の数を増やし、車両が進行方向に基づいてエリアに出入りしているかどうかを識別します。最終的に、速度と車両数の推定値が出力リストに追加され、ユーザーはチュートリアルの手順に従ってこのプロジェクトを実装できます。
Object Tracking with YOLOv8: Vehicles Tracking, Counting (Entering & Leaving) and Speed Estimation
Object Tracking with YOLOv8: Vehicles Tracking, Counting (Entering & Leaving) and Speed Estimation
  • 2023.02.09
  • www.youtube.com
#ObjectDetection #ObjectTracking #SpeedEstimation #yolov8 #yolo #computervision #deeplearning #ai #machinelearning #opencv #opencvpython #pytorch -------...