h5py檔案的建立和讀取,資料集的製作也不算很難
阿新 • • 發佈:2020-12-31
文章目錄
前言
提示:以下內容僅做參考:
本文是針對圖片資料集的製作,把影象資訊用h5py庫來儲存。
有錯誤或者有不足請在評論區指出,我會積極改正,十分感謝。
一、h5py是什麼?
h5py存放兩類資料,一種是datasets,一種是group。datasets是一種陣列類資料,和numpy差不多。group(組),類似字典。
若想要具體瞭解,請參考官網https://docs.h5py.org/en/latest/index.html
二、建立h5檔案
1.引入庫
程式碼如下(示例):
import os
import numpy as np
import cv2
import h5py
2.構建函式
程式碼如下(示例):
print(data.head())def save_image_to_h5py(path):
img_list = []
label_list = []
dir_counter = 0 #TwoClass裡有兩個資料夾,有兩類,分別為0,1 dir_counter就為了來方便後面label
#如果你的label不是0 ,1,是其他或者例如cat,dog類,這裡 也可以不用它,後面直接用檔名做label
for child_dir in os.listdir(path):
child_path = os.path.join(path,child_dir)
for dir_image in os.listdir(child_path): #遍歷二級檔案每個圖片並append資訊進陣列
img = cv2.imread(os.path.join(child_path,dir_image))
img_list. append(img)
label_list.append(dir_counter)
dir_counter += 1
img_np = np.array(img_list)
label_np = np.array(label_list)
print('資料集標籤順序:\n',label_np) #這裡我列印了label資訊,其對應圖片資訊,前6張為0,後9張為1
#所以標籤會是[0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 ]
#'a' ,如果已經有這個名字的h5檔案存在將不會開啟,目的為了防止誤刪資訊。
#‘w' ,如果有同名檔案也能開啟,但會覆蓋上次的內容。
with h5py.File('datasets/cat_or_not.h5','a') as f:
f.create_dataset('training_cat',data = img_np) #建立兩個資料集,分別為training_cat
f.create_dataset('training_label',data = label_np) #和training_label的陣列集
f.close()
我在註釋中已經寫的很詳盡了,如果還有懂的我在評論區回覆。
三、h5py的讀取
with h5py.File('datasets/cat_or_not.h5',"r") as f:
for key in f.keys():
print(f[key],key,f[key].name)
f.close()
直接上程式碼,這個和c語言讀取檔案有相似之處。讀取的內容可以看下:
總結
h5py的建立和讀取都不難,只要稍微一看都能懂,在此附上原始碼,只要你們稍微花那麼點時間看看,很容易懂。https://github.com/Confused-Pig/CreateH5File
以上就是今天要講的內容,本文僅僅簡單介紹了h5py的使用,僅懂它不難,但是要學會用它。在深度學習中很多地方都要用它,用上兩次就熟悉了。github裡的原始碼很容易懂,我裡面放了幾張圖片,儲存的是他們的畫素,你們實在不懂的就去執行一下,結合執行結果來看,就很容易了。