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)


相关文章
|
15天前
|
机器学习/深度学习 算法 TensorFlow
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
46 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其应用
【9月更文挑战第24天】本文将深入探讨深度学习中的一种重要模型——卷积神经网络(CNN)。我们将通过简单的代码示例,了解CNN的工作原理和应用场景。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息。
29 1
|
14天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第19天】在人工智能的浩瀚星海中,卷积神经网络(CNN)如同一颗璀璨的星辰,照亮了图像处理的天空。本文将深入CNN的核心,揭示其在图像识别领域的强大力量。通过浅显易懂的语言和直观的比喻,我们将一同探索CNN的奥秘,并见证它如何在现实世界中大放异彩。
|
14天前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
65 21
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
14天前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
60 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
13天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
43 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
9天前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
22 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
2天前
|
机器学习/深度学习 人工智能 算法
深入理解卷积神经网络:从理论到实践
【9月更文挑战第31天】在深度学习的众多模型之中,卷积神经网络(CNN)以其在图像处理领域的出色表现而闻名。本文将通过浅显易懂的语言和直观的比喻,带领读者了解CNN的核心原理和结构,并通过一个简化的代码示例,展示如何实现一个简单的CNN模型。我们将从CNN的基本组成出发,逐步深入到其在现实世界中的应用,最后探讨其未来的可能性。文章旨在为初学者提供一个清晰的CNN入门指南,同时为有经验的开发者提供一些深入思考的视角。
|
2天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第31天】本文旨在通过浅显易懂的语言和直观的比喻,为初学者揭开深度学习中卷积神经网络(CNN)的神秘面纱。我们将从CNN的基本原理出发,逐步深入到其在图像识别领域的实际应用,并通过一个简单的代码示例,展示如何利用CNN进行图像分类。无论你是编程新手还是深度学习的初学者,这篇文章都将为你打开一扇通往人工智能世界的大门。
|
6天前
|
机器学习/深度学习 数据采集 网络安全
使用Python实现深度学习模型:智能网络安全威胁检测
使用Python实现深度学习模型:智能网络安全威胁检测
26 5
下一篇
无影云桌面