基于卷积神经网络的目标分类案例

本文详细介绍了如何使用卷积神经网络(CNN)进行目标分类,特别是猫狗图像分类。从CNN的基本概念,如卷积、前馈神经网络,到CNN的构建、环境配置、数据预处理,再到模型训练、结果可视化和数据增强策略,提供了完整的实践案例。通过这个案例,读者可以深入理解CNN在图像识别任务中的应用。
摘要由CSDN通过智能技术生成


一、卷积神经网络(CNN)

卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一。
顾名思义,就是将卷积与前馈神经网络结合,所衍生出来的一种深度学习算法

1.1 卷积

简单定义:设f ( x ) , g ( x ) f(x),g(x)f(x),g(x)是R 1 R1R1上的两个可积函数,作积分:
在这里插入图片描述
称为函数f ff与g gg的卷积,记为:f ( x ) ∗ g ( x ) = h ( x ) f(x)*g(x)=h(x) f(x)∗g(x) = h(x)
卷积与傅里叶变换有着密切的关系:两函数的傅里叶变换的乘积 = 它们卷积后的傅里叶变换(能简化傅里叶分析)
h ( x ) h(x)h(x)要比f ( x ) f(x)f(x)、g ( x ) g(x)g(x)更光滑:特别当g ( x ) g(x)g(x)为具有紧致集的光滑函数,f ( x ) f(x)f(x)为局部可积时,它们的卷积h ( x ) h(x)h(x)也是光滑函数;利用这一性质,对于任意的可积函数f ( x ) f(x)f(x),都可以简单地构造出一列逼近于f ( x ) f(x)f(x)的光滑函数列f s fsfs,这种方法称为函数的光滑化或正则化。
卷积的概念还可以推广到数列、测度以及广义函数上去。

1.2 前馈神经网络

1、前馈神经网络是一种最简单的神经网络,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层.各层间没有反馈。
2、其中每一层包含若干个神经元,各神经元可以接收前一层神经元的信号,并产生输出到下一层。第0层叫输入层,最后一层叫输出层,其他中间层叫做隐含层(或隐藏层、隐层),隐层可以是一层。也可以是多层。
3、一个典型的多层前馈神经网络如下图所示:
在这里插入图片描述

1.3 卷积神经网络(CNN)

卷积神经网络是在前馈神经网络的隐藏层做的改变,它的隐藏层包括卷积层、池化层、全连接层三部分:

输入层:
1、卷积神经网络的输入层可以处理多维数据:

n维卷积神经网络 处理数据类型
一维卷积神经网络 一维或二维数组
二维卷积神经网络 二维或三维数组
三维卷积神经网络 四维数组

2、由于卷积神经网络在计算机视觉领域应用较广,因此许多研究在介绍其结构时预先假设了三维输入数据,即平面上的二维像素点和 RGB 通道。

隐藏层:

卷积层(包含有卷积核、卷积层参数、激励函数):使用卷积核进行特征提取和特征映射。

名称 作用
卷积核 类似于一个前馈神经网络的神经元,组成卷积核的每个元素都对应一个权重系数核一个偏差量,含义可类比视觉皮肤细胞的感受野
卷积层参数 包括卷积核大小、步长、填充,三者共同决定了卷积层输出特征图的尺寸,是卷积神经网络的超参数
激励函数 协助表达复杂的特征,类似于其它深度学习算法

池化层:
1、在卷积层进行特征提取后,输出的特征图会被传递至池化层进行特征选择和信息过滤。
2、池化层包含预设定的池化函数,其功能是将特征图中单个点的结果替换为其相邻区域的特征图统计量。
3、池化层包含预设定的池化函数,其功能是将特征图中单个点的结果替换为其相邻区域的特征图统计量。
最大池化——>它只是输出在区域中观察到的最大输入值。
均值池化——>它只是输出在区域中观察到的平均输入值。
两者最大区别在于卷积核的不同(池化是一种特殊的卷积过程)。

全连接层:
卷积神经网络中的全连接层等价于传统前馈神经网络中的隐含层(每个神经元与上一层的所有神经元相连)。
在这里插入图片描述
1、全连接层位于卷积神经网络隐含层的最后部分,并只向其它全连接层传递信号。
2、特征图在全连接层中会失去空间拓扑结构,被展开为向量并通过激励函数。
3、全连接层的作用则是对提取的特征进行非线性组合以得到输出,即全连接层本身不被期望具有特征提取能力,而是试图利用现有的高阶特征完成学习目标。

