Mask-RCNN インスタンス セグメンテーション データ セットの作成に基づく PASCAL VOC データ セットの作成

1. 説明と準備

今回の実験データセット作成は、マスク-RCNNインスタンスセグメンテーション用に作成されたPASCAL VOCデータセットの作成とpycharm環境での実証です。

1. まず、次のフォルダーを手動で作成します。

ここに画像の説明を挿入します
後の操作を容易にするために、上記の 4 つのフォルダーを手動で作成します。

2. 設置環境
pip install labelimg
pip install labelme

pycharm ソフトウェアのターミナルに上記のコードを入力し、labelimg ライブラリと labelme ライブラリをインストールします。

2. Annotationsフォルダ配下にXMLファイル作成(対象検出データアノテーション)

XML ファイルにラベルを付けるには、labelimg ツールを使用します。操作は次のとおりです。

1. 環境を開く

以下の図のように、labelimg が Python のバージョン 3.10 をサポートしておらず、バージョン 3.9 をサポートしているため、最初のオープンに失敗し、次のようなエラーが報告されました。そこで、python3.9をインストールしたconda環境に切り替えました。ここに画像の説明を挿入します

2. データセットをロードします

注釈を付ける必要があるデータ セット、つまり、JPEGImages フォルダーに保存した元の画像の保存場所を選択します。ここに画像の説明を挿入します
注釈の種類を選択: 注釈用の長方形のボックスを選択します
ここに画像の説明を挿入します

3. ラベル

ターゲット オブジェクトを長方形のフレームで囲み、対応するラベルを入力します。![ここに画像の説明を挿入](https://img-blog.csdnimg.cn/98396e4aafe94b24b7048824d35b0a30.png)

注釈が完了したら、保存したフォルダーを選択し、上で作成した注釈ファイルに保存します。
ここに画像の説明を挿入します
最初の画像に注釈が付けられ、ショートカット キーを使用して他の画像に注釈が付けられます。
注釈のショートカット キー:

Wを押してマークを付けます

Ctrl+S 保存

d 次のボタンに切り替えます。

アノテーションが完了するまでは、VOC の Annotations ファイルの下に xml ファイルが取得されます。
アノテーションが完了した後の xml ファイルは次のとおりです。
ここに画像の説明を挿入します
xml アノテーション ファイルの内容の一部は、以下のとおりです。

<annotation>
	<folder>images</folder>
	<filename>0ada72de6a864e998c6da2192e327c22.jpg</filename>
	<path>C:\Users\xxx\Desktop\VOC数据集制作\images\0ada72de6a864e998c6da2192e327c22.jpg</path>
	<source>
		<database>Unknown</database>
	</source>
	<size>
		<width>640</width>
		<height>640</height>
		<depth>3</depth>
	</size>
	<segmented>0</segmented>
	<object>
		<name>horse</name>
		<pose>Unspecified</pose>
		<truncated>0</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>36</xmin>
			<ymin>92</ymin>
			<xmax>510</xmax>
			<ymax>626</ymax>
		</bndbox>
	</object>
</annotation>

XML ファイルのアノテーションが完了しました

3. SegmentationObject フォルダー内のインスタンス セグメンテーション ファイルの注釈

1. labelme ツールを使用してこのファイルにラベルを付け、pycharm で開き、ターミナルに「labelme」と入力します。

ここに画像の説明を挿入します

2. 注釈データを選択 - JPEGImages フォルダーを選択

ここに画像の説明を挿入します
ここに画像の説明を挿入します

3. ラベル付け方法を選択します

ここに画像の説明を挿入します

4. ラベル付けを開始します - エッジ上のターゲット オブジェクトにマークを付けます - ラベル付けを完了し、対応するラベルを入力します (ラベル名は上記の XML ラベル付けのラベル名と一致している必要があることに注意してください)

ここに画像の説明を挿入します
注釈が完了したら、Ctrl+S を押して保存し、元のフォルダーに保存します。
ここに画像の説明を挿入します
注釈の続行:
ここに画像の説明を挿入します
ここに画像の説明を挿入します
以下に示すように、マークされた最後の画像は json ファイルに対応します (注釈を付けたのは 3 つの画像のみです)。
ここに画像の説明を挿入します

5. labelme処理ファイルをダウンロードする

ダウンロード URL: labelme-instance セグメンテーション処理ソース コード
. クリックして上記 URL を入力し、次のようにソース コードをダウンロードします:
ここに画像の説明を挿入します
ダウンロードしたソース コードを解凍すると、labelme-main という名前のフォルダーが作成されます。
注釈付きの画像と対応する json ファイルを、ダウンロードしたソース コードのこのパスにコピーします。
ここに画像の説明を挿入します
pycharm ターミナル パス cd で次のパスに移動します。
labelme-main\examples\instance_segmentation\data_annotated
ここに画像の説明を挿入します
次の txt フォルダーを開き、ラベル名を内部に置きます。 1 行目と 2 行目は変更せず、3 行目からラベル名を入力します。
ここに画像の説明を挿入します
ターミナルに次のコマンドを入力して、データ アノテーション処理を実行します。

python labelme2voc.py data_annotated data_dataset_voc --labels labels.txt

ここに画像の説明を挿入します
処理が完了すると、次の場所に data_dataset_voc フォルダーが生成されます。
ここに画像の説明を挿入します
このフォルダーには次のデータが含まれます。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
インスタンス セグメンテーション アノテーション ファイルを、最初に作成した SegmentationObject フォルダーにコピーします

6. ImageSet/セグメンテーションデータの作成

ここに画像の説明を挿入します
次のコードを実行します。

from sklearn.model_selection import train_test_split
import os

imagedir = r'C:\Users\xxx\Desktop\VOC数据集制作\SegmentationObject'
outdir = r'C:\Users\xxx\Desktop\VOC数据集制作\ImageSets\Segmentation/'

images = []
for file in os.listdir(imagedir):
    filename = file.split('.')[0]
    images.append(filename)

train, test = train_test_split(images, train_size=0.9,random_state=0)#90%
val, test = train_test_split(test, train_size=0.2 / 0.3, random_state=0)#剩下的百分之十,前者占2后者占3

with open(outdir + "train.txt", 'w') as f:
    f.write('\n'.join(train))

with open(outdir + "val.txt", 'w') as f:
    f.write('\n'.join(val))

with open(outdir + "test.txt", 'w') as f:
    f.write('\n'.join(test))

ここに画像の説明を挿入します
操作が完了すると、ディレクトリに次のデータが生成されます。
ここに画像の説明を挿入します
この時点で、Mask_RCNN モデルに必要な標準 VOC データ セットが生成されています。
ここに画像の説明を挿入します

標準データ Mask-RCN Mask-RCNN のソースコード

おすすめ

転載: blog.csdn.net/weixin_45736855/article/details/132303996