Pythonによるデータ分析・機械学習ブログ

Pythonによるデータの前処理・グラフ化、機械学習、統計解析、画像処理、Webスクレイピング、自然言語処理の基礎について紹介していきます。

MENU

【第5回】VoTTで出力したPascalVOC形式のデータをYOLOXの学習で使うCOCO形式のデータに変換する方法

はじめに

 近年、AI(Artificial Intelligence:人工知能)の急速な発展に伴い、それらを用いた技術が活用され始めています。例えば、AIによる画像認識技術として物体検出などがあります。物体検出は「画像の中から特定の物体の位置、種類、個数などの情報を認識する技術」であり、AIを用いて比較的高速に画像内の物体情報を取得することができます。この技術を用いて製造業では品質評価、外観検査、異常検知などに活用されています。

 リアルタイムに物体検出を行うアルゴリズムにYOLO(You Only Look Onse)と呼ばれるものがあり、CNN(Convolutional Neural Network:畳み込みニューラルネットワーク)を用いたアルゴリズムとなっています。2021年8月に公開された最新の物体検出モデルにYOLOXがあり、これはYOLOv5を超える性能と、使いやすいライセンス(Apache License)を両立しています。

 YOLOXなどの物体検出で精度改善等を行う場合、画像にアノテーションを行って学習を行います。アノテーションでは一般的にVoTTやlabelmeなどのツールを使い、アノテーションデータはPascalVOC形式のデータとして出力されます。しかし、YOLOXで学習する際に必要なデータセットはCOCO形式です。そのため、PascalVOC形式からCOCO形式に変換する必要がでてきます。

 本記事では、VoTTで出力したPascalVOC形式のデータをYOLOXの学習で使うCOCO形式のデータに変換する方法を紹介します。本記事の内容を用いることで、迅速にデータセットをPascalVOC形式からCOCO形式に変換することができ、前処理のコストを軽減して学習を実施することができます。

 

YOLOXの完全攻略マニュアルも以下のnote記事で紹介しています。

note.com

Aidemy Premium

 

1. VoTTでPascalVOC形式のデータ出力

以下の記事の2.4節を参考にPascalVOC形式のデータを出力してください。出力すると、***-PascalVOC-exportというフォルダが作成されます。(※***はプロジェクト名)

chantastu.hatenablog.com

 

2. 引用コード

本記事のコアな部分は以下の高橋かずひとさんのコードを用いています。

github.com

 

3. 本記事で紹介するコード

3.1概要

VoTTで出力したPascalVOC形式のデータセットでは、トレーニングデータとバリデーションデータに分割されています。上記の高橋さんのコードでも変換できますが、トレーニングデータとバリデーションデータの分割を考慮してPascalVOC形式からCOCO形式に変換したいため、変換コードを作成しました。

3.2 githubで公開

コードは以下のgithubで公開しています。

github.com

 

3.3 環境構築:pip install

pip installで以下をインストールしてください。

・tqdm

・natsort

 

3.4 実行時のファイル構成

convert_vott_voc2coco.pyの実行時のファイル構成は以下のようにします。VoTTで出力したPascalVOC形式のデータセットは「{you setting name}-PascalVOC-export」として表現しています。

Annotationsにはxmlファイル(***.xml...)、ImageSets/Mainにはtxtファイル(***_train.txt, ***_val.txt)、JPEGImagesには画像ファイル(***.jpg...)が格納されています。

 

3.5 COCO形式への変換実行

以下のコマンドを実行して変換を行います。VoTTで出力したPascalVOC形式のデータセットは「{you setting name}-PascalVOC-export」として表現しています。

 

実行後、以下のフォルダが生成されます。{YYYYMMDD_HHMMSS}は日付・時刻です。annotationsフォルダに変換後のtrain、valのCOCO形式のjsonファイル(instances_train2017.json、instances_val2017.json)、train2017フォルダにtrain画像、val2017フォルダにval画像が保存されます。

 

これにて、PascalVOC形式からCOCO形式への変換完了です。このCOCO形式のデータを用いてYOLOXの学習を行うことができます、

 

オススメ書籍

物体・画像認識と時系列データ処理入門

現場で使える!PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装

PyTorchで作る!深層学習モデル・AIアプリ開発入門

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

本記事では、VoTTで出力したPascalVOC形式のデータをYOLOXの学習で使うCOCO形式のデータに変換する方法を紹介しました。本記事の内容を用いることで、迅速にデータセットをPascalVOC形式からCOCO形式に変換することができ、前処理のコストを軽減して学習を実施することができます。