学习笔记 | 深度卷积神经网络在计算机视觉中的应用

简介: 学习笔记 | 深度卷积神经网络在计算机视觉中的应用

图像识别是一种利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对象的技术,是计算机视觉领域的一个主要研究方向,在以图像为主体的智能化数据采集与处理中具有十分重要


的作用和影响。目前图像识别技术在图像搜索、商品推荐、用户行为分析以及人脸识别等互联网应用产品中,,同时在智能机器 人、无人自动驾驶和无人机等高新科技产业以及生物学、医学和地质学等众多学科领域具有广阔的应用前景。早期的图像识别系统一般都是针对某个特定的识别任务,且数据的规模不大,泛化能力较差,难以在实际应用问题当中实现精准的识别效果。


1 卷积神经网络


80年代中期,Fukushima等基于感受野概念提出的神经认知机,可以看作是卷积神经网络(Convolution  neural networks,CNNs)的第一次实现,也是第一个基于神经元之间的局部连接性和层次结构组织的人工神经网络。\


1 概念

卷积神经网络是一种为了处理二维输入数据而特殊设计的多层人工神经网络,网络中的每层都由多个二维平面组成,而每个平面由多个独立的神经元组成,相邻两层的神经元之间互相连接,而处于同一层的神经元之间没有连接。CNNs采用了权值共享网络结构使之更类似于生物神经网络,同时模型的容量可以通过改变网络的深度和广度来调整,对自然图像也具有很强的假设(统计的平稳性和像素的局部相关性)。因此,与每层具有相当大小的全连接网络相比,CNNs能够有效降低网络模型的学习复杂度,具有更少的网络连接数和权值参数,从而更容易训练。


2 网络结构


image.png



image.png



INPUT(输入层)-CONV(卷积层)-RELU(激活函数)-POOL(池化层)-FC(全连接层)-OUTPUT(输出层)


上图展现的是一个简单的卷积神经网络模型,该网络模型有两个卷积层和两个子采样层交替组成。


3 卷积特征提取cov2d

对于大尺寸的图像识别问题,首先从图像中随机选取一小块局域作为训练样本,从该小块样本中学习到一些特征,然后将这些特征作为滤波器,与原始整个图像作卷积运算,从而得到原始图像中任一位置上的不同特征的激活值。局部感知:人的大脑识别图片的过程中,并不是一下子整张图同时识别,而是对于图片中的每一个特征首先局部感知,然后更高层次对局部进行综合操作,从而得到全局信息。也就是你看人一样,不是一下把整张脸看完,而是看鼻子,眼睛嘴巴等,才有了整体的认知。


image.png



输入图像是32*32*3,3是它的深度3(即R、G、B),卷积层是一个5*5*3的filter(感受野),这里注意:感受野的深度必须和输入图像的深度相同。通过一个filter与输入图像的卷积可以得到一个28*28*1的特征图,上图是用了两个filter得到了两个特征图;我们通常会使用多层卷积层来得到更深层次的特征图。


计算过程:


W:矩阵宽,H:矩阵高,F:卷积核宽和高,P:padding(需要填充的0的个数),N:卷积核的个数,S:步长


width:卷积后输出矩阵的宽,height:卷积后输出矩阵的高


width = (W - F + 2P)/ S + 1


height = (H - F + 2P) / S + 1


当conv2d(), max_pool()中的padding=‘SAME’时,width=W,height=H,当padding=‘valid’时,P=0


输出图像大小:(width,height,N)


filter:相当于CNN中的卷积核,它要求是一个Tensor,具有[filter_height, filter_width, in_channels, out_channels]这样的shape,具体含义是[卷积核的高度,卷积核的宽度,图像通道数,卷积核个数],要求类型与参数input相同,有一个地方需要注意,第三维in_channels,就是参数input的第四维。


4 激活函数

所谓激活,实际上是对卷积层的输出结果做一次非线性映射。


如果不用激励函数(其实就相当于激励函数是f(x)=x),这种情况下,每一层的输出都是上一层输入的线性函数。容易得出,无论有多少神经网络层,输出都是输入的线性组合,与没有隐藏层的效果是一样的,这就是最原始的感知机了。通俗地讲,激活函数的作用就是将多个线性输入转换为非线性的关系。如果不使用激励函数,神经网络的每层都只是做线性变换,即使是多层输入叠加后也还是线性变换。通过使用激励函数引入非线性因素后,使神经网络的表示能力更强了。比如:


relu函数:tf.nn.relu(features, name=None)

Sigmoid函数    tf.sigmoid(x, name=None)

tanh函数,反正切函数  tf.tanh(x, name=None)

Softplus    tf.nn.softplus(features, name=None)

Relu6函数   tf.nn.relu6(features, name=None)

image.png



1.5 池化层pooling


池化(Pooling):也称为欠采样或下采样。主要用于特征降维,压缩数据和参数的数量,减小过拟合,同时提高模型的容错性。用池化层减少图像空间的大小,在每一个图层维度上独自完成,保持图像的纵深不变,主要有:


Max Pooling:最大池化;max-pooling,能减小因卷积层参数误差造成估计均值偏移的误差,更多的保留纹理信息。


Average Pooling:平均池化 ;mean-pooling,能减小因邻域大小受限造成的估计值方差增大的误差,更多的保留图像的背景信息,对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征


