0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

本記事では、DatabricksとLabelboxの連携で説明されている手順を実際にウォークスルーしています。

Partner ConnectによるLabelboxへの接続

ワークスペースのサイドバーのPartner Connectをクリックします。
Screen Shot 2022-04-05 at 14.03.07.png

機械学習にあるLabelboxをクリックします。

Screen Shot 2022-04-05 at 13.39.06.png

次のページをクリックします。
Screen Shot 2022-04-05 at 13.39.18.png

Labelboxに接続をクリックします。
Screen Shot 2022-04-05 at 13.39.36.png

新規タブでLabelboxが開きますので、Continue trial sign-upをクリックします。
Screen Shot 2022-04-05 at 13.39.56.png

アカウントが存在しない場合には、Sign Upを選択し、企業名、パスワード、氏名を入力します。
Screen Shot 2022-04-05 at 13.41.17.png

確認メールが送信されます。
Screen Shot 2022-04-05 at 13.41.37.png

メールに記載のVerify Accountをクリックします。
Screen Shot 2022-04-05 at 13.42.13.png

会社名とロールを選択します。
Screen Shot 2022-04-05 at 13.42.39.png

これで、Labelboxへの接続が確立されました。
Screen Shot 2022-04-05 at 13.43.35.png

Databricks側でも接続成功のメッセージが表示されます。
Screen Shot 2022-04-05 at 13.43.56.png
Screen Shot 2022-04-05 at 13.44.07.png

クラスターとLabelboxスターターノートブックのセットアップ

上の設定でLABELBOX_CLUSTERというクラスターが作成されているので、このクラスターに必要なライブラリをインストールします。
Screen Shot 2022-04-05 at 13.44.34.png

ライブラリの画面に移動します。
Screen Shot 2022-04-05 at 13.44.54.png

新規をインストールをクリックして、labelboxlabelsparkをPyPI経由でインストールします。
Screen Shot 2022-04-05 at 13.45.06.png

Screen Shot 2022-04-05 at 13.45.55.png

サンプルノートブックがWorkspace > Shared > labelbox_demo > labelbox_databricks_example.ipynbに作成されているので、これを開きます。

Screen Shot 2022-04-05 at 13.46.17.png

サンプルノートブックの実行

上のクラスターにノートブックをアタッチします。
Screen Shot 2022-04-05 at 13.46.43.png

Labelboxに移動して、Account > APIに移動し、APIキーを作成します。
Screen Shot 2022-04-05 at 13.48.28.png
Screen Shot 2022-04-05 at 13.48.39.png
Screen Shot 2022-04-05 at 13.48.46.png

SDKの設定

LabelboxとDatabricksのライブラリがインストールできたので、SDKを設定する必要があります。こちらからAPIキーを作成する必要があります。DatabricksシークレットAPIを用いてキーを格納することも可能です。SDKは環境変数LABELBOX_API_KEYの読み込みを試行します。

Python
from labelbox import Client, Dataset
from labelbox.schema.ontology import OntologyBuilder, Tool, Classification, Option
import databricks.koalas as pd
import labelspark

API_KEY = "<APIキー>" 

if not(API_KEY):
  raise ValueError("Go to Labelbox to get an API key")
  
client = Client(API_KEY)

シードデータの取り込み

次に、デモ用データセットをSparkテーブルにロードし、URLを通じて簡単にアセットをLabelboxにロードする方法を理解することができます。シンプルにするために、LabelboxからデータセットIDを取得することができ、みなさまが使用できるようにこれらのURLをSparkテーブルにロードします(なので、このデモノートブックを実行するためにデータを見つけ出す必要はありません)。以下では、Labelboxトライアルに含まれる"Example Nature Dataset"を取得します。

また、LabelboxはAWS、Azure、GCPのクラウドストレージをネイティブでサポートしています。Delegated Accessを通じてLabelboxをお使いのストレージに接続することができ、アノテーションするためにこれらのアセットを簡単にロードすることができます。詳細については、こちらの動画をご覧ください。

Python
sample_dataset = next(client.get_datasets(where=(Dataset.name == "Example Nature Dataset")))
sample_dataset.uid
Python
# ディレクトリをパースし、画像URLのSparkテーブルを作成することができます
SAMPLE_TABLE = "sample_unstructured_data"

tblList = spark.catalog.listTables()

