人工智慧-深度學習-yolov3口罩佩戴識別

專注的阿熊發表於2022-04-27

"""

拆分資料集為 訓練集、測試集、驗證集

"""

import os

import random

# . 設定資料集比例

# 訓練集的比率

train_percent = 0.8

# 測試集佔測試驗證集的百分比

test_other_percent = 0.5

# . 獲取訓練集 , 驗證集和測試集的索引列表

# 標註資料地址

voc_annotations_path = 'Annotations'

# 劃分資料集的檔案位置

division_data_path = 'ImageSets/Main'

# 獲取所有的 標註資料 名稱列表

voc_annotations_list = os.listdir(voc_annotations_path)

# 所有標註資料的個數

voc_annotations_cnt = len(voc_annotations_list)

# 生成 檔案個數大小 的範圍 , 可以看成索引列表

list_range = range(voc_annotations_cnt)

# 獲取訓練集的個數

train_cnt = int(voc_annotations_cnt * train_percent)

# 從檔案中隨機獲取 train_cnt 個訓練驗證集的索引

train_index = random.sample(list_range, train_cnt)

# 從檔案中隨機獲取訓練驗證集的索引 ( 全部索引與訓練集做差集 )

train_val_index = list(set(list(list_range)).difference(set(train_index)))

# 計算需要獲取的測試訓練集的個數

test_val_cnt =外匯跟單gendan5.com voc_annotations_cnt - train_cnt

# 計算測試集個數

test_cnt = int(test_val_cnt * test_other_percent)

# 計算驗證集個數

val_cnt = test_val_cnt - test_cnt

# 測試集索引列表

test_index = random.sample(train_val_index, test_cnt)

# 驗證集索引列表

val_index = list(set(train_val_index).difference(set(test_index)))

# . 將各個資料集名稱寫入到檔案中

# 訓練集

train_object = open('%s/train.txt' % division_data_path, 'w')

# 測試集

test_object = open('%s/test.txt' % division_data_path, 'w')

# 驗證集

val_object = open('%s/val.txt' % division_data_path, 'w')

train_names = [voc_annotations_list[i][:-4] + '\n' for i in train_index]

train_object.writelines(train_names)

train_object.close()

test_names = [voc_annotations_list[i][:-4] + '\n' for i in test_index]

test_object.writelines(test_names)

test_object.close()

val_names = [voc_annotations_list[i][:-4] + '\n' for i in val_index]

val_object.writelines(val_names)

val_object.close()


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2889013/,如需轉載,請註明出處,否則將追究法律責任。

相關文章