LoginSignup
14
24

More than 1 year has passed since last update.

VoTTv2から出力したアノテーションをYOLOv5学習用に変換するスクリプト

Last updated at Posted at 2021-08-28

遅れ馳せながらYOLOv5の転移学習をオリジナルのデータを使って実施してみたのですが、あまりの手軽さに驚きました。

ネット上にはYOLOv5の転移学習に関する優れた事例や紹介記事が多数ありますので、ここではその内容については触れませんが、私のようにAIに関する知識が無い人でも、手順通りに実施すればオリジナルのAIモデルが作れてしまいます。すごい。

殆どの作業が自動化されているので、特に問題となるような事は少ないのですが、それらの事例をトレースした際に「ちょっと面倒だな」と感じたデータセットの変換処理に関して、より作業を簡略化できるようにpythonスクリプトを作成しました。

私はアノテーションツールとしてVoTT v2.2.0を使用したのですが、出力されるデータセットのファイル形式がYOLOv5用のファイル形式に対応していないため、別途変換する必要があります。

変換の方法はいろいろあるみたいですが、代表的な方法としては以下が挙げられます。

  • roboformというサイトの変換サービスを利用する
  • 有志の方々が開発したスクリプトを利用させてもらう

私の場合は、ネット上にデータを上げるのは少し気が引けたので、有志の方々が開発したスクリプト(ssaru氏Ryo-Kawanami氏)を利用させてもらったのですが、今回使用したケースではhoge.mp4#t=0.033333.xmlというようなドットが複数含まれるファイル名で問題が発生しました。

上記プログラムを一部書き換えれば適切に処理できることも確認したのですが、ディレクトリの指定方法などをより簡便に行いたかったので、勉強も兼ねてYOLO用の変換スクリプトを自分で作成することにしました。

1. VoTT v2 によるデータセット(Pascal VOC形式)の生成

まずはVoTTでタグ付けを行いデータセットを生成します。その際に、出力形式として「Pascal VOC」を選択してエクスポートしてください。

01.jpg

VoTTで指定した出力先に下記のような構成でデータセットが生成されていると思います。以下の例では****-PascalVOC-exportが変換データの解析を行う際のターゲットディレクトリとなります。

.
└── ****-PascalVOC-export
    ├── Annotations
    │   └── ****.xml
    ├── ImageSets
    ├── JPEGImages
    │   └── ****.jpg
    └── pascal_label_map.pbtxt

2. 変換スクリプトによるYOLO形式ファイル(.txtと.yaml)の生成

作成したスクリプトを用いてアノテーションデータ(*xml)の変換を行います。

よろしければダウンロードしてご利用ください(動作は保証できませんが・・・)。

dataclassesを利用しているのでPython3.7以降の環境が必要です。またlxmlpyyamlを利用しているのでpip等で導入してください。

2.1 使用方法

VoTTで出力したディレクトリをターゲットとして指定します。

ターゲットディレクトリが I:\origin_data\hoge-PascalVOC-export の場合、実行例は下記のようになります。(デフォルトの変換ファイル出力先は.\yolo_outです)

$ python vott2yolo_cv.py -t I:\origin_data\hoge-PascalVOC-export

その他のオプションは下記にてご確認ください。

$ python vott2yolo_cv.py -h

2.2 出力ファイル

指定したディレクトリ(.\yolo_out)に、YOLO形式のアノテーションデータ(*txt)とdata.yamlが生成されます。

以下は出力されるdata.yamlの例です。
ファイル名や内容を適宜修正してご利用ください。

data.yaml
names:
- hoge
- fuga
nc: 2
train: data/train/images
val: data/valid/images

お疲れさまでした。

14
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
24