影象分割 把用labelme標註生成的資料集改成PaddleSeg支援的資料集格式
阿新 • • 發佈:2021-05-03
影象分割 把用labelme標註生成的資料集改成PaddleSeg支援的資料集格式
labelme標註後生成的資料集檔案格式
img.png
label.png
label_names.txt
label_viz.png
PaddleSeg建立自定義資料集的檔案格式
摘自PaddleSeg
labelme生成的資料集格式
格式轉換程式碼(ps: 只是提取檔案位置,沒有移動檔案)
def _sort_images(image_dir):
"""
對資料夾內的影象進行按照檔名排序
"""
images = []
labels = []
for image_name in os.listdir(image_dir):
if os.path.isdir(os.path.join(image_dir, image_name)):
images.append(os.path.join(os.path.join(image_dir, image_name), 'img.png'))
labels.append(os.path.join(os.path.join(image_dir, image_name), 'label.png' ))
return sorted(images), sorted(labels)
"""
這裡的分割符是\t,後面使用PaddleSeg的時候要注意修改相關程式碼,因為PaddleSeg讀取檔案時預設的分割符是空格。
當然也可以將這裡的\t替換為空格。
"""
def write_file(mode, images, labels):
with open('./{}.txt'.format(mode), 'w') as f:
for i in range(len(images)):
#f.write('{}\t{}\n'.format(images[i], labels[i]))
f.write('{} {}\n'.format(images[i], labels[i]))
"""
由於所有檔案都是散落在資料夾中,在訓練時我們需要使用的是資料集和標籤對應的資料關係,
所以我們第一步是對原始的資料集進行整理,得到資料集和標籤兩個陣列,分別一一對應。
這樣可以在使用的時候能夠很方便的找到原始資料和標籤的對應關係,否則對於原有的資料夾圖片資料無法直接應用。
"""
images, labels = _sort_images(images_path)
eval_num = int(image_count * 0.15)
"""
由於圖片數量有限,這裡的測試集和驗證集採用相同的一組圖片。
"""
write_file('train', images[:-eval_num], labels[:-eval_num])
write_file('test', images[-eval_num:], labels[-eval_num:])
write_file('eval', images[-eval_num:], labels[-eval_num:])
關於資料集的配置檔案格式
train_dataset:
type: Dataset#資料集型別
dataset_root: /home/aistudio #資料集所在根目錄
train_path: train.txt #用於訓練的資料集檔案
num_classes: 2 #分割的種類
transforms: #用於資料集增強
- type: ResizeStepScaling
min_scale_factor: 0.5
max_scale_factor: 2.0
scale_step_size: 0.25
- type: RandomPaddingCrop
crop_size: [512, 512]
- type: RandomHorizontalFlip
- type: RandomDistort
brightness_range: 0.4
contrast_range: 0.4
saturation_range: 0.4
- type: Normalize
mode: train
val_dataset:
type: Dataset
dataset_root: /home/aistudio
val_path: eval.txt#用於驗證的資料集檔案
transforms:
- type: Normalize
mode: val
num_classes: 2
test_dataset:
type: Dataset
dataset_root: /home/aistudio
val_path: test.txt#用於測試的資料集檔案
transforms:
- type: Normalize
mode: test
num_classes: 2
文章如有問題,勞請大家指正。
歡迎交流!