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. ラベル
ターゲット オブジェクトを長方形のフレームで囲み、対応するラベルを入力します。
注釈が完了したら、保存したフォルダーを選択し、上で作成した注釈ファイルに保存します。
最初の画像に注釈が付けられ、ショートカット キーを使用して他の画像に注釈が付けられます。
注釈のショートカット キー:
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 のソースコード