Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kurusugawa-computer/labelme-to-annofab
アノテーションツールLabelMe(やAnyLabeling)のJSONフォーマットをAnnofabのアノテーションフォーマットに変換するツールです。
https://github.com/kurusugawa-computer/labelme-to-annofab
Last synced: about 2 months ago
JSON representation
アノテーションツールLabelMe(やAnyLabeling)のJSONフォーマットをAnnofabのアノテーションフォーマットに変換するツールです。
- Host: GitHub
- URL: https://github.com/kurusugawa-computer/labelme-to-annofab
- Owner: kurusugawa-computer
- License: mit
- Created: 2023-06-23T02:18:30.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-06-30T02:52:39.000Z (over 1 year ago)
- Last Synced: 2024-04-19T21:22:31.843Z (9 months ago)
- Language: Python
- Size: 54.7 KB
- Stars: 0
- Watchers: 6
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# labelme-to-annofab
アノテーションツールLabelMe(やAnyLabeling)のJSONフォーマットをAnnofabのアノテーションフォーマットに変換するツールです。# 事前準備
VSCode devcontainerを起動して、開発環境を構築してください。# 使い方
## convert_annotation_to_segmentation_masks.py
lablemeのlabel'car','bike'であるオブジェクトを、Annofabの塗りつぶしアノテーション(Semantic Segmentation用)に変換します。```
# LabelMeのアノテーションフォーマットを確認
$ ls ${LABELME_JSON_DIR} -1
image1.json
image2.json$ cat image1.json
{
"version": "0.2.23",
"flags": {},
"shapes": [
{
"label": "car",
"text": "",
"points": [
[
1918.0,
528.0
],
[
1914.0,
528.0
],
[
1912.0,
530.0
]
],
"group_id": null,
"shape_type": "polygon",
"flags": {}
},
{
"label": "bike",
"text": "",
"points": [
[
671.0,
532.0
],
[
663.0,
525.0
]
],
"group_id": null,
"shape_type": "rectangle",
"flags": {}
}
],
"imagePath": "image1.jpg",
"imageData": null,
"imageHeight": 1080,
"imageWidth": 1920
}
``````
# LabelMeのアノテーションをAnnofabフォーマットに変換
$ poetry run python -m labelmeannofab.convert_annotation_to_segmentation_masks ${LABELME_JSON_DIR} ${ANNOFAB_DIR} --semantic_segmentation_label car bike
``````
$ ls -1 ${ANNOFAB_DIR}
image1.json
image2.json
image1/
image2/$ ls -1 ${ANNOFAB_DIR}/image1
672af8c3-8ec5-414e-bcbd-8561602f5461
1738ad90-5cd8-490c-9c28-3aaabfd4fde7
``````
$ cat out/annofab2/sample_1/image1.json | jq
{
"details": [
{
"label": "car",
"annotation_id": "672af8c3-8ec5-414e-bcbd-8561602f5461",
"data": {
"data_uri": "672af8c3-8ec5-414e-bcbd-8561602f5461",
"_type": "SegmentationV2"
},
"attributes": {}
},
{
"label": "bike",
"annotation_id": "1738ad90-5cd8-490c-9c28-3aaabfd4fde7",
"data": {
"data_uri": "1738ad90-5cd8-490c-9c28-3aaabfd4fde7",
"_type": "SegmentationV2"
},
"attributes": {}
}
]
}
```## Annofabにアノテーションをインポートする
Annofabのアノテーションフォーマットには、タスクという概念をディレクトリで表す必要があります。
タスクの構成に合わせて、`convert_annotation_to_segmentation_masks`での出力結果を適切に移動してください。
以下のようなイメージです。```
task1/
- image1.json
- image1/
- image2.json
- image2/
task2/
- image3.json
- image3/
- image4.json
- image4/
```なお、jsonファイルの拡張子を除いた部分がAnnofabの"input_data_id"に相当します。
[annofabcli annotatation import](https://annofab-cli.readthedocs.io/ja/latest/command_reference/annotation/import.html)コマンドを実行して、アノテーションをAnnofabにインポートできます。
```
$ annofab annotation import --project_id ${PROJECT_ID} --annotation ${ANNOFAB_DIR2}
```