ターゲット検出データのアノテーションフォーマットとツールソフトウェアの紹介

1. データアノテーションの形式

実際によく使用されるターゲット検出データ形式は 3 つあり、1 つは Pascal VOC 形式、1 つは COCO 形式、最後の 1 つは YOLO 形式です。データ アノテーションの形式は、トレーニング フレームワークのデータ読み込み要件に対応しています。たとえば、paddledetection と mmdetection は COCO 形式と Pascal VOC 形式をサポートし、yolo シリーズのターゲット検出フレームワークは yolo 形式のデータをサポートします。

1.1.Pascal VOCフォーマット

背景

Pascal VOC 自体は 2005 年に始まり 2012 年まで続いたコンテストです。コンペティションの内容には、オブジェクト分類、ターゲット検出、オブジェクトセグメンテーション、ヒューマンレイアウト、行動分類が含まれます。使用するデータ セットは Pascal VOC データ セットで、主なデータ セットは Pascal VOC2007 と Pascal VOC2012 です。Pascal VOC データセットの構成形式は Pascal VOC フォーマットと呼ばれます。

データ形式とデータ表現

(1) Pascal VOC 形式データは、JPEGImages、Annotations、ImageSets/Main の 3 つのフォルダーで構成されます。
ここに画像の説明を挿入

(2) JPEGImages はすべての画像を保存するために使用され、
(3) Annotations は対応する注釈ファイル (1 つの画像が 1 つの注釈ファイルに対応) (通常は XML 注釈) を保存するために使用されます。注: paddleseg フレームワークでは、セマンティック セグメンテーションを実行するときに、png 形式の画像注釈が Annotations ディレクトリに保存されます。(4) train.txt、
val.txt、test.txt、trainval.txt は ImageSets/Main (つまりつまり、データセットのパーティショニング用です)。
(5) train.txt、val.txt、test.txt、trainval.txt はそれぞれ、どの画像を学習セット、検証セット、テストセット、学習検証セット (学習セット + 検証セット) として使用するかを指定します。各 txt の各行は画像の名前です (拡張子なし、cat10086.jpg がトレーニング セットとして選択されている場合、train.txt 内の特定の行は cat10086 になります)。
ここに画像の説明を挿入
ここに画像の説明を挿入

XML 内の情報の形式は次のとおりです。
ここに画像の説明を挿入

データに裏付けられたフレームワーク

Mmdetection や paddledetection などの主流のターゲット検出フレームワーク

1.2. COCOフォーマット

背景

COCO は、まず Microsoft によって構築された大規模なターゲット検出ベンチマーク データ セットであり、そのデータ形式は coco フォーマットと呼ばれます。検出、セグメンテーション、キーポイント推定などのタスクをサポートします。最も一般的に使用される Coco データ セットは COCO2017 データ セットで、データ アドレスは COCO - Common Objects in Context (cocodataset.org) です。
基本的な生成プロセス:
train、val、annotations の 3 つのフォルダーを作成する必要があります。このうち、trainとvalにはそれぞれ学習画像と検証画像が保存され、アノテーションにはアノテーションが保存されますが、VOCのように1枚の画像がアノテーションファイルに対応するのに対し、COCOのアノテーションファイルはサブディレクトリ内のすべての画像のアノテーションがjsonファイルに保存されます。 (つまり、データセット内のすべてのデータのラベルが json ファイルに保存されます)。train2017配下のすべての画像は1つのinstance_train.jsonに対応し、val配下のすべての画像は1つのinstance_val.jsonに対応しており、
COCO形式に直接ラベル付けする場合、ラベル付け前に学習セットと検証セットを分割する必要があることがわかります。

データ形式とデータ表現

フォローアップサプリメント

データに裏付けられたフレームワーク

Mmdetection や paddledetection などの主流のターゲット検出フレームワーク

1.3.YOLO データセット形式

背景

YOLO データセット形式の出現は、モデルの構成ファイルを変更することでデータをロードできるため、主に YOLO モデルのトレーニングを目的としていますが、唯一注意すべき点は、YOLO データセットのアノテーション形式がターゲットの位置情報を正規化していることです。ボックス (ここでの正規化とは、画像の幅と高さで除算することを指します)、

データ形式とデータ表現

ファイル形式に固定要件はありません (通常、画像には元の画像が保存され、ラベルにはテキストのラベル位置が保存されます)。基本的なデータ形式は次のとおりです。
ここに画像の説明を挿入

Txt タグの形式は次のとおりです。 {ターゲット カテゴリ ID} {ターゲットの中心点の正規化された x 座標} {ターゲットの中心点の正規化された y 座標} {正規化されたターゲット ボックスの幅 w} {正規化された h 後のターゲット ボックスの高さ}。他のデータとは異なり、yolo タグにはカテゴリ ID のみがあり、特定のカテゴリ名はありません。また、アノテーションボックスのxywh情報は相対的なサイズで記述されており、画像サイズの変化には影響されません。

ここに画像の説明を挿入

データに裏付けられたフレームワーク

