Posts for: #物体検出

Label StudioのAPIを利用したデータ連携のメモ

Label StudioのAPIを利用したデータ連携のメモ

Label StudioのAPIを利用するとき用のメモになります.下記で出てくる例は物体検出を例にしています.

Taskの一覧の取得

import os
import requests

LABEL_STUDIO_HOST = os.environ["LABEL_STUDIO_HOST"]
LABEL_STUDIO_PROJECT_ID = os.environ["LABEL_STUDIO_PROJECT_ID"]
LABEL_STUDIO_TOKEN = os.environ["LABEL_STUDIO_TOKEN"]

# page_sizeとpageによって取得できるタスクの範囲が変わるため、必要に応じて変更.
tasks = requests.get(
    f"{LABEL_STUDIO_HOST}/api/tasks/?project={LABEL_STUDIO_PROJECT_ID}&page_size=1000&page=1",
    headers={"Authorization": f"Token {LABEL_STUDIO_TOKEN}"},
).json()

Taskの新規登録

task_info = requests.post(
    f"{LABEL_STUDIO_HOST}/api/tasks/?project={LABEL_STUDIO_PROJECT_ID}",
    headers={"Authorization": f"Token {LABEL_STUDIO_TOKEN}"},
    json={
        "data": {"image": str(storage_file_path)}, # storage_file_pathはlocalならlocalのパス、Cloud上ならばCloud上のパス.
        "project": LABEL_STUDIO_PROJECT_ID,
        "file_upload": 1, # sync済みのdata source上のデータを読み込む場合は1
    },
).json()

Pre-Annotationの登録

案件によっては、既存のモデルやシステムからラフなアノテーションが得られるときがあります.このときにはPre-Annotationを利用すると良いでしょう.

回転しているBounding Box向けのIoUのKFIoU

回転しているBounding Box向けのIoUのKFIoU

従来手法の問題点

回転しているBounding Box向けの微分可能なIoUの計算というのは簡単ではありません.既存手法としてGWDやKLDがありますが、問題ごとにハイパーパラメータの調整が必要になります.これを解決してより扱いやすく性能が高い手法になったのがKFIoUになります.