![見出し画像](https://assets.st-note.com/production/uploads/images/122632436/rectangle_large_type_2_1e778208e44a5ad39a169215547cf567.png?width=800)
labelme2yoloの使い方~Segmentation編~
はじめに
labelme2yoloというpythonライブラリを発見
かなり新しいライブラリなので日本語記事が皆無
なら、私が書きましょう☆彡
動作環境
![](https://assets.st-note.com/img/1700875983036-7zotJhI97O.png?width=800)
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
![](https://assets.st-note.com/img/1700876491435-ZSI9kOKBa4.png?width=800)
使い方
labelme2yoloはコマンドプロンプト上で実行するツールです
labelmeでアノテーションを行って保存されたjsonファイルを
YOLOv8の学習に使用できるtxt形式に、コマンド1発で変換してくれます
(labelmeでのアノテーション(ラベル付け)方法は別記事でまとめます)
![](https://assets.st-note.com/img/1700876747688-ZlwGc7F1ba.png?width=800)
使い方は、以下のコマンドを実行するだけです
labelme2yolo --json_dir ./datasets/ --val_size 0.10
![](https://assets.st-note.com/img/1700876890296-Y9lylLMVpQ.png?width=800)
※ちなみに、デフォルトではSegment用の変換(--output_format polygon)ですが、オプション引数の--output_formatを"bbox"にすると、
Detection用の変換も可能です(labelme2yolo v0.1.3の場合))
正常に終了したら、--json_dirに指定したフォルダに「YOLODataset」というフォルダが生成されます
![](https://assets.st-note.com/img/1700876968888-xbFOe04vaM.png)
(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ファイル
![](https://assets.st-note.com/img/1700877086600-zSsU8QtJxn.png?width=800)
実際にYOLOv8を学習させてみる
実際にYOLOv8の学習に使えるか?試してみました
(yaml内の相対PATHは、絶対PATHに記載を変更しております)
学習(train)
![](https://assets.st-note.com/img/1700877465293-2V9UczIcts.png?width=800)
![](https://assets.st-note.com/img/1700877500133-RIlRlsfeS7.png?width=800)
![](https://assets.st-note.com/img/1700877537180-bw4Lz3V2gk.png?width=800)
予測(predict)
念のため、キチンの判定できるか確認(closed条件)
上側:デフォルトのモデル(yolov8n-seg.pt)での判定結果
no detection(検出されず)となっている下側:先ほど学習したモデル(best.pt)での判定結果
アノテーション時に設定した「hakusekirei」で検出されている
![](https://assets.st-note.com/img/1700877731991-Mu5m6lraw3.png?width=800)
![](https://assets.st-note.com/img/1700877899293-yLKSZ1o1gg.png?width=800)
右側:今回学習したモデルの出力
![](https://assets.st-note.com/img/1700877938200-5DtrQvpgVM.png)
おまけ
YOLOv8のsegmentation用に変換前後を検算しました
![](https://assets.st-note.com/img/1700878077600-BvWo2UxdPF.png?width=800)
右のメモ帳が生成されたtxtファイル
右の電卓が検算結果です(正しく変換されています)
![](https://assets.st-note.com/img/1700878151919-xBsm6PFWzB.png?width=800)
まとめ
labelme2yoloはlabelmeで作成したjson形式のラベルを
YOLOv8用に変換できるCLIライブラリ評価用フォルダ構成(train, val, test)やyamlファイルも生成されるため、かなり便利!!
デフォルトはSegmentation用だが、オプション引数--output_formatで"bbox"を指定することで、Detectionの学習にも使える(v0.1.3)
以上☆彡
参考URL
labelme2yolo - PyPI
https://pypi.org/project/labelme2yolo/ハクセキレイのイラスト - かわいいフリー素材集 いらすとや
https://www.irasutoya.com/2015/08/blog-post_597.html
この記事が気に入ったらサポートをしてみませんか?