输出层:
1、卷积神经网络中输出层的上游通常是全连接层,因此其结构和工作原理与传统前馈神经网络中的输出层相同。
2、对于图像分类问题,输出层使用逻辑函数或归一化指数函数(softmax function)输出分类标签。
3、在物体识别(object detection)问题中,输出层可设计为输出物体的中心坐标、大小和分类。
4、在图像语义分割中,输出层直接输出每个像素的分类结果。

应用领域:
1、计算机视觉:图像识别、物体识别、行为认知、姿态估计、神经风格迁移。
2、自然语言处理
3、其他:物理学、遥感科学、大气科学

二、配置环境

安装好Anaconda
打开 cmd 命令终端,创建虚拟环境。

conda create -n tf1 python=3.6

如下图所示:
在这里插入图片描述
激活环境:

activate
conda activate tf1

在这里插入图片描述
安装 tensorflow、keras 库。
在新建的虚拟环境 tf1 内,使用以下命令安装两个库:

pip install tensorflow==1.14.0 -i “https://pypi.doubanio.com/simple/”
pip install keras==2.2.5 -i “https://pypi.doubanio.com/simple/

安装 nb_conda_kernels 包。

conda install nb_conda_kernels

安装完后如下图所示:
在这里插入图片描述
重新打开 Jupyter Notebook(tf1)环境下的。
在这里插入图片描述
点击【New】→【Python[tf1环境下的]】创建 python 文件。
在这里插入图片描述

三、猫狗数据分类建模

3.1 猫狗图像预处理

对猫狗图像进行分类,代码如下:

import os, shutil 
# 原始目录所在的路径
original_dataset_dir = 'E:\\Cat_And_Dog\\train\\'

# 数据集分类后的目录
base_dir = 'E:\\Cat_And_Dog\\train1'
os.mkdir(base_dir)

# # 训练、验证、测试数据集的目录
train_dir = os.path.join(base_dir, 'train')
os.mkdir(train_dir)
validation_dir = os.path.join(base_dir, 'validation')
os.mkdir(validation_dir)
test_dir = os.path.join(base_dir, 'test')
os.mkdir(test_dir)

# 猫训练图片所在目录
train_cats_dir = os.path.join(train_dir, 'cats')
os.mkdir(train_cats_dir)

# 狗训练图片所在目录
train_dogs_dir = os.path.join(train_dir, 'dogs')
os.mkdir(train_dogs_dir)

# 猫验证图片所在目录
validation_cats_dir = os.path.join(validation_dir, 'cats')
os.mkdir(validation_cats_dir)

# 狗验证数据集所在目录
validation_dogs_dir = os.path.join(validation_dir, 'dogs')
os.mkdir(validation_dogs_dir)

# 猫测试数据集所在目录
test_cats_dir = os.path.join(test_dir, 'cats')
os.mkdir(test_cats_dir)

# 狗测试数据集所在目录
test_dogs
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]: 目标检测模型中的传统方法主要采用基于卷积神经网络的结构,如VGG16、ResNet50等,这些模型通过复杂的卷积操作来提取图像特征。然而,这些模型通常需要大量的计算资源和功耗,并且在一些计算平台上无法灵活部署。而轻量级目标检测方法则采用了对计算资源消耗低的模型,通过网络剪枝等技术来压缩模型,从而在保持一定准确度的前提下提高计算效率和节省资源消耗。\[1\] 引用\[2\]: 另一方面,ViT(Vision Transformer)是一种基于注意力机制的图像分类模型,它将图像分割成小的图块,并通过自注意力机制来学习图块之间的关系。与基于卷积神经网络目标检测模型相比,ViT具有以下优势: 1. 灵活性:ViT可以适应不同尺寸和分辨率的图像,而基于卷积神经网络的模型通常需要固定大小的输入。 2. 可解释性:ViT通过自注意力机制学习图块之间的关系,可以更好地理解图像中的重要特征。 3. 可扩展性:ViT可以通过增加注意力头数和层数来增加模型的容量,从而提高性能。 4. 轻量化:由于ViT不需要复杂的卷积操作,它通常具有较少的参数和计算量,可以在资源受限的环境下运行。 综上所述,ViT相对于基于卷积神经网络目标检测模型具有更好的灵活性、可解释性、可扩展性和轻量化的特点。然而,需要注意的是,ViT在目标检测任务上的性能可能会受到一定的影响,因为它主要是为图像分类而设计的。因此,在具体应用中需要根据任务需求和资源限制来选择合适的模型。\[1\]\[2\] #### 引用[.reference_title] - *1* *2* *3* [目标检测YOLO实战应用案例100讲-基于轻量化神经网络的目标检测算法研究与应用](https://blog.csdn.net/qq_36130719/article/details/130644381)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值