探索图片的真相--卷积神经网络

简介: 探索图片的真相--卷积神经网络

今天给大家带来的是卷积神经网络,听上去是不是挺高大上的?它还有个更响亮的名字CNN,谈到CNN应该好多同学都略知一二吧,CNN在做图像识别上有着很出色的效果,那我们今天对卷积神经网络一探究竟吧!


卷积神经网络,CNN(Convolutional Neural Network),属于深度学习技术的一种算法,主要是进行特征学习,通过分层网络获取分层次的特征信息去解决人工设计特征的这个难题。

(TIPS:深度学习包含多种技术,CNN只是其中的一种,还包括:自动编码器AutoEncoder,稀疏编码Sparse Coding,限制玻尔兹曼机RBM,深信度网络Deep Belief Networks,多层反馈循环神经网络RNN)


卷积神经网络


关于卷积神经网络我们如何使用通俗易懂的语言来解释它呢?

首先我们需要了解:它就是多层神经网络,善于解决图像识别问题。那如何去理解神经网络呢,我们可以简单的想象一下那密密麻麻的渔网,网上的那些节组成的就是网络,节点和节点之间有线连接着,可以想象成每个神经元(节点)之间都产生连接。


那卷积神经网络为什么对于图像识别分类有着更好的效果呢?

图片数据对于机器来说是交大的数据,尤其是对于高清图片,机器读取和学习的时间也就越长,难度可以说指数级上升。但是卷积神经网络它可以将数据庞大的图片识别问题去不断降维(就是从图像中不断去抽取细节特征,从小的慢慢看),使得该图像最终能够被训练。


那么卷积神经网络是怎样工作的呢?

卷积神经网络是由三个层组成的,分别是:卷积层,池化层全连接层

卷积层与池化层联合工作,形成卷积组,一层一层的去提取特征,最终通过数个全连接层完成分类。

卷积层的原理其实就是局部视野的原理,有一张30*30的图片,我每次只看3*3的大小(步长为3,不重复看),看100次全部看完,这就是卷积(看下图去理解卷积)。池化层呢,就是降低维度,学术上又叫下采样,就是从原图片中进行采样,对于一张720*1080的照片,池化层进行采样,每次采30*30的大小,这就是池化了(看下图去理解池化)。总的来说,CNN是通过卷积来区分特征,并且通过卷积产生的权值共享和池化来降低网络参数的数量级,最后的工作就和普通神经网络的工作一样了。

卷积神经网络在图像数据非常多的适合会有出乎意料的效果,但是数据集过少的时候往往效果不是很好,容易出现过拟合。


640.gif

卷积


640.gif



池化




LeNet介绍

640.jpg


我们来看看这一张图,从原始图片不断提取,卷积。

先进入一个卷积层C1,由6个5x5的卷积核组成,卷积出28x28的图像,然后下采样到14x14(S2),再进一个卷积层C3,由16个5x5的卷积核组成,之后再下采样到5x5(S4)。我们可以看出,C3-0跟S2-0,1,2连接,C3-1跟S2-1,2,3连接,后面依次类推。最后,通过全连接层C5、F6得到10个输出,对应10个数字的概率。



训练

卷积神经网络的训练分为两个阶段:

阶段一:

正向传播

A、从样本集中取一个样本(X,Yp),将X输入网络;

B、计算相应的实际输出Op。

     在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常运行时执行的过程。在此过程中,网络执行的是计算(实际上就是输入与每层的权值矩阵相点乘,得到最后的输出结果):

         Op=Fn(…(F2(F1(XpW(1))W(2))…)W(n))

阶段二:

反向传播

A、算实际输出Op与相应的理想输出Yp的差;

B、按极小化误差的方法反向传播调整权矩阵。



下面我们看看在TensorFlow中我们是怎么去做的吧!


前方代码过于简单,及时带好眼睛!!!


数据准备


教程的图片从Cifar数据集中获取,download_cifar.py从Keras自带的Cifar数据集中获取了部分Cifar数据集,并将其转换为jpg图片。

默认从Cifar数据集中选取了3类图片,每类50张图,分别是

0 => 飞机   1 => 汽车   2 => 鸟


导入相关库


import os#图像读取库
from PIL import Image#矩阵运算库
import numpy as np
import tensorflow as tf


配置信息

设置了一些变量增加程序的灵活性。图片文件存放在data_dir文件夹中,train表示当前执行是训练还是测试,model-path约定了模型存放的路径。


# 数据文件夹
data_dir = "data"
# 训练还是测试
train = True
# 模型文件路径
model_path = "model/image_model"


数据读取


  • pillow读取的图像像素值在0-255之间,需要归一化。
  • 在读取图像数据、Label信息的同时,记录图像的路径,方便后期调试。


640.jpg



定义placeholder(容器)


640.png



定义卷积网络(Conv和Pooling部分)

640.png


定义全连接部分


640.png

定义损失函数和优化器


640.png


定义模型保存器/载入器

640.png



训练阶段执行

640.jpg

如果trian为True,进行训练。训练需要使用sess.run(tf.global_variables_initializer())初始化参数,训练完成后,需要使用saver.save(sess, model_path)保存模型参数。


测试阶段执行

640.jpg


如果train为False,进行测试,测试需要使用saver.restore(sess, model_path)读取参数。



