このリポジトリはアーカイブされ、Label Studio SDK にマージされています: https://github.com/HumanSignal/label-studio-sdk/tree/master/src/label_studio_sdk/converter
ウェブサイト • ドキュメント • Twitter • Slack コミュニティに参加する
導入
例
JSON
CSV
2003年CoNLL
ココ
パスカル VOC XML
YOLOからラベルスタジオへのコンバーター
使用法
チュートリアル: ローカル ストレージを使用した YOLO 事前アノテーション付き画像の Label Studio へのインポート
貢献する
ライセンス
Label Studio Format Converter を使用すると、ラベルをお気に入りの機械学習ライブラリの形式にエンコードできます。
コマンドラインから実行する場合:
pip install -U ラベルスタジオコンバーター python label-studio-converter import -i exported_tasks.json -c Examples/sentiment_analysis/config.xml -o Output_dir -f CSV
Pythonから実行:
from label_studio_converter import Converterc = Converter('examples/sentiment_analysis/config.xml')c.convert_to_json('examples/sentiment_analysis/completions/', 'tmp/output.json')出力ファイルの取得: tmp/output.json
[
{"reviewText": "良いケース、優れた価値。","sentiment": "肯定的"
}、
{"reviewText": "お金と時間の無駄です!","sentiment": "否定的"
}、
{"reviewText": "ガチョウの首には少しなだめる必要があります","センチメント": "中立"
}
]ユースケース: あらゆるタスク
コマンドラインから実行する場合:
python label_studio_converter/cli.py --input example/sentiment_analysis/completions/ --config example/sentiment_analysis/config.xml --output Output_dir --format CSV --csv-separator $'t'
Pythonから実行:
from label_studio_converter import Converterc = Converter('examples/sentiment_analysis/config.xml')c.convert_to_csv('examples/sentiment_analysis/completions/', 'output_dir', sep='t', header=True)出力ファイルtmp/output.tsvを取得します。
レビューテキストの感情良いケース、優れた価値。肯定的お金と時間の無駄だ!否定的グースネックには少しなだめる必要がある中立
ユースケース: あらゆるタスク
コマンドラインから実行する場合:
python label_studio_converter/cli.py --input example/named_entity/completions/ --config example/named_entity/config.xml --output tmp/output.conll --format CONLL2003
Pythonから実行:
from label_studio_converter import Converterc = Converter('examples/named_entity/config.xml')c.convert_to_conll2003('examples/named_entity/completions/', 'tmp/output.conll')出力ファイルtmp/output.conllの取得
-DOCSTART- -X- O
Showers -X- _ O
continued -X- _ O
throughout -X- _ O
the -X- _ O
week -X- _ O
in -X- _ O
the -X- _ O
Bahia -X- _ B-Location
cocoa -X- _ O
zone, -X- _ O
...使用例: テキストのタグ付け
コマンドラインから実行する場合:
python label_studio_converter/cli.py --input example/image_bbox/completions/ --config example/image_bbox/config.xml --output tmp/output.json --format COCO --image-dir tmp/images
Pythonから実行:
from label_studio_converter import Converterc = Converter('examples/image_bbox/config.xml')c.convert_to_coco('examples/image_bbox/completions/', 'tmp/output.conll',output_image_dir='tmp/images')出力イメージはtmp/imagesにあります
出力ファイルtmp/output.jsonの取得
{ "画像": [
{ "幅": 800、"高さ": 501、"id": 0、"ファイル名": "tmp/images/62a623a0d3cef27a51d3689865e7b08a"}
]、「カテゴリ」: [
{ "id": 0, "name": "惑星"},
{ "id": 1, "name": "ムーンウォーカー"}
]、「注釈」: [
{ "id": 0, "image_id": 0, "category_id": 0, "segmentation": [], "bbox": [299,6,377,260 ], "ignore": 0, "iscrowd": 0, "area ":98020}、
{ "id": 1, "image_id": 0, "category_id": 1, "segmentation": [], "bbox": [288,300,132,90 ], "ignore": 0, "iscrowd": 0, "area ":11880}
]、"情報": {"年": 2019、"バージョン": "1.0"、"投稿者": "Label Studio"
}
}使用例: 画像オブジェクトの検出
コマンドラインから実行する場合:
python label_studio_converter/cli.py --input example/image_bbox/completions/ --config example/image_bbox/config.xml --output tmp/voc-annotations --format VOC --image-dir tmp/images
Pythonから実行:
from label_studio_converter import Converterc = Converter('examples/image_bbox/config.xml')c.convert_to_voc('examples/image_bbox/completions/', 'tmp/output.conll', Output_image_dir='tmp/images')出力イメージはtmp/imagesにあります。
対応するアノテーションはtmp/voc-annotations/*.xmlにあります。
<?xml バージョン="1.0" エンコーディング="utf-8"?> <注釈> <フォルダ>tmp/images</フォルダ> <ファイル名>62a623a0d3cef27a51d3689865e7b08a</ファイル名> <ソース> <データベース>MyDatabase</データベース> <annotation>COCO2017</annotation> <image>フリッカー</image> <flickrid>NULL</flickrid> </ソース> <所有者> <flickrid>NULL</flickrid> <name>ラベル スタジオ</name> </所有者> <サイズ> <幅>800</幅> <高さ>501</高さ> <深さ>3</深さ> </サイズ> <セグメント化>0</セグメント化> <オブジェクト> <名前>惑星</名前> <pose>未指定</pose> <切り捨てられた>0</切り捨てられた> <難しい>0</難しい> <bndbox> <xmin>299</xmin> <ymin>6</ymin> <xmax>676</xmax> <ymax>266</ymax> </bndbox> </オブジェクト> <オブジェクト> <名前>ムーンウォーカー</name> <pose>未指定</pose> <切り捨てられた>0</切り捨てられた> <難しい>0</難しい> <bndbox> <xmin>288</xmin> <ymin>300</ymin> <xmax>420</xmax> <ymax>390</ymax> </bndbox> </オブジェクト> </注釈>
使用例: 画像オブジェクトの検出
まず YOLO フォルダーの構造を確認します。ルートが/yolo/datasets/oneであることに注意してください。
/yolo/datasets/one images - 1.jpg - 2.jpg - ... labels - 1.txt - 2.txt classes.txt
クラス.txtの例
Airplane Car
label-studio-converter import yolo -i /yolo/datasets/one -o ls-tasks.json --image-root-url "/data/local-files/?d=one/images"
?d=からの URL パスは、 LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOTで設定したパスに対する相対パスです。
ローカルストレージに関する注意事項
Label Studio を実行するには、 LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/yolo/datasets ( /yolo/datasets/oneではなく、 /yolo/datasets ) を設定することが非常に重要です。
プロジェクト設定で新しいローカル ストレージを追加し、絶対ローカル パスを/yolo/datasets/one/images (Windows の場合はc:yolodatasetsoneimages ) に設定します。
クラウドストレージに関する注意事項
--image-root-url使用して、タスク URL に正しいプレフィックスを作成します (例: --image-root-url s3://my-bucket/yolo/datasets/one 。
対応するバケットとプレフィックスを使用して、プロジェクト設定に新しい Cloud Storage を追加します。
ヘルプコマンド
label-studio-converter import yolo -h usage: label-studio-converter import yolo [-h] -i INPUT [-o OUTPUT] [--to-name TO_NAME] [--from-name FROM_NAME] [--out-type OUT_TYPE] [--image-root-url IMAGE_ROOT_URL] [--image-ext IMAGE_EXT] optional arguments: -h, --help show this help message and exit -i INPUT, --input INPUT directory with YOLO where images, labels, notes.json are located -o OUTPUT, --output OUTPUT output file with Label Studio JSON tasks --to-name TO_NAME object name from Label Studio labeling config --from-name FROM_NAME control tag name from Label Studio labeling config --out-type OUT_TYPE annotation type - "annotations" or "predictions" --image-root-url IMAGE_ROOT_URL root URL path where images will be hosted, e.g.: http://example.com/images or s3://my-bucket --image-ext IMAGE_EXT image extension to search: .jpg, .png
このチュートリアルでは、さらに注釈を追加するために、YOLO 注釈を含むフォルダーを Label Studio にインポートするプロセスを説明します。環境のセットアップ、YOLO 注釈の Label Studio 形式への変換、プロジェクトへのインポートについて説明します。
Label Studio がローカルにインストールされている
YOLO アノテーション付きイメージと、ディレクトリ/yolo/datasets/one内の対応する .txt ラベル ファイル。
label-studio-converter がインストールされています ( pip install label-studio-converter経由で入手可能)
Label Studio を開始する前に、次の環境変数を設定して、ローカル ストレージ ファイルの提供を有効にします。
Unix システム:
export LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true export LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/yolo/datasets label-studio
Windows:
set LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true set LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=C:yolodatasets label-studio
/yolo/datasets YOLO データセット ディレクトリへの実際のパスに置き換えます。
新しいプロジェクトを作成します。
プロジェクト設定に移動し、 [Cloud Storage] を選択します。
[ソース ストレージの追加]をクリックし、ストレージ タイプオプションからローカル ファイルを選択します。
Windows では、絶対ローカル パスを/yolo/datasets/one/imagesまたはc:yolodatasetsoneimagesに設定します。
Add storageをクリックします。
ローカル ストレージの詳細については、ドキュメントを確認してください。
変換されたアノテーションを YOLO からインポートする前に、Label Studio を介してローカル ストレージから画像にアクセスできることを確認してください。新しいブラウザ タブを開き、次の URL を入力します。
http://localhost:8080/data/local-files/?d=one/images/<your_image>.jpg
one/images/<your_image>.jpg画像の 1 つへのパスに置き換えます。画像はブラウザの新しいタブに表示されるはずです。イメージを開けない場合は、ローカル ストレージの構成が正しくありません。最も可能性の高い理由は、ローカル ストレージ設定またはLABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOTでPathを指定したときに間違いがあったことです。
注: ?d=からの URL パスはLABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/yolo/datasetsに対する相対パスである必要があります。つまり、実際のパスは/yolo/datasets/one/images/<your_image>.jpgとなり、この画像はハード上に存在する必要があります。ドライブ。
label-studio-converter を使用して、YOLO 注釈を Label Studio が理解できる形式に変換します。
label-studio-converter import yolo -i /yolo/datasets/one -o output.json --image-root-url "/data/local-files/?d=one/images"
次に、 output.jsonファイルを Label Studio にインポートします。
Label Studio プロジェクトに移動します。
データ マネージャーで、 [インポート]をクリックします。
output.jsonファイルを選択してインポートします。
インポート後、Label Studio で、事前に注釈が付けられた境界ボックスを含む画像が表示されるはずです。注釈が正しいことを確認し、必要な調整を行います。
パスまたはイメージ アクセスに関する問題が発生した場合は、次のことを確認してください。
LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT が正しく設定されています。
変換コマンドの--image-root-url相対パスと一致します。
`Absolute local path from Local Storage Settings` - `LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT` = `path for --image_root_url`
例えば:
/yolo/datasets/one/images - /yolo/datasets/ = one/images
Label Studio のローカル ストレージは、画像への絶対ローカル パス ( /yolo/datasets/one/images ) を使用して正しく設定されています。
詳細については、事前にアノテーションが付けられたデータのインポートとクラウド ストレージの設定に関するドキュメントを参照してください。
他のモデルへのコンバーターの作成にご協力いただければ幸いです。ご自由にプルリクエストを作成してください。
貢献ガイドライン
行動規範