-
大小: 33.96MB文件類型: .zip金幣: 1下載: 0 次發布日期: 2023-07-28
- 語言: 其他
- 標簽: olivettiface??人臉識別??
資源簡介
本文檔是CNN卷積神經網絡,用TensorFlow、Kreas兩個框架對olivettifaces人臉數據集進行識別
代碼片段和文件信息
#?-*-?coding:utf-8?-*-
#?-*-?author:zzZ_CMing??CSDN?address:https://blog.csdn.net/zzZ_CMing
#?-*-?2018/06/05;11:41
#?-*-?python3.5
“““
olivetti?Faces是紐約大學組建的一個比較小的人臉數據庫。有40個人,每人10張圖片,組成一張有400張人臉的大圖片。
像素灰度范圍在[0255]。整張圖片大小是1190*942,20行320列,所以每張照片大小是(1190/20)*(942/20)=?57*47
程序需配置h5py:python?-m?pip?install?h5py
博客地址:https://blog.csdn.net/zzZ_CMing,更多機器學習源碼
“““
import?numpy?as?np
from?PIL?import?Image
from?keras.models?import?Sequential
from?keras.layers?import?Dense?Dropout?Activation?Flatten
from?keras.layers?import?Conv2D?MaxPooling2D
from?keras.optimizers?import?SGD????#?梯度下降的優化器
from?keras.utils?import?np_utils
from?keras?import?backend?as?K
#?讀取整張圖片的數據,并設置對應標簽
def?get_load_data(dataset_path):
????img?=?Image.open(dataset_path)
????#?數據歸一化。asarray是使用原內存將數據轉化為np.ndarray
????img_ndarray?=?np.asarray(img?dtype?=?‘float64‘)/255
????#?400?pictures?size:?57*47?=?2679??
????faces_data?=?np.empty((400?2679))
????for?row?in?range(20):??
???????for?column?in?range(20):
???????????#?flatten可將多維數組降成一維
???????????faces_data[row*20+column]?=?np.ndarray.flatten(img_ndarray[row*57:(row+1)*57?column*47:(column+1)*47])
????#?設置圖片標簽
????label?=?np.empty(400)
????for?i?in?range(40):
????????label[i*10:(i+1)*10]?=?i
????label?=?label.astype(np.int)
????#?分割數據集:每個人前8張圖片做訓練,第9張做驗證,第10張做測試;所以train:320valid:40test:40
????train_data?=?np.empty((320?2679))
????train_label?=?np.empty(320)
????valid_data?=?np.empty((40?2679))
????valid_label?=?np.empty(40)
????test_data?=?np.empty((40?2679))
????test_label?=?np.empty(40)
????for?i?in?range(40):
????????train_data[i*8:i*8+8]?=?faces_data[i*10:i*10+8]?#?訓練集對應的數據
????????train_label[i*8:i*8+8]?=?label[i*10?:?i*10+8]???#?訓練集對應的標簽
????????valid_data[i]?=?faces_data[i*10+8]???#?驗證集對應的數據
????????valid_label[i]?=?label[i*10+8]???????#?驗證集對應的標簽
????????test_data[i]?=?faces_data[i*10+9]????#?測試集對應的數據
????????test_label[i]?=?label[i*10+9]????????#?測試集對應的標簽
????train_data?=?train_data.astype(‘float32‘)
????valid_data?=?valid_data.astype(‘float32‘)
????test_data?=?test_data.astype(‘float32‘)
???????
????result?=?[(train_data?train_label)?(valid_data?valid_label)?(test_data?test_label)]
????return?result
#?CNN主體
def?get_set_model(lr=0.005decay=1e-6momentum=0.9):
????model?=?Sequential()
????#?卷積1+池化1
????if?K.image_data_format()?==?‘channels_first‘:
????????model.add(Conv2D(nb_filters1?kernel_size=(3?3)?input_shape?=?(1?img_rows?img_cols)))
????else:
????????model.add(Conv2D(nb_filters1?kernel_size=(2?2)?input_shape?=?(img_rows?img_cols?1)))
????model.add(Activation(‘tanh‘))
????model.add(MaxPooling2D(pool_size=(2?2)))
????#?卷積2+池化2
????model.add(Conv2D(nb_filters2?kernel_size=(3?3)))
????model.add(Activation(‘tanh‘))??
????model.add(MaxPooling2D(pool_size=(2?2)))
????model.add(Dropout(0.25))??
????#?全連接層1+分類器層
????model.add(Flatten())??
????model.add(Dense(1000))???????#Full?connection
????model.add(Activation(‘tanh‘))?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-07-16?14:43??olivettifaces人臉數據庫識別\CNN_Kreas_olivettifaces\
?????文件????????6314??2018-07-16?14:43??olivettifaces人臉數據庫識別\CNN_Kreas_olivettifaces\CNN+Kreas框架識別oli人臉數據庫.py
?????文件????21019712??2018-07-04?09:30??olivettifaces人臉數據庫識別\CNN_Kreas_olivettifaces\model_weights.h5
?????文件?????1182905??2018-03-22?16:20??olivettifaces人臉數據庫識別\CNN_Kreas_olivettifaces\olivettifaces.gif
?????目錄???????????0??2018-07-09?14:17??olivettifaces人臉數據庫識別\CNN_tf_olivettifaces\
?????文件?????1182905??2018-03-22?16:20??olivettifaces人臉數據庫識別\CNN_tf_olivettifaces\olivettifaces.gif
?????文件????14751774??2018-07-04?09:33??olivettifaces人臉數據庫識別\CNN_tf_olivettifaces\params.pkl
?????文件???????15755??2018-07-05?13:58??olivettifaces人臉數據庫識別\CNN_tf_olivettifaces\train_CNN.py
?????文件????????7331??2018-03-23?16:22??olivettifaces人臉數據庫識別\CNN_tf_olivettifaces\use_CNN.py
- 上一篇:邁瑞各種儀器通訊協議說明
- 下一篇:軟件工程訂票系統測試分析報告
評論
共有 條評論