今天就到这里了,其实细心的同学你们会发现代码大部分都是配置数据读写数据,真正花在训练上的代码也不是很多,其实对于深度学习也就是这个意思,主要工作并不是敲代码,而是如何调参。TensorFlow在算法的封装上确实是做的很好的,我们可以直接拿过来用。大家也快去试试吧!



代码地址:

https://www.bytelang.com/o/s/c/uEOz1asEK6s=

相关文章
|
15天前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
235 11
|
29天前
|
机器学习/深度学习 传感器 数据采集
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
107 0
|
4月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
本内容展示了一种基于粒子群优化(PSO)与时间卷积神经网络(TCN)的时间序列预测方法。通过 MATLAB2022a 实现,完整程序运行无水印,核心代码附详细中文注释及操作视频。算法利用 PSO 优化 TCN 的超参数(如卷积核大小、层数等),提升非线性时间序列预测性能。TCN 结构包含因果卷积层与残差连接,结合 LSTM 构建混合模型,经多次迭代选择最优超参数,最终实现更准确可靠的预测效果,适用于金融、气象等领域。
|
3月前
|
机器学习/深度学习 人工智能 PyTorch
零基础入门CNN:聚AI卷积神经网络核心原理与工业级实战指南
卷积神经网络(CNN)通过局部感知和权值共享两大特性,成为计算机视觉的核心技术。本文详解CNN的卷积操作、架构设计、超参数调优及感受野计算,结合代码示例展示其在图像分类、目标检测等领域的应用价值。
181 7
|
5月前
|
机器学习/深度学习 人工智能 算法
深度解析:基于卷积神经网络的宠物识别
宠物识别技术随着饲养规模扩大而兴起,传统手段存在局限性,基于卷积神经网络的宠物识别技术应运而生。快瞳AI通过优化MobileNet-SSD架构、多尺度特征融合及动态网络剪枝等技术,实现高效精准识别。其在智能家居、宠物医疗和防走失领域展现广泛应用前景,为宠物管理带来智能化解决方案,推动行业迈向新高度。
|
5月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化TCN时间卷积神经网络时间序列预测算法matlab仿真
本内容介绍了一种基于PSO(粒子群优化)改进TCN(时间卷积神经网络)的时间序列预测方法。使用Matlab2022a运行,完整程序无水印,附带核心代码中文注释及操作视频。TCN通过因果卷积层与残差连接处理序列数据,PSO优化其卷积核权重等参数以降低预测误差。算法中,粒子根据个体与全局最优位置更新速度和位置,逐步逼近最佳参数组合,提升预测性能。
|
4月前
|
机器学习/深度学习 数据采集 监控
基于CNN卷积神经网络和GEI步态能量提取的步态识别算法matlab仿真,对比不同角度下的步态识别性能
本项目基于CNN卷积神经网络与GEI步态能量提取技术,实现高效步态识别。算法使用不同角度(0°、45°、90°)的步态数据库进行训练与测试,评估模型在多角度下的识别性能。核心流程包括步态图像采集、GEI特征提取、数据预处理及CNN模型训练与评估。通过ReLU等激活函数引入非线性,提升模型表达能力。项目代码兼容Matlab2022a/2024b,提供完整中文注释与操作视频,助力研究与应用开发。
|
4月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于WOA鲸鱼优化的TCN-GRU时间卷积神经网络时间序列预测算法matlab仿真
本内容包含时间序列预测算法的相关资料,涵盖以下几个方面:1. 算法运行效果预览(无水印);2. 运行环境为Matlab 2022a/2024b;3. 提供部分核心程序,完整版含中文注释及操作视频;4. 理论概述:结合时间卷积神经网络(TCN)与鲸鱼优化算法(WOA),优化TCN超参数以提升非线性时间序列预测性能。通过因果卷积层与残差连接构建TCN模型,并用WOA调整卷积核大小、层数等参数,实现精准预测。适用于金融、气象等领域决策支持。
|
4月前
|
机器学习/深度学习 数据采集 并行计算
基于WOA鲸鱼优化的TCN时间卷积神经网络时间序列预测算法matlab仿真
本内容介绍了一种基于TCN(Temporal Convolutional Network)与WOA(Whale Optimization Algorithm)的时间序列预测算法。TCN通过扩张卷积捕捉时间序列长距离依赖关系,结合批归一化和激活函数提取特征;WOA用于优化TCN网络参数,提高预测精度。算法流程包括数据归一化、种群初始化、适应度计算及参数更新等步骤。程序基于Matlab2022a/2024b开发,完整版含详细中文注释与操作视频,运行效果无水印展示。适用于函数优化、机器学习调参及工程设计等领域复杂任务。
|
4月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化TCN-GRU时间卷积神经网络时间序列预测算法matlab仿真
本内容涵盖基于粒子群优化(PSO)与时间卷积神经网络(TCN)的时间序列预测算法。完整程序运行效果无水印,适用于Matlab2022a版本。核心代码配有详细中文注释及操作视频。理论部分阐述了传统方法(如ARIMA)在非线性预测中的局限性,以及TCN结合PSO优化超参数的优势。模型由因果卷积层和残差连接组成,通过迭代训练与评估选择最优超参数,最终实现高精度预测,广泛应用于金融、气象等领域。

热门文章

最新文章