Yolov5、yolov6、yolov7、yolov8 およびその他の yolo シリーズのターゲット検出フレームワーク

2. データセットアノテーションツール

データアノテーションツールは元データに相当し、通常、データアノテーションツールで生成されるラベルファイルは、対象検出時のデータアノテーション形式とは異なります。現在、一般的なデータ ラベル付けツールには、labelimg、labelme、および anylabeling が含まれます。

2.1 ラベル付け

Labelimg は、3 つの形式にラベルを付けることができるオープンソースのデータラベル付けツールです。ラベル付けできるのは正の長方形ボックス データのみです。つまり、ターゲット検出タスクにのみ使用できます。本ソフトウェアはPythonプログラムであり、インストールおよび起動コマンドはPython環境のターミナルで実行する必要があります。

ソフトウェアインストールコマンド

Python 環境がインストールされているターミナルに入り、次のコマンドを入力します。
pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple

ソフトウェア起動コマンド

labelimg 或 python -m labelimg

ソフトウェアインターフェース機能の説明

ソフトウェアのインターフェースは以下の図のようになり、データにラベルを付ける前に、データを選択して「Create RectBox」をクリックする必要があります。
ここに画像の説明を挿入

マークされたデータ形式は次のとおりで、pascal voc 形式と厳密に一致しています。ただし、データセットを自分で分割して txt ファイルを作成する必要があります。
ここに画像の説明を挿入

2.2 ラベル名

Labelme は、さまざまな形式の画像データ (多角形、長方形、円、ポリライン、線分、点など) にラベルを付けることができ、ターゲットの検出、画像のセグメンテーション、その他のタスクに使用できます。画像にはフラグの形式で注釈を付けることもできます (画像の分類やクリーニング タスクに使用できます)。Labelme はラベル情報を JSON ファイルに保存しますが、これはターゲット検出フレームワークに直接適用できず、独自のエンコードと変換が必要です。本ソフトウェアはPythonプログラムであり、インストールおよび起動コマンドはPython環境のターミナルで実行する必要があります。

ソフトウェアインストールコマンド

pip install labelme

ソフトウェア起動コマンド

Labelme 或 python -m labelme

ソフトウェアインターフェース機能の説明

ソフトウェア インターフェイスは次の図に示すように、データにラベルを付ける前に、データを選択する必要があります。
ここに画像の説明を挿入

アノテーションを付けたデータは以下のようなjsonファイルで、shapeフィールドにアノテーション情報が格納されます(各要素がアノテーション情報に対応し、shape_typeはアノテーションの種類[多角形、四角形、線分]、labelはアノテーションの種類を記述します)アノテーションの特定のカテゴリ [人や車などのオブジェクトのカテゴリ])。
ここに画像の説明を挿入

2.3 任意のラベル付け

anylabeling は、多角形、長方形、円、点、線などの形式でのデータのラベル付けをサポートする、深層学習モデルに基づく補助的なラベル付けソフトウェアです。補助アノテーション機能は、多角形アノテーション (SAM モデルに依存) および長方形ボックス アノテーション (YOLO モデルに依存) をサポートします。補助アノテーションを実行するときは、モデルを選択し (ソフトウェアが自動的にダウンロードします)、モデルの実行時に onnxruntime ライブラリに依存する必要があります。生成されるラベルファイル形式はlabelmeとまったく同じで、json形式であり、データ形式を変換するためにセルフプログラミングが必要です。

ソフトウェアインストールコマンド

pip install anylabeling

ソフトウェア起動コマンド

anylabeling
または
python -m anylabeling.app

ソフトウェアインターフェース機能の説明

ソフトウェアのデフォルトの手動注釈を入力します。補助注釈機能をアクティブにするには、ツールバーの下部にある脳をクリックする必要があります。
ここに画像の説明を挿入

補助注釈機能の使用プロセスは次のとおりです。
 左側の [Brain] ボタンを選択して、自動マーキングを有効にします。
 [モデル] ドロップダウン メニューから [セグメント モデル] タイプのモデルを選択します。モデルの精度と速度はモデルごとに異なります。このうち、Segment Anything Model (ViT-B) は最も高速ですが、精度が低いです。セグメント何でもモデル (ViT-H) は最も遅く、最も正確です。Quant は定量化されたモデルを表します。初めてこの機種を選択した場合、ダウンロードに時間がかかりますので、しばらくお待ちください。
 自動セグメンテーション マーキング ツールを使用してオブジェクトをマークします。
+点: オブジェクトに属する点を追加します。
-点: オブジェクトから除外する点を削除します。
+Rect: オブジェクトを含む長方形を描画します。Segment Anything はオブジェクトを自動的にセグメント化します。
クリア: すべての自動セグメンテーション マークをクリアします。
オブジェクトの完成 (f): 現在のタグが完成したら、ショートカット キー f を押し、タグ名を入力してオブジェクトを保存します。
生成されたjsonファイルは以下の通りで、labelmeと全く同じです。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/m0_74259636/article/details/132393909