-
大小: 12KB文件類型: .py金幣: 1下載: 0 次發(fā)布日期: 2021-05-18
- 語言: Python
- 標(biāo)簽: TensorFlow??人臉識(shí)別??
資源簡介
TensorFlow實(shí)現(xiàn)人臉識(shí)別(3)--------對(duì)人臉樣本進(jìn)行訓(xùn)練,保存人臉識(shí)別模型
具體解釋參考http://blog.csdn.net/yunge812/article/details/79447179
代碼片段和文件信息
#-*-?coding:UTF-8?-*-
import?random
import?os
import?numpy?as?np
from?sklearn.cross_validation??import?train_test_split
from?keras.preprocessing.image?import?ImageDataGenerator
from?keras.models?import?Sequential
from?keras.layers?import?Dense?Dropout?Activation?Flatten
from?keras.layers?import?Convolution2D?MaxPooling2D
from?keras.optimizers?import?SGD
from?keras.utils?import?np_utils
from?keras.models?import?load_model
from?keras?import?backend?as?K
import?cv2
from?imgProcess?import?load_dataset?resize_imageIMAGE_SIZE?#調(diào)用兩個(gè)函數(shù)和一個(gè)宏定義
class?Dataset:
????def?__init__(selfpath_name):
????????self.train_img????=?None
????????self.train_labels?=?None
????????self.valid_img????=?None
????????self.valid_labels?=?None
????????self.test_img?????=?None
????????self.test_labels??=?None
????????self.path_name????=?path_name
????????self.input_shape??=?None
????
????def?loadAllData(selfpath_name):
????????positive_data_imagespositive_data_labels=load_dataset(path_name‘traindata‘)
????????negative_data_imagesnegative_data_labels=load_dataset(path_name‘testdata‘)
????????images?=np.concatenate((positive_data_images?negative_data_images)?axis=0)?#數(shù)組拼接
????????labels=np.concatenate((positive_data_labels?negative_data_labels)?axis=0)
????????return?imageslabels
????
?????#?加載數(shù)據(jù)集并按照交叉驗(yàn)證的原則劃分?jǐn)?shù)據(jù)集并進(jìn)行相關(guān)預(yù)處理工作
????def?load(selfimg_rows=IMAGE_SIZEimg_cols=IMAGE_SIZEimg_channels=3nb_classes=2):
????????imageslabels?=?self.loadAllData(self.path_name)?#images為四維數(shù)組,尺寸為(圖片數(shù)量總(包括test+train)*IMAGE_SIZE*IMAGE_SIZE*3)
????????#隨機(jī)劃分訓(xùn)練集和驗(yàn)證集
????????train_imagesvalid_imagestrain_labelsvalid_labels?=?train_test_split(images?labels?test_size?=?0.3random_state?=?random.randint(0100))
????????_????????????test_images_????????????test_labels?=?train_test_split(images?labels?test_size?=?0.3random_state?=?random.randint(0100))
????????
????????#?當(dāng)前的維度順序如果為‘th‘,則輸入圖片數(shù)據(jù)時(shí)的順序?yàn)椋篶hannelsrowscols,否則:rowscolschannels
????????#?這部分代碼就是根據(jù)keras庫要求的維度順序重組訓(xùn)練數(shù)據(jù)集
????????if?K.image_dim_ordering()?==?‘th‘:??#theano的格式
????????????train_images?????=?train_images.reshape(train_images.shape[0]?img_channels?img_rows?img_cols)
????????????valid_images?????=?valid_images.reshape(valid_images.shape[0]?img_channels?img_rows?img_cols)
????????????test_images??????=?test_images.reshape(?test_images.shape[0]??img_channels?img_rows?img_cols)
????????????self.input_shape?=?(img_channels?img_rows?img_cols)
????????else:??#?tensorflow格式
????????????train_images?????=?train_images.reshape(train_images.shape[0]?img_rows?img_cols?img_channels)
????????????valid_images?????=?valid_images.reshape(valid_images.shape[0]?img_rows?img_cols?img_channels)
????????????test_images??????=?test_images.reshape(?test_images.shape[0]??img_rows?img_cols?img_channels)
????????????self.input_shape?=?(img_rows?img_cols?img_channels)
????????
?????????#?輸出訓(xùn)練集、驗(yàn)證集、測試集的數(shù)量
????????print(train_images.shape[0]?‘train?samples‘
評(píng)論
共有 條評(píng)論