アクティブラーニングの実装

アクティブラーニングを使用して、 Roboflowでモデルをすばやく改善します。

Written by Mohamed Traore

Last published at: May 18th, 2022

「アクティブラーニングは、パフォーマンスを最も効率的に向上させる可能性のあるトレーニングデータのサブセットをアルゴリズムがプロアクティブに特定できるようにする機械学習トレーニング戦略です。より簡単に言えば、アクティブラーニングは、トレーニングデータのどの特定の例がモデルのパフォーマンスを最も向上させることができるかを特定するための戦略です。これは、トレーニングデータを最大限に活用してモデルを改善するための、人間のループによる機械学習のサブセットです。」 - アクティブラーニングとは何ですか?

アクティブラーニングの利点は、より少ない画像でより堅牢なモデルを作成できることです。モデルを適切に機能させ、モデルを改善するために必要なトレーニングのラウンドは、時間の経過とともに急速に減少します。

アクティブラーニングを実装するには、次の3つの重要な方法があります。

1.ランダムに新しい画像を継続的に収集する

ランダムサンプリングをデプロイメントソリューションにコーディングできます。

ランダムサンプリングは、実際の展開環境を表すより多くのイメージをプロジェクトに取り込むのに役立ちます。

利点:

  1. モデルは、モデルが存在する環境内で何を検出し、何を検出しないかをすばやく学習します。
  2. 関心のあるオブジェクト(モデルが検出するようにトレーニングされているもの)を含むより多くの画像-ラベル付けと再トレーニングの後、モデルはその展開環境内ではるかに良くなります!

例:

推論(モデルのデプロイ)を6時間実行しています。この6時間の時間枠で、デバイス(つまり、 NVIDIA JetsonまたはOAKデバイス)をプログラムで設定して、15分ごとに設定された数の画像を保存します(つまり、「15分ごとに3つの画像を保存する」)。収集した画像をRoboflowに返すか、 Roboflowに将来アップロードするためにデバイス/システムに保存します。

  • 時間の経過とともに、誤検出が少なくなります。
    • さらに、 信頼水準に関係なく、関心のあるオブジェクト(モデルが「見る」ようにトレーニングされているもの)を含むいくつかの画像を取得します。
    • これの利点は、対象のオブジェクトに対して「良い仕事」を続け、「悪い仕事」を行った場所を改善するようにモデルが強化されることです( 信頼性が低い検出、または検出されるべきだったときに検出されない) 1)それが検出された信頼水準に関係なく。

2.指定された信頼しきい値を下回る新しい画像を収集します

この方法は、検出の信頼しきい値を選択し、信頼しきい値が___%または0 .___未満のオブジェクト(モデルが認識するようにトレーニングされている)の検出をサンプリングして送信することを(独自のコード内で)要求することで使用できます。 Roboflowのワークスペースに戻って、さらに調査します。つまり、Hosted WebAppまたはInferenceAPIでテストして、問題とラベル付けを見つけ、再トレーニングします。

利点:

  1. モデルは、モデルが存在する環境内で何を検出し、何を検出しないかをすばやく学習します。
  2. (ラベル付けと再トレーニングの後)基本的にモデルに「ねえ、ここで悪い仕事をしました。これはあなたがやるべきことです」と言っているので、検出の信頼水準はすぐに上がり始めます。
  3. 関心のあるオブジェクト(モデルが検出するようにトレーニングされているもの)を含むより多くの画像-ラベル付けと再トレーニングの後、モデルはその展開環境内ではるかに良くなります!

