CV:基于Keras利用CNN主流架构之mini_XCEPTION训练情感分类模型hdf5并保存到指定文件夹下

目录

图示过程

核心代码


图示过程

核心代码

def mini_XCEPTION(input_shape, num_classes, l2_regularization=0.01):regularization = l2(l2_regularization)# baseimg_input = Input(input_shape)x = Conv2D(8, (3, 3), strides=(1, 1), kernel_regularizer=regularization,use_bias=False)(img_input)x = BatchNormalization()(x)x = Activation('relu')(x)x = Conv2D(8, (3, 3), strides=(1, 1), kernel_regularizer=regularization,use_bias=False)(x)x = BatchNormalization()(x)x = Activation('relu')(x)# module 1residual = Conv2D(16, (1, 1), strides=(2, 2),padding='same', use_bias=False)(x)residual = BatchNormalization()(residual)x = SeparableConv2D(16, (3, 3), padding='same',kernel_regularizer=regularization,use_bias=False)(x)x = BatchNormalization()(x)x = Activation('relu')(x)x = SeparableConv2D(16, (3, 3), padding='same',kernel_regularizer=regularization,use_bias=False)(x)x = BatchNormalization()(x)x = MaxPooling2D((3, 3), strides=(2, 2), padding='same')(x)x = layers.add([x, residual])# module 2residual = Conv2D(32, (1, 1), strides=(2, 2),padding='same', use_bias=False)(x)residual = BatchNormalization()(residual)x = SeparableConv2D(32, (3, 3), padding='same',kernel_regularizer=regularization,use_bias=False)(x)x = BatchNormalization()(x)x = Activation('relu')(x)x = SeparableConv2D(32, (3, 3), padding='same',kernel_regularizer=regularization,use_bias=False)(x)x = BatchNormalization()(x)x = MaxPooling2D((3, 3), strides=(2, 2), padding='same')(x)x = layers.add([x, residual])# module 3residual = Conv2D(64, (1, 1), strides=(2, 2),padding='same', use_bias=False)(x)residual = BatchNormalization()(residual)x = SeparableConv2D(64, (3, 3), padding='same',kernel_regularizer=regularization,use_bias=False)(x)x = BatchNormalization()(x)x = Activation('relu')(x)x = SeparableConv2D(64, (3, 3), padding='same',kernel_regularizer=regularization,use_bias=False)(x)x = BatchNormalization()(x)x = MaxPooling2D((3, 3), strides=(2, 2), padding='same')(x)x = layers.add([x, residual])# module 4residual = Conv2D(128, (1, 1), strides=(2, 2),padding='same', use_bias=False)(x)residual = BatchNormalization()(residual)x = SeparableConv2D(128, (3, 3), padding='same',kernel_regularizer=regularization,use_bias=False)(x)x = BatchNormalization()(x)x = Activation('relu')(x)x = SeparableConv2D(128, (3, 3), padding='same',kernel_regularizer=regularization,use_bias=False)(x)x = BatchNormalization()(x)x = MaxPooling2D((3, 3), strides=(2, 2), padding='same')(x)x = layers.add([x, residual])x = Conv2D(num_classes, (3, 3),#kernel_regularizer=regularization,padding='same')(x)x = GlobalAveragePooling2D()(x)output = Activation('softmax',name='predictions')(x)model = Model(img_input, output)return model
#CV:利用CNN主流架构之一的XCEPTION训练情感分类模型.hdf5并保存到指定文件夹下边
from keras.callbacks import CSVLogger, ModelCheckpoint, EarlyStopping
from keras.callbacks import ReduceLROnPlateau
from keras.preprocessing.image import ImageDataGeneratorfrom models.cnn import mini_XCEPTION# parameters 1、定义参数:每个batch的采样本数、训练轮数、输入shape、部分比例分离用于验证、冗长参数、分类个数、patience、loghdf5保存路径
batch_size = 32    #整数,指定进行梯度下降时每个batch包含的样本数。训练时一个batch的样本会被计算一次梯度下降,使目标函数优化一步。
num_epochs = 10000 #整数,训练终止时的epoch值,训练将在达到该epoch值时停止,当没有设置initial_epoch时,它就是训练的总轮数,否则训练的总轮数为epochs - inital_epoch
input_shape = (64, 64, 1)
validation_split = .2  #0~1之间的浮点数,用来指定训练集的一定比例数据作为验证集。验证集将不参与训练,并在每个epoch结束后测试的模型的指标,如损失函数、精确度等。
verbose = 1  #日志显示,0为不在标准输出流输出日志信息,1为输出进度条记录,2为每个epoch输出一行记录
num_classes = 7
patience = 50  #当monitor不再有改善的时候就会停止训练,这个可以通过patience看出来
base_path = '../trained_models/emotion_models/'# data generator调用ImageDataGenerator函数实现实时数据增强生成小批量的图像数据。
data_generator = ImageDataGenerator(featurewise_center=False,featurewise_std_normalization=False,rotation_range=10,width_shift_range=0.1,height_shift_range=0.1,zoom_range=.1,horizontal_flip=True)# model parameters/compilation2、建立XCEPTION模型并compile编译配置参数,最后输出网络摘要
model = mini_XCEPTION(input_shape, num_classes)  #mini_XCEPTION函数(XCEPTION是属于CNN下目前最新的一种模型)实现输入形状、分类个数两个参数建立模型
model.compile(optimizer='adam', loss='categorical_crossentropy',  #model.compile函数(属于keras库)用来配置训练模型参数,可以指定你设想的随机梯度下降中的网络的损失函数、优化方式等参数metrics=['accuracy'])
model.summary()  #Prints a string summary of the network.#3、指定要训练的数据集(emotion→fer2013即喜怒哀乐数据集)
datasets = ['fer2013']
#4、for循环实现callbacks、loading dataset
for dataset_name in datasets:  print('Training dataset:', dataset_name)# callbacks回调:通过调用CSVLogger、EarlyStopping、ReduceLROnPlateau、ModelCheckpoint等函数得到训练参数存到一个list内log_file_path = base_path + dataset_name + '_emotion_training.log'csv_logger = CSVLogger(log_file_path, append=False)  #Callback that streams epoch results to a csv file.early_stop = EarlyStopping('val_loss', patience=patience) #Stop training when a monitored quantity has stopped improving.reduce_lr = ReduceLROnPlateau('val_loss', factor=0.1,  #Reduce learning rate when a metric has stopped improving.patience=int(patience/4), verbose=1)trained_models_path = base_path + dataset_name + '_mini_XCEPTION'model_names = trained_models_path + '.{epoch:02d}-{val_acc:.2f}.hdf5'model_checkpoint = ModelCheckpoint(model_names, 'val_loss', verbose=1,  #Save the model after every epochsave_best_only=True)callbacks = [model_checkpoint, csv_logger, early_stop, reduce_lr] ## loading dataset加载数据集:通过调用DataManager、data_loader = DataManager(dataset_name, image_size=input_shape[:2]) #自定义DataManager函数实现根据数据集name进行加载faces, emotions = data_loader.get_data() #自定义get_data函数根据不同数据集name得到各自的ground truth data,faces = preprocess_input(faces)  #自定义preprocess_input函数:处理输入的数据,先转为float32类型然后/ 255.0num_samples, num_classes = emotions.shape  #shape函数读取矩阵的长度train_data, val_data = split_data(faces, emotions, validation_split)  #自定义split_data对数据整理各取所得train_data、 val_data train_faces, train_emotions = train_data#training model调用fit_generator函数训练模型model.fit_generator(data_generator.flow(train_faces, train_emotions,  #flow函数返回Numpy Array Iterator迭代batch_size),steps_per_epoch=len(train_faces) / batch_size,epochs=num_epochs, verbose=1, callbacks=callbacks,validation_data=val_data)  #fit_generator函数Fits the model on data generated batch-by-batch by a Python generator

CV:基于Keras利用CNN主流架构之mini_XCEPTION训练情感分类模型hdf5并保存到指定文件夹下相关推荐

  1. CV:基于Keras利用CNN主流架构之mini_XCEPTION训练性别分类模型hdf5并保存到指定文件夹下

    CV:基于Keras利用CNN主流架构之mini_XCEPTION训练性别分类模型hdf5并保存到指定文件夹下 目录 图示过程 核心代码 图示过程 核心代码 from keras.callbacks ...

  2. pyaudio:基于pyaudio利用Python编程从电脑端录制音频保存到指定文件夹+将录音上传服务器+录音进行识别并转为文本保存

    pyaudio:基于pyaudio利用Python编程从电脑端录制音频保存到指定文件夹+将录音上传服务器+录音进行识别并转为文本保存 目录 输出结果 代码实现 输出结果 代码实现 # -*- codi ...

  3. mysql xp cmdshell_LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句...

    LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句 LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件 ...

  4. Py:利用pyautogui实现自动将pdf文件(需手动设定pdf总页数)自动翻页并截取另存为图片形式,或自动隔0.1秒自动截笔记本全屏保存到指定文件夹

    Py:利用pyautogui实现自动将pdf文件(需手动设定pdf总页数)自动翻页并截取另存为图片形式,或自动隔0.1秒自动截笔记本全屏保存到指定文件夹 目录 实现步骤和结果 核心代码 实现步骤和结果 ...

  5. 利用python批量查询企业信息_python实现批量获取指定文件夹下的所有文件的厂商信息...

    本文实例讲述了python实现批量获取指定文件夹下的所有文件的厂商信息的方法.分享给大家供大家参考.具体如下: 功能代码如下: import os, string, shutil,re import ...

  6. keras数据增广并保存到本地文件夹

    当需要对指定文件夹下的图片进行数据增广时,使用keras的ImageDataGenerator类的flow_from_directory()方法可快速的实现 1.首先实例化ImageDataGener ...

  7. CV:基于Keras利用训练好的hdf5模型进行目标检测实现输出模型中的脸部表情或性别的gradcam(可视化)

    CV:基于Keras利用训练好的hdf5模型进行目标检测实现输出模型中的脸部表情或性别的gradcam(可视化) 目录 设计思路 核心代码 设计思路 核心代码 #CV:基于keras利用训练好的hdf ...

  8. CV:基于keras利用cv2自带两步检测法对《跑男第六季第五期》之如花片段(或调用摄像头)进行实时性别脸部表情检测

    CV:基于keras利用cv2自带两步检测法对<跑男第六季第五期>之如花片段(或调用摄像头)进行实时性别&脸部表情检测 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心 ...

  9. Keras之CNN:基于Keras利用cv2建立训练存储卷积神经网络模型(2+1)并调用摄像头进行实时人脸识别

    Keras之CNN:基于Keras利用cv2建立训练存储卷积神经网络模型(2+1)并调用摄像头进行实时人脸识别 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 # -*- codin ...

最新文章

  1. 植树月收尾:合种油松/华山松/云杉/胡杨
  2. MongoDB学习(五)使用Java驱动程序3.3操作MongoDB快速入门
  3. c语言开发破解pdf软件,ARM处理器与C语言开发应用(第2版) PDF
  4. 使用python中的networkx来生成一个图
  5. last-child 选取不到指定元素,失去效果
  6. vue 给iframe设置src_使用不带src属性的vuejs在iframe中渲染组件
  7. 针对笔记本电源已接通未充电的提示怎么办
  8. win7计算机 管理缺失文件夹,win7缺失dll文件一键修复的方法
  9. svm图像分割matlab,python实现
  10. 熊啸锋:在线生成个人网站,如何建立个人网站教程
  11. Vue中minxis的使用
  12. VS2013 如何创建应用程序图标
  13. 你愿意做高学历却抑郁的人,还是低学历开心的人?(持续更新中)
  14. pa服务器系统,常见问题
  15. HTML还可以放音乐,放视频(真的吗?)
  16. 笔记本重置找不到恢复环境_帮您处理win10系统重置时提示“找不到恢复环境”的详细步骤...
  17. 5.4 马氏链-平稳测度(Durrett)答案
  18. Postgresql 逆向工程的SQL文
  19. vue全家桶——vuex
  20. 誓死要将Notepad++拉下马,大佬推出了一款国产开源编辑器.....

热门文章

  1. Lambda 表达式的应用
  2. (简单)华为荣耀4A SCL-TL00的usb调试模式在哪里打开的方法
  3. python——type()、metaclass元类和精简ORM框架
  4. 1491. [NOI2007]社交网络【最短路计数】
  5. 十分钟成为 TiDB Contributor,还送限量版马克杯
  6. linux的mysql修改用户密码与忘记密码的方法
  7. 安装Mysql与nginx结合的小型服务
  8. 使用ASP生成HTML文件
  9. FireWork 制作android 应用程序 icon
  10. 面试:如何从 100 亿 URL 中找出相同的 URL?