在訓練模型前,要把資料集進行分割,按照一定比例分成訓練集、測試集、驗證集,在有些時候也可以忽略測試集,筆者這裡是分了測試集(訓練集:測試集:驗證集=8:1:1),廢話不說,直接上**
# h_split.py
import os
from shutil import copy
import random
defmkfile
(file):
ifnot os.path.exists(
file):
os.makedirs(
file
)file
='h_data/h_photos'
h_class =
[cla for cla in os.listdir(
file)if
".txt"
notin cla]
# cla for cla in os.listdir(file) if ".txt" not in cla
# 查詢file目錄下所有的檔案,也就說分類的類別即根據file目錄下的資料夾個數確定分類的類別
# 建立訓練集
mkfile(
'h_data/train'
)for cla in helmet_class:
mkfile(
'h_data/train/'
+cla)
# 建立測試集
mkfile(
'h_data/test'
)# 建立驗證集
mkfile(
'h_data/val'
)for cla in helmet_class:
mkfile(
'h_data/val/'
+cla)
split_rate =
0.1for cla in h_class:
cla_path =
file
+'/'
+ cla +
'/' images = os.listdir(cla_path)
# images儲存了所有的名稱
num =
len(images)
eval_index = random.sample(images, k=
int(num*split_rate)
)# print(eval_index)
# 從images列表中抽取k個,num為總數,split_rate為自定義的比例
# 隨機抽取出的資料為驗證集, eval_index為名稱
rest_images =
list
(set
(images)
.difference(
set(eval_index)))
#取images和eval_index的差集,得到未在eval_index中的
test_index = random.sample(rest_images, k=
int(num*split_rate)
)# 得到測試集資料
for index, image in
enumerate
(images)
:# enumerate()函式按照索引序列遍歷物件
if image in eval_index:
image_path = cla_path + image
new_path =
'h_data/val/'
+ cla
copy(image_path, new_path)
elif image in test_index:
image_path = cla_path + image
new_path =
'h_data/test/'
copy(image_path, new_path)
else
: image_path = cla_path + image
new_path =
'h_data/train/'
+ cla
copy(image_path, new_path)
print
("\r[{}] processing [{}/{}]"
.format
(cla, index+
1, num)
, end="")
# processing bar
print()
print
("processing done!"
)
特別說明1.file
:要換成自己資料所在的目錄
2.筆者的目錄結構如下:
3.資料分割的檔案(h_split.py
)同h_data
放在同一目錄下
深度學習 語義分割總結
翻譯自qure.ai 什麼是語義分割 對的每個畫素都做分類。較為重要的語義分割資料集有 voc2012 以及 mscoco 有哪幾種方法 傳統機器學習方法 如畫素級的決策樹分類,參考textonforest 以及 random forest based classifiers 再有就是深度學習方法。...
深度學習(一)深度學習學習資料
持續更新 一 學習清單 1 收集了各種最新最經典的文獻,神經網路的資源列表 2 計算機視覺學習清單 3 機器學習學習清單 二 訓練資料 人臉資料 1 香港中文大學訓練資料集 此資料庫包含了20w張人臉,每張標註了5個特徵點 以及幾十種屬性 是否微笑 膚色 髮色 性別等屬性 2 68個人臉特徵點 3 ...
語義分割 基於openCV和深度學習(一)
語義分割 基於opencv和深度學習 一 semantic segmentation with opencv and deep learning 傳統的分割方法是將影象分割為若干部分 標準化切割 圖形切割 抓取切割 超畫素等 然而,演算法並沒有真正理解這些部分所代表的內容。另一方面,語義分割演算法試...