image.png



计算:池化后的大小


width = (W - F)/ S + 1


height = (H - F) / S + 1



1.6 全连接层


经过前面若干次卷积+激励+池化后,终于来到了输出层,模型会将学到的一个高质量的特征图片全连接层。全连接层主要对特征进行重新拟合,减少特征信息的丢失;输出层主要准备做好最后目标结果的输出。全连接层在整个卷积神经网络中起到”分类器”作用,其实在全连接层之前,如果神经元数目过大,学习能力强,有可能出现过拟合。因此,可以引入dropout操作,来随机删除神经网络中的部分神经元,来解决此问题。还可以进行局部归一化(LRN)、数据增强等操作,来增加鲁棒性。


 当来到了全连接层之后,可以理解为一个简单的多分类神经网络(如:BP神经网络),通过softmax函数得到最终的输出。整个模型训练完毕。



2 图像分类


图像分类问题是通过对图像的分析,将图像划归为若干个类别中的某一种,主要强调对图像整体的语义进行判定。


3 物体检测


与图像分类比起来,物体检测是计算机视觉领域中一个更加复杂的问题,因为一张图像中可能含有属于不同类别的多个物体,需要它们均进行定位并识别其种类。因此,在物体检测中要取得好的效果也比物体分类更具有挑战性,运用于物体检测的深度学习模型也会更加复杂。


4 姿态估计


姿态估计是时下最为重要的计算机视觉挑战性问题之一,原因在于它可以被很快地应用到人物追踪、动作识别以及视频相关的视频分析上,比如视频监控和视频搜索等实际应用面非常广。姿态估计的主要任务就是,给定一张图,图中会有一个人,你需要给出这个人的姿态动作是什么样的。


5 图像分割


图像分割是这样一类问题:对于一张图来说,图上可能有多个物体、多个人物甚至多层背景,希望能做到对于原图上的每个像素点,能预测它是属于哪个部分的(人、动物、背景……)。图像分割作为许多计算机视觉应用研究的第一步十分关键。


6 人脸识别


人脸识别是图像识别领域一个非常重要的研究方向,由于人脸图像具有易采集的特性,因此受到了许多行业的关注,具有非常广阔的应用前景和巨大的商业市场。人脸识别技术主要包括人脸检测、人脸特征提取和人脸识别3个过程。人脸检测是从输入图像或视频流中检测并提 取人脸图像,并进 一 步给出人脸的位置、大小以及各个主要面部器官的位置信息。


相关实践学习
基于函数计算实现AI推理
本场景基于函数计算建立一个TensorFlow Serverless AI推理平台。
相关文章
|
17天前
|
机器学习/深度学习 人工智能 自动驾驶
什么是人工智能领域的卷积神经网络
什么是人工智能领域的卷积神经网络
20 0
|
17天前
|
机器学习/深度学习 算法 计算机视觉
卷积神经网络中的卷积层,如何提取图片的特征?
卷积神经网络中的卷积层,如何提取图片的特征?
26 0
|
6天前
|
存储 监控 安全
网络安全与信息安全:防范漏洞、应用加密、提升意识
【4月更文挑战第18天】 在数字化时代,网络安全与信息安全保障已成为维护国家安全、企业利益和个人隐私的关键。本文深入探讨网络安全的多面性,包括识别和防御网络漏洞、应用加密技术保护数据以及提升全民网络安全意识的重要性。通过对这些关键领域的分析,文章旨在为读者提供实用的策略和建议,以增强其网络环境的安全防护能力。
10 0
|
7天前
|
机器学习/深度学习 数据采集 TensorFlow
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
25 0
|
7天前
|
数据采集 机器学习/深度学习 数据挖掘
网络数据处理中的NumPy应用实战
【4月更文挑战第17天】本文介绍了NumPy在网络数据处理中的应用,包括数据预处理、流量分析和模式识别。通过使用NumPy进行数据清洗、格式化和聚合,以及处理时间序列数据和计算统计指标,可以有效进行流量分析和异常检测。此外,NumPy还支持相关性分析、周期性检测和聚类分析,助力模式识别。作为强大的科学计算库,NumPy在处理日益增长的网络数据中发挥着不可或缺的作用。
|
13天前
|
机器学习/深度学习 自然语言处理 算法
|
15天前
|
传感器 监控 安全
|
15天前
|
安全 SDN 数据中心
|
15天前
|
安全 网络安全 网络虚拟化
虚拟网络设备与网络安全:深入分析与实践应用
在数字化时代📲,网络安全🔒成为了企业和个人防御体系中不可或缺的一部分。随着网络攻击的日益复杂和频繁🔥,传统的物理网络安全措施已经无法满足快速发展的需求。虚拟网络设备🖧,作为网络架构中的重要组成部分,通过提供灵活的配置和强大的隔离能力🛡️,为网络安全提供了新的保障。本文将从多个维度深入分析虚拟网络设备是如何保障网络安全的,以及它们的实际意义和应用场景。
|
30天前
|
机器学习/深度学习 算法 PyTorch
【PyTorch实战演练】深入剖析MTCNN(多任务级联卷积神经网络)并使用30行代码实现人脸识别
【PyTorch实战演练】深入剖析MTCNN(多任务级联卷积神经网络)并使用30行代码实现人脸识别
54 2

热门文章

最新文章