例:

  • 40%の設定された信頼性しきい値から始めます-40%または0.40未満の信頼性レベルで検出されたオブジェクト(またはオブジェクトの__回ごと)は、プログラムでRoboflowに戻るように設定するか、将来のアップロードのためにデバイスに保存する必要がありますRoboflow 。
    • 次へ:再トレーニングを行い、本番環境からより良いトレーニングメトリックやより多くのデータを受け取った後、 信頼しきい値を50%に設定し、 信頼レベルが50%または0.50未満で検出されたオブジェクトは、プログラムで戻るように設定する必要がありますRoboflowに保存するか、 Roboflowに将来アップロードするためにデバイス/システムに保存します。
    • 後で:時間の経過とともに、60%、75%、80%などの信頼水準のより高いベンチマークを設定できるようになります。 信頼性ベンチマークのためにこれらのレベルから始めたくない理由は、新しいモデルでは、非常に多くの誤った検出、または低い信頼性での検出を受け取るためです。

3.アプリケーションのユーザーにモデルの予測を確認するように依頼します

利点:

  1. ユーザーフィードバックは素晴らしいツールです。基本的に、モデルの品質管理に役立つより多くの目が得られます。
  2. モデルがまったく機能していない場合に備えて、 repoレポートを追加することもできます(つまり、システムまたはアプリがクラッシュしたとき、またはモデルが実行されたが何も検出されなかったときのアラート)。

例:

  • ダッシュボード、モバイルアプリ、またはコンピュータービジョン製品の作成を選択した方法で「 repoレポート」を追加します。これらのバグrepoを使用して、コンピュータービジョン製品の機能を改善する方法をすばやく特定します。最も重要なことは、ユーザーが適切に機能するだけでなく、迅速に改善できるように準備されたモデルを使用できるようにすることです。
    • バグレポートから画像をRoboflow repo戻すように設定するか、 Roboflowに将来アップロードするためにシステムに保存します。

アクティブラーニングを実装するためのリソース

サンプルコード

まず、 Roboflow Python pipパッケージ(PyPi)をインストールします

# Roboflowパッケージのインストール
pip install roboflow
  1. 以下のコードブロックをコピーしてVSCode、XCode、PyCharm、Spyder(または別のコードエディター)に貼り付けます
  2. 「rf」オブジェクト内のmodel[name]、model version、api_key、およびdevice_nameの値を更新します。
  3. pythonファイルをディレクトリに保存します-デプロイメントが機能するために後で必要になるため、ディレクトリ名とファイル名を必ずメモしてください
from roboflow import Roboflow
import json
# private api key found in Roboflow > YOURWORKSPACE > Roboflow API
# NOTE: this is your private key, not publishable key!
# https://docs.roboflow.com/rest-api#obtaining-your-api-key
private_api_key = "INSERT API KEY HERE"

# gain access to your workspace
rf = Roboflow(api_key=private_api_key)
workspace = rf.workspace()

# you can obtain your model path from your project URL, it is located
# after the name of the workspace within the URL - you can also find your
# model path on the Example Web App for any dataset version trained
# with Roboflow Train
# https://docs.roboflow.com/inference/hosted-api#obtaining-your-model-endpoint
model_path = "INSERT MODEL PATH HERE"
project = workspace.project(f"{model_path}")

# be sure to replace with a path to your file
# if you run this in Colab, be sure to upload the file to colab, hover over
# the file name, and select the 3 dots on the right of the file name to copy
# the file path, and paste it as the value for "imgpath"
img_path = "INSERT IMAGE PATH HERE"

# establish number of retries to use in case of upload failure
project.upload(f"{img_path}", num_retry_uploads=3)

RoboflowのアップロードAPI

Upload APIを使用して、画像を新しいプロジェクトにアップロードできます

  • プロジェクト1 :現在展開されているモデル|プロジェクト2 :アクティブラーニング画像-ランダムに収集された画像|プロジェクト3 :アクティブラーニング画像-30%の信頼しきい値を下回る画像|プロジェクト4:アクティブラーニング画像-50%の信頼しきい値を下回る画像

Roboflowの推論API

「InferenceHosted」および「UploadHosted」スクリプトは、サーバーでホストされているイメージに使用されます。 「InferenceLocal」および「UploadLocal」スクリプトは、デバイス(つまり、コンピューターのハードドライブまたはエッジデバイス)でホストされているイメージに使用されます。

RoboflowのPythonパッケージ