DL之AlexNet(Keras框架):利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型→加载模型)

简介: DL之AlexNet(Keras框架):利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型→加载模型)


目录

利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型)

设计思路

处理过程及结果呈现

基于ImageDataGenerator实现数据增强

类AlexNet代码


相关文章

DL之AlexNet(Keras框架):利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型)

DL之AlexNet(Keras框架):利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型)实现

利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型→加载模型)

设计思路

处理过程及结果呈现

Found 17500 images belonging to 2 classes.

Found 7500 images belonging to 2 classes.

1. _________________________________________________________________
2. Layer (type)                 Output Shape              Param #   
3. =================================================================
4. input_1 (InputLayer)         (None, 150, 150, 3)       0
5. _________________________________________________________________
6. conv2d_1 (Conv2D)            (None, 148, 148, 64)      1792
7. _________________________________________________________________
8. batch_normalization_1 (Batch (None, 148, 148, 64)      256
9. _________________________________________________________________
10. activation_1 (Activation)    (None, 148, 148, 64)      0
11. _________________________________________________________________
12. max_pooling2d_1 (MaxPooling2 (None, 74, 74, 64)        0
13. _________________________________________________________________
14. conv2d_2 (Conv2D)            (None, 72, 72, 64)        36928
15. _________________________________________________________________
16. batch_normalization_2 (Batch (None, 72, 72, 64)        256
17. _________________________________________________________________
18. activation_2 (Activation)    (None, 72, 72, 64)        0
19. _________________________________________________________________
20. max_pooling2d_2 (MaxPooling2 (None, 36, 36, 64)        0
21. _________________________________________________________________
22. conv2d_3 (Conv2D)            (None, 34, 34, 128)       73856
23. _________________________________________________________________
24. batch_normalization_3 (Batch (None, 34, 34, 128)       512
25. _________________________________________________________________
26. activation_3 (Activation)    (None, 34, 34, 128)       0
27. _________________________________________________________________
28. max_pooling2d_3 (MaxPooling2 (None, 17, 17, 128)       0
29. _________________________________________________________________
30. conv2d_4 (Conv2D)            (None, 15, 15, 128)       147584
31. _________________________________________________________________
32. batch_normalization_4 (Batch (None, 15, 15, 128)       512
33. _________________________________________________________________
34. activation_4 (Activation)    (None, 15, 15, 128)       0
35. _________________________________________________________________
36. max_pooling2d_4 (MaxPooling2 (None, 7, 7, 128)         0
37. _________________________________________________________________
38. flatten_1 (Flatten)          (None, 6272)              0
39. _________________________________________________________________
40. dense_1 (Dense)              (None, 64)                401472
41. _________________________________________________________________
42. batch_normalization_5 (Batch (None, 64)                256
43. _________________________________________________________________
44. activation_5 (Activation)    (None, 64)                0
45. _________________________________________________________________
46. dropout_1 (Dropout)          (None, 64)                0
47. _________________________________________________________________
48. dense_2 (Dense)              (None, 1)                 65
49. _________________________________________________________________
50. activation_6 (Activation)    (None, 1)                 0
51. =================================================================
52. Total params: 663,489
53. Trainable params: 662,593
54. Non-trainable params: 896
55. _________________________________________________________________
56. None
57. Epoch 1/10
58.  - 837s - loss: 0.8109 - binary_accuracy: 0.5731 - val_loss: 0.7552 - val_binary_accuracy: 0.6275
59. Epoch 2/10
60.  - 972s - loss: 0.6892 - binary_accuracy: 0.6184 - val_loss: 0.6323 - val_binary_accuracy: 0.6538
61. Epoch 3/10
62.  - 888s - loss: 0.6773 - binary_accuracy: 0.6275 - val_loss: 0.6702 - val_binary_accuracy: 0.6475
63. Epoch 4/10
64.  - 827s - loss: 0.6503 - binary_accuracy: 0.6522 - val_loss: 1.4757 - val_binary_accuracy: 0.5437
65. Epoch 5/10
66.  - 775s - loss: 0.6024 - binary_accuracy: 0.6749 - val_loss: 0.5872 - val_binary_accuracy: 0.6975
67. Epoch 6/10
68.  - 775s - loss: 0.5855 - binary_accuracy: 0.6935 - val_loss: 1.6343 - val_binary_accuracy: 0.5075
69. Epoch 7/10
70.  - 781s - loss: 0.5725 - binary_accuracy: 0.7117 - val_loss: 1.0417 - val_binary_accuracy: 0.5850
71. Epoch 8/10
72.  - 770s - loss: 0.5594 - binary_accuracy: 0.7268 - val_loss: 0.6793 - val_binary_accuracy: 0.6150
73. Epoch 9/10
74.  - 774s - loss: 0.5619 - binary_accuracy: 0.7239 - val_loss: 0.7271 - val_binary_accuracy: 0.5737
75. Epoch 10/10
76.  - 772s - loss: 0.5206 - binary_accuracy: 0.7485 - val_loss: 1.2269 - val_binary_accuracy: 0.5564
77. train_history.history {'val_loss': [0.7552271389961243, 0.6323019933700561, 0.6702361726760864, 1.4756725096702576, 0.5872411811351776, 1.6343200182914734, 1.0417238283157348, 0.679338448047638, 0.7270535206794739, 1.2268943945566813], 'val_binary_accuracy': [0.6275, 0.65375, 0.6475, 0.54375, 0.6975, 0.5075, 0.585, 0.615, 0.57375, 0.5564102564102564], 'loss': [0.8109277236846185, 0.6891729639422509, 0.6772915293132106, 0.6502932430275025, 0.6023876513204267, 0.5855168705025027, 0.5725259766463311, 0.5594036031153894, 0.561434359863551, 0.5205760602989504], 'binary_accuracy': [0.5730846774193549, 0.6184475806451613, 0.6275201612903226, 0.6522177419354839, 0.6748991935483871, 0.6935483870967742, 0.7116935483870968, 0.7268145161290323, 0.7242424240015974, 0.7484879032258065]}
78.

基于ImageDataGenerator实现数据增强

扩充数据集大小,增强模型的泛化能力。比如进行旋转、变形、归一化等。

  • 扩充数据量:对图像作简单的预处理(如缩放,改变像素值范围);
    随机打乱图像顺序,并且在图像集上无限循环(不会出现数据用完的情况);
    对图像加入扰动,大大增大数据量,避免多次输入相同的训练图像产生过拟合。
  • 优化训练效率:训练神经网络时经常需要将数据分成小的批次(例如每16张图像作为一个batch提供给神经网络),在ImageDataGenerator中,只需要简单提供一个参数 batch_size = 16。

类AlexNet代码

1. n_channels = 3
2. input_shape = (*image_size, n_channels)
3. input_layer = Input(input_shape)
4. z = input_layer
5. z = Conv2D(64, (3, 3))(z)
6. z = BatchNormalization()(z)
7. z = Activation('relu')(z)
8. z = MaxPooling2D(pool_size=(2, 2))(z)
9. 
10. z = Conv2D(64, (3, 3))(z)
11. z = BatchNormalization()(z)
12. z = Activation('relu')(z)
13. z = MaxPooling2D(pool_size=(2, 2))(z)
14. 
15. z = Conv2D(128, (3, 3))(z)
16. z = BatchNormalization()(z)
17. z = Activation('relu')(z)
18. z = MaxPooling2D(pool_size=(2, 2))(z)
19. 
20. z = Conv2D(128, (3, 3))(z)
21. z = BatchNormalization()(z)
22. z = Activation('relu')(z)
23. z = MaxPooling2D(pool_size=(2, 2))(z)
24. 
25. z = Flatten()(z) # 将特征变成一维向量
26. z = Dense(64)(z)
27. z = BatchNormalization()(z)
28. z = Activation('relu')(z)
29. z = Dropout(0.5)(z)
30. z = Dense(1)(z)
31. z = Activation('sigmoid')(z)


相关文章
|
3月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
404 0
|
2月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
3月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
265 2
|
3月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
100 8
|
3月前
|
监控 前端开发 安全
Netty 高性能网络编程框架技术详解与实践指南
本文档全面介绍 Netty 高性能网络编程框架的核心概念、架构设计和实践应用。作为 Java 领域最优秀的 NIO 框架之一,Netty 提供了异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。本文将深入探讨其 Reactor 模型、ChannelPipeline、编解码器、内存管理等核心机制,帮助开发者构建高性能的网络应用系统。
260 0
|
3月前
|
机器学习/深度学习 传感器 数据采集
基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)
基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)
645 0
|
3月前
|
机器学习/深度学习 传感器 数据采集
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
281 0
|
4月前
|
机器学习/深度学习 数据采集 TensorFlow
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
218 0
|
5月前
|
机器学习/深度学习 人工智能 PyTorch
零基础入门CNN:聚AI卷积神经网络核心原理与工业级实战指南
卷积神经网络(CNN)通过局部感知和权值共享两大特性,成为计算机视觉的核心技术。本文详解CNN的卷积操作、架构设计、超参数调优及感受野计算,结合代码示例展示其在图像分类、目标检测等领域的应用价值。
337 7
|
6月前
|
机器学习/深度学习 数据采集 监控
基于CNN卷积神经网络和GEI步态能量提取的步态识别算法matlab仿真,对比不同角度下的步态识别性能
本项目基于CNN卷积神经网络与GEI步态能量提取技术,实现高效步态识别。算法使用不同角度(0°、45°、90°)的步态数据库进行训练与测试,评估模型在多角度下的识别性能。核心流程包括步态图像采集、GEI特征提取、数据预处理及CNN模型训练与评估。通过ReLU等激活函数引入非线性,提升模型表达能力。项目代码兼容Matlab2022a/2024b,提供完整中文注释与操作视频,助力研究与应用开发。

热门文章

最新文章