if not any([table.name == SAMPLE_TABLE for table in tblList]):
   
  df = pd.DataFrame([
    {
      "external_id": dr.external_id,
      "row_data": dr.row_data
    } for dr in sample_dataset.data_rows()
  ]).to_spark()
  df.registerTempTable(SAMPLE_TABLE)
  print(f"Registered table: {SAMPLE_TABLE}")

テーブルの中身を確認します。

Python
display(sqlContext.sql(f"select * from {SAMPLE_TABLE} LIMIT 5"))

Screen Shot 2022-04-05 at 16.04.15.png

ラベリングプロジェクトの作成

プロジェクトはチームがラベルを作成する場所となります。プロジェクトにはラベル付けされるアセットのデータセットと、ラベリングの推論を設定するためのオントロジーを必要となります。

ステップ 1: データセットの作成

Labelbox Connector for Databricksは、2つのカラムを持つSparkテーブルを期待します。最初のカラムは"external_id"で、2つ目のカラムは"row_data"となります。

external_idは"birds.jpg"や"my_video.mp4"のようなファイル名となります。

row_dataはファイルに対するURLパスとなります。Labelboxはラベリングを行う際、ユーザーのマシンにローカルにレンダリングするので、ラベリング担当はアセットにアクセスする権限を必要とします。

サンプル:

external_id row_data
image1.jpg https://url_to_your_asset/image1.jpg
image2.jpg https://url_to_your_asset/image2.jpg
image3.jpg https://url_to_your_asset/image3.jpg
Python
unstructured_data = spark.table(SAMPLE_TABLE)

demo_dataset = labelspark.create_dataset(client, unstructured_data, "Databricks Demo Dataset")
Python
print("Open the dataset in the App")
print(f"https://app.labelbox.com/data/{demo_dataset.uid}")

表示されるURLにアクセスするとデータセットを確認できます。

Screen Shot 2022-04-05 at 13.51.26.png

ステップ 2: プロジェクトの作成

使用するオントロジー(次に実施します)を構築するためにlabebox SDKを使用します。app.labelbox.comのウェブサイトを通じて、プロジェクト全体をセットアップすることができます。

ontology creation documentation.をチェックしてください。

Python
# 新規プロジェクトの作成
project_demo = client.create_project(name="Labelbox and Databricks Example")
project_demo.datasets.connect(demo_dataset)  # キューにデータセットを追加

ontology = OntologyBuilder()

tools = [
  Tool(tool=Tool.Type.BBOX, name="Frog"),
  Tool(tool=Tool.Type.BBOX, name="Flower"),
  Tool(tool=Tool.Type.BBOX, name="Fruit"),
  Tool(tool=Tool.Type.BBOX, name="Plant"),
  Tool(tool=Tool.Type.SEGMENTATION, name="Bird"),
  Tool(tool=Tool.Type.SEGMENTATION, name="Person"),
  Tool(tool=Tool.Type.SEGMENTATION, name="Sleep"),
  Tool(tool=Tool.Type.SEGMENTATION, name="Yak"),
  Tool(tool=Tool.Type.SEGMENTATION, name="Gemstone"),
]
for tool in tools: 
  ontology.add_tool(tool)

conditions = ["clear", "overcast", "rain", "other"]

weather_classification = Classification(
    class_type=Classification.Type.RADIO,
    instructions="what is the weather?", 
    options=[Option(value=c) for c in conditions]
)  
ontology.add_classification(weather_classification)


# エディターのセットアップ
for editor in client.get_labeling_frontends():
    if editor.name == 'Editor':
        project_demo.setup(editor, ontology.asdict()) 

print("Project Setup is complete.")

ステップ 3: データラベリングの実施

Python
print("Open the project to start labeling")
print(f"https://app.labelbox.com/projects/{project_demo.uid}/overview")

表示されるURLにアクセスして、ラベリングを行います。
Screen Shot 2022-04-05 at 16.10.35.png

ラベル・アノテーションのエクスポート

Labelboxでラベルを作成した後は、Databricksでモデルのトレーニング、分析に使用するためにこれらをエクスポートすることができます。

Python
LABEL_TABLE = "exported_labels"

labels_table = labelspark.get_annotations(client, project_demo.uid, spark, sc)
labels_table.registerTempTable(LABEL_TABLE)
display(labels_table)

Screen Shot 2022-04-05 at 16.12.18.png

サンプルノートブックはこちらからダウンロードできます。

Databricks 無料トライアル

Databricks 無料トライアル

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?