在本文中,我们将构建一个深度学习模型来对图像中的对象进行分类。为了构建卷积神经网络,我们将使用Kaggle提供的这个数据集。(https://www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition/data)CNN是一种主要用于视觉任务的神经网络。该网络将检测动物的特征,然后使用这些特征将给定的输入图像分类为猫或狗。
以下内容由公众号:AIRX社区(国内领先的AI、AR、VR技术学习与交流平台) 整理
导入必要的包文件
先激活虚拟环境
conda activate my_env
运行以下命令安装keras和tensorflow:
conda install tensorflow keras pillow
在这里,我们还安装了pillow以便于以后加载图像。
现在导入以下包:
-
连续初始化人工神经网络
-
用于实现处理图像的卷积网络
-
MaxPooling2D用于添加池化层
-
Flatten转换池的功能映射成一个列,将被馈送到全连接层
-
这将为神经网络增加一个完全连接的层
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
初始化神经网络
接下来,我们将使用该Sequential包来初始化线性的图层堆栈。对于像这样的分类问题,我们通常创建一个分类变量。
classifier = Sequential()
我们现在有了一个神经网络的实例,但它本身并不能做任何事情。我们需要对数据集应用一个函数,这意味着网络需要一个卷积层。我们将在下一步中添加这一层。
添加卷积层
通过调用分类器上的add函数并传递所需的参数来添加层。传递参数是使用Convolution2D完成的。第一个参数(滤波器)是卷积中输出滤波器的数量。它们也被称为特征检测器。
第二和第三参数代表2D卷积窗口的高度和宽度。input_shape是输入图像的形状。黑白图像转换为2D阵列,而彩色图像转换为3D阵列。
卷积是涉及两个函数的数学计算,旨在找出这两个函数如何相互影响。
该过程涉及三个关键项目:输入图像,特征检测器和特征