見出し画像

labelme2yoloの使い方~Segmentation編~

はじめに

  • labelme2yoloというpythonライブラリを発見

  • かなり新しいライブラリなので日本語記事が皆無

  • なら、私が書きましょう☆彡

動作環境

いつもの
  • Python:3.11.5

    • ultralytics:8.0.145

    • labelme:5.3.1

    • labelme2yolo:0.1.3 ★今回の主役!!

labelme2yoloの使い方

labelme2yoloとは?

  • labelmeで作成したjson形式のラベルを、yolo(v8含む)で使える形式に変換できるライブラリ

  • detectionとsegmentation用のフォルダ構成、yamlファイルの生成もしてくれるため、非常に便利!!

  • PyPIはこちら(labelme2yolo · PyPI

導入方法

pipで簡単に導入できます!

python -m pip install labelme2yolo
(参考)導入時の出力

使い方

labelme2yoloはコマンドプロンプト上で実行するツールです
labelmeでアノテーションを行って保存されたjsonファイルを
YOLOv8の学習に使用できるtxt形式に、コマンド1発で変換してくれます
(labelmeでのアノテーション(ラベル付け)方法は別記事でまとめます)

labelmeで作成されたjson形式のデータの例

使い方は、以下のコマンドを実行するだけです

labelme2yolo --json_dir ./datasets/ --val_size 0.10
実行時の出力

※ちなみに、デフォルトではSegment用の変換(--output_format polygon)ですが、オプション引数の--output_formatを"bbox"にすると、
Detection用の変換も可能です(labelme2yolo v0.1.3の場合))

正常に終了したら、--json_dirに指定したフォルダに「YOLODataset」というフォルダが生成されます

学習用の画像は「いらすとや」から拝借させていただきました
(https://www.irasutoya.com/2015/08/blog-post_597.html)

生成物は以下の通りです。

  • imagesフォルダ
    trainとval, testに分けられた画像

  • labelsフォルダ
    trainとval, testに分けられたYOLO用の形式になったtxtファイル

  • dataset.yaml
    YOLOv8のtrainコマンド時に使用するyamlファイル

実際にYOLOv8を学習させてみる

実際にYOLOv8の学習に使えるか?試してみました
(yaml内の相対PATHは、絶対PATHに記載を変更しております)

学習(train)

出力その1:学習の準備が進んでいます
出力その2:学習が始まったところ
出力その3:最後のスクショは取り忘れました…

予測(predict)

念のため、キチンの判定できるか確認(closed条件)

  • 上側:デフォルトのモデル(yolov8n-seg.pt)での判定結果
    no detection(検出されず)となっている

  • 下側:先ほど学習したモデル(best.pt)での判定結果
    アノテーション時に設定した「hakusekirei」で検出されている

predictコマンド実行時の出力
左側:既存モデルでの出力
右側:今回学習したモデルの出力
きちんと検出と領域も判定できてますね!

おまけ

YOLOv8のsegmentation用に変換前後を検算しました

左3つが元のjsonファイル
右のメモ帳が生成されたtxtファイル
右の電卓が検算結果です(正しく変換されています)
ちなみにlabelmeのjson出力結果の対応はこんな感じです

まとめ

  • labelme2yoloはlabelmeで作成したjson形式のラベルを
    YOLOv8用に変換できるCLIライブラリ

  • 評価用フォルダ構成(train, val, test)やyamlファイルも生成されるため、かなり便利!!

  • デフォルトはSegmentation用だが、オプション引数--output_formatで"bbox"を指定することで、Detectionの学習にも使える(v0.1.3)

以上☆彡

参考URL


この記事が気に入ったらサポートをしてみませんか?