利用Deeplearning4j进行 图像识别

目录

图像识别简介

神经网络

感知器

前馈神经网络

自动编码器

受限玻尔兹曼机

深度卷积网络


理解图像内容以及图像含义方面,计算机遇到了很大困难。本章先介绍计算机理解图像教育方面 遇到的难题,接着重点讲解一个基于深度学习的解决方法。我们会学习配置深度学习模型的高层 次理论,并且讨论如何使用一个Java库——Deeplearning4j实现对图像进行分类的模型。
本章涵盖如下内容:
 图像识别简介

 讨论深度学习基础

 创建一个图像识别模型

图像识别简介

图像识别的典型目标是从一幅数字图像中检测并识别一个对象。图像识别可以应用于工厂自 动化系统,以监督产品质量;也可以应用于监控系统,以识别潜在的危险行为,比如行人或移动 的车辆;还可以应用到=于安保系统,以通过指纹、虹膜、面部特征进行生物特征识别;以及应 用于汽车自动驾驶技术,以重建路面与环境条件等。

数字图像不以带有属性描述的结构化方式呈现,相反,它们会被编码为不同通道中的颜色数 量,比如黑白与红绿蓝通道。学习的目标是识别与特定对象相关联的模式。传统的图像识别 方法是,将一幅图像转换为不同形式,比如识别对象的角点、边缘、同色斑点与基本形状。然后 使用这些模式训练学习器,使之能够区分不同对象。下面列出了一些有名的传统图像识别算法。

 边缘检测:查找一幅图像中对象的边界。

 角点检测:识别两条边的交叉点或者其他感兴趣的点,比如行尾结束符号、曲率极大值/ 极小值等。

 斑点检测:识别与周边区域有不同特征的区域,比如亮度、颜色。

 岭检测:使用平滑函数识别图像中的兴趣点。

 尺度不变特征变换(SIFT):这个算法十分强大,即使目标对象大小或方向与比对数据库 中的典型样本不同,它依然能够匹配目标对象。

 霍夫变换(Hough transform):识别图像中的特定模式。

目前,图像识别使用的最新方法是深度学习技术。深度学习是神经网络的一种,它模仿了大 脑处理信息的方法。深度学习的主要优点是,我们可以设计神经网络自动提取相关模式,这些模 式反过来用于训练学习器。随着神经网络技术最新取得进展,图像识别精度得到了明显提升。比 如,ImageNet挑战赛(ImageNet,2016)中,主办方提供了120万张图像,这些图像分别来自1000 个不同分类,最佳算法的错误率由28%(2010年,利用SVM)降低到7%(2014年,利用深度神 经网络)。
本章将简单了解神经网络,从最基本的构建块——感知器开始,逐渐引入更复杂的结构。

神经网络

神经网络最早出现在20世纪60年代,其灵感来自生物神经网络的研究。神经网络最新研究成 果表明,深度神经网络非常适合用于模式识别任务,因为它们能够自动提取有趣特征,并且学习 底层表示。这部分内容中,我们将学习从单个感知器到深度网络的基本结构与组件。

感知器

感知器是神经网络最基本的构建单元,也是最早的监督算法之一。它定义为,用权值对输入 进行加权并加上偏置。求和函数称为“和传递函数”(sum transfer function),它被送到一个激 活函数(activation function)。如果激活函数到达阈值,输出为1,否则为0。这就为我们提供了 一个二元分类器。感知器神经元模型如图

训练感知器使用的学习算法相当简单:先在计算输出值与正确的训练输出值之间计算误差, 然后根据误差调整权重,从而实现某种形式的梯度下降算法。这个算法通常称为delta规则。

单层感知器不是很先进,非线性可分函数(比如XOR)不能用它建模。为了解决这个问题, 人们引入了多个感知器结构,称为多层感知器,也叫前馈神经网络。

前馈神经网络

前馈神经网络是由多个感知器组成的人工神经网络,这些感知器按层组织,可分为:输入层、 输出层、一个或多个隐藏层,如图所示。每层感知器(也叫神经元)与下层感知器直接相连, 两个神经元之间的连接带有一个权重,类似于感知器权重。图8-2显示的是一个带有四元输入层 的网络(对应于长度为4的特征向量)、四元隐藏层,以及二元输出层,每元对应于一个类值。

训练多层网络最流行的方法是反向传播算法。这种算法中,采用与delta规则一样的方式,将 计算得到的输出值与实际输出值进行比较。然后借助各种技术,通过网络反馈误差,调整每个连 接的权重,以便减小误差值。这个过程不断重复,达到足够多的训练周期,直到错误少于某个特 定阈值。

前馈神经网络可以拥有一个以上的隐藏层,每一个新增隐藏层在先前层之上创建一个新的抽 象。这样做通常可以让模型变得更精确,但增加隐藏层数目会导致如下两个问题。

 消失的梯度问题:随着隐藏层的增多,将信息传递到先前层时,反向传播训练方法变得 越来越无用,这会导致先前层训练很慢。

 过拟合:模型对训练数据拟合过度,对于真实样本表现糟糕。
接下来,了解用来处理这些问题的其他网络结构。

自动编码器

自动编码器(Autoencoder)是一种前馈神经网络,其目标是学习如何压缩原数据集。我们不 是将特征映射到输入层以及将标签映射到输出层,而是将特征同时映射到输入与输出层。隐藏层 的元数与输入层的元数通常是不同的,这会强制网络要么扩展,要么减少原特征的数量。借助这种方式,网络会学习那些重要特征,进而有效进行维数缩减。


图是一个自动编码器的例子。如图所示,首先三元输入层扩展为四元层,然后压缩成一 元层。在网络的另一侧将一元层恢复为四元层,然后再恢复为原来的三元输入层。

一旦网络训练好之后,我们就可以利用左侧网络提取图像特征,就像我们在传统图像处理中 所做的那样。
还可以将多个自动编码器组成堆叠式自动编码器,如图8-4所示。前面已经对最基本的自动 编码器做了讲解,这里要讨论其隐藏层。然后,选取学好的隐藏层(圆圈),并且重复这个步骤, 学习更多的抽象表示。可以多次重复这个过程,将原特征转换为越来越少的维数。最后,选择所 有隐藏层,将其堆叠为一个规则的前馈网络,如图

受限玻尔兹曼机

受限玻尔兹曼机(Restricted Boltzman machine,RBM)是一种无向神经网络,也称为生成式随机神经网络(Generative Stochastic Networks,GSN),它能够在输入集之上学习概率分布。 顾名思义,它起源于玻尔兹曼机(Boltzman machine),这是一种20世纪80年代出现的循环神经网 络。“受限”是指神经元必须组成两个全连接层——输入层与隐藏层,如图

不同于前馈网络,可见层与隐藏层之间的连接是无向的。

因此,值可以沿着“可见隐藏” 与“隐藏可见”方向传播。 受限玻尔兹曼机的训练基于对比散度算法(Contrastive Divergence),使用类似反向传播的 梯度下降过程更新权重,将吉布斯采样(Gibbs sampling)应用到马尔可夫链以评估梯度——权 重的改变方向。

我们也可以堆叠受限玻尔兹曼机,形成深度信念网络(Deep Belief Networks,DBN)。此情 形之下,RBM的隐藏层充当RBM层的可见层,如图

训练是渐进式的,即逐层训练。

深度卷积网络

最近,在图像识别测试中取得很好效果的一种网络结构是卷积神经网络(Convolutional Neural Network,CNN)。它是前馈神经网络的一种,模拟视觉皮层的行为,用于探索输入图像 的2D结构,即展现空间局部相关性的模式。

CNN网络由若干卷积与子采样层组成,后面可以有全连接层。图8-7显示的是一个CNN网络。 输入层读取一幅图像中的所有像素,然后应用多个过滤器。图中应用了4个不同的过滤器。每个 过滤器都应用到原图像,比如一个6×6过滤器的一个像素被计算为输入像素的6×6平方与相应的 6×6权重之和。这实际引入了与处理标准图像类似的过滤器,比如平滑、相关、边缘检测等。这 样产生的结果图像称为特征图(feature map)。

图像例子中,我们有4个特征图,每一个对应一 个过滤器。 接下来的层是子采样层,它用于减少输入大小。在2×2的连续区域上(大图像高达5×5), 通常采用平均值或最大池化(max pooling)方法,对每个特征图做子采样。比如,如果特征图大 小是16×16,子采样区域是2×2,缩减后的特征图尺寸是8×8,通过计算最大、最小、平均值或 者用其他函数,将4个像素(2×2方格)合并成一个像素。

网络可以包含几个连续卷积与子采样层,如图所示。一个特定的特征图会被连接到下一 个缩减/卷积特征图,而相同层上的特征图不会彼此相连。

在最后的子采样层或卷积层之后,通常会有一个全连接层(与标准多层神经网络中的层完全 相同),表示目标数据。

CNN训练采用修改过的反向传播算法,它会把子采样层也一起考虑进来,并且基于所有应用 过滤器的值更新卷积过滤器的权重。

至此,我们大致了解了主要的神经网络结构。接下来,我们将学习如何实际实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/891747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PTA DS 基础实验3-2.1 一元多项式求导

基础实验3-2.1 一元多项式求导 分数 20 全屏浏览 切换布局 作者 DS课程组 单位 浙江大学 设计函数求一元多项式的导数。 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 注意&#xff1a…

vue elementUI Plus实现拖拽流程图,不引入插件,纯手写实现。

vue elementUI Plus实现拖拽流程图,不引入插件,纯手写实现。 1.设计思路:2.设计细节3.详细代码实现 1.设计思路: 左侧button列表是要拖拽的组件。中间是拖拽后的流程图。右侧是拖拽后的数据列表。 我们拖动左侧组件放入中间的流…

DC系列之DC-8渗透测试

DC-8 靶机渗透测试实战 靶机下载地址: https://download.vulnhub.com/dc/DC-8.zip(下载速度慢可以用迅雷下载) 一、实验环境 实验环境: kali2024:192.168.234.145(nat模式) 靶机环境DC-7&#…

matlab中高精度计算函数vpa与非厄米矩阵本征值的求解

clear;clc;close all tic %并行设置% delete(gcp(nocreate));%关闭之前的并行 cparcluster(local); c.NumWorkers50;%手动设置线程数(否则默认最大线程为12) parpool(c, c.NumWorkers); %并行设置%w1; u2.5;N30;valstozeros(2*N2,100); v10linspace(-3,3,100).;parfor jj1:leng…

GraphRAG vs 传统 RAG:如何通过知识图谱提升 AI 检索能力

相比传统 RAG 仅能独立检索文本片段的局限性,GraphRAG通过构建实体关系图谱实现了信息间的连接,让 AI 能更完整地理解和检索复杂的关联信息,从而生成更准确和连贯的回答 问题背景: 想象有一本详细记录某人(X)成就的传记,每个章节都描述了他的…

Pentaho Kettle迁移至Oracle的空字符串和NULL的问题处理,大坑!

一、问题说明 在使用 Kettle 将 DB2 数据迁移到 Oracle 的过程中,出现了 DB2 中为空字符串的字段,在插入到 Oracle 过程中实际插入的为 NULL ,导致触发了非空校验而迁移失败 空字符串 ‘’ ,即长度为0的字符串 搜索该问题后得知…

2025-01-04 Unity插件 YodaSheet1 —— 插件介绍

文章目录 1 介绍2 工作原理2.1 ScriptableObject -> YadeSheetData2.2 YadeDatabase 存储多个 YadeSheetData 3 用途4 缺点5 推荐 1 介绍 ​ Yade 提供类似于 Excel 或者 Google Sheets 的表格编辑器,可以轻松地在 Unity 编辑器中 编辑,搜索&#xf…

VScode 格式化代码空格记录

点击 -> “文件” -> “首选项" -> “设置” -> 按下图操作: 怎么格式化代码空格,先看下: 保存代码后,这代码自动格式化发,如下图: 你可以试试看就即可

苹果系统MacOS下ObjectC建立的App程序访问opencv加载图片程序

前言 苹果系统下使用opencv感觉还是有些不太方便,总是感觉有点受到限制。本博客描述的是在MacOS下建立App程序然后调用opencv显示图片时出现的一些问题并最后解决的一个过程。 一、程序的建立 选择程序的类型: 选择界面模式和编程语言: 其余…

CSS3——3. 书写格式二

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><!--css书写&#xff1a;--><!--1. 属性名:属性值--><!--2.属性值是对属性的相关描述--><!--3.属性名必须是…

windows配置jdk

进入此网址 JDK 11 Releases 找到11版本进行下载 下载好后配置环境变量 按windows加r键输入sysdm.cpl点击确定 在系统变量里新建输入 JAVA_HOME D:\openjdk-1128_windows-x64_bin\jdk-11 //变量值为安装jidk的路径 配置path环境变量 编辑path变量输入%JAVA_HOME%\bin并放置最…

深入刨析数据结构之排序(下)

目录 1.内部排序 1.5选择排序 1.5.1简单选择排序 1.5.2树形选择排序 1.6堆排序 1.7归并排序 1.7.1递归归并 1.7.2非递归归并 1.8计数排序 1.9基数排序 常见内部排序的总结&#xff1a; 1.内部排序 1.5选择排序 选择排序&#xff08;Selection Sort&#xff09;的基…

RocketMQ场景问题

1.消息丢失 有这么一个场景&#xff0c;就是订单支付完成之后&#xff0c;订单系统会进行发送消息给RocketMQ集群&#xff0c;下游会有积分系统进行监听这个消息&#xff0c;进行消费然后给用户发放积分。在下面的这个场景中&#xff0c;通过查询日志发现了订单系统发送订单支付…

cordova项目环境搭建 hello

环境准备&#xff1a; 1.下载nodejs并安装配置。 直接官网下载最新版本。此次我是下载的 Node.js v22.12.0。 1.1安装好后配置镜像。 输入&#xff1a;node -v // 显示node.js版本 npm -v // 显示npm版本 1.2环境配置 &#xff08;1&#xff09;找到安装的目录&am…

LE Audio 初探

LE Audio 架构 一.LE Audio profile框架 profile初识&#xff1a; BAP&#xff1a; BAP通常在手机端实现&#xff0c;它允许配置编解码器&#xff0c;配置QoS(质量服务)&#xff0c;控制流媒体&#xff0c; PACS&#xff1a; Published Audio Capabilities Service&#xff0c;…

Ⅱ.INTRODUCTION TO CUDA C

前言 上一节环境配置好了&#xff0c;我们开始吧&#xff01; 一、A First Program 1. Hello, World! 我们先写一个C语言的 Hello, World! 作为对比 int main(void){printf("Hello, World!\n");return 0; }大家应该知道这个代码运行在CPU上吧&#xff0c;我们CP…

域上的多项式环,整除,相通,互质

例1.已知 (R,,x)为域&#xff0c;请选出正确的说法:(A)(R,,x)也是整区; ABCD (B)R中无零因子; C)R在x运算上满足第一、二、三指数律; (D)R只有平凡理想; (E)R只有平凡子环。 域的特征&#xff1a; 域中&#xff0c;非0元素的加法周期 思考、在模7整数环R,中&#xff0c;…

【0x0014】HCI_Read_Local_Name命令详解

目录 一、命令概述 二、命令格式 三、返回事件及参数说明 3.1. HCI_Command_Complete 事件 3.2. Status 3.3. Local_Name 四、命令执行流程 4.1. 命令发送 4.2. 控制器接收并处理命令 4.3. 控制器返回结果 4.4. 主机接收并解析事件包 4.5. 示例代码 五、应用场景 …

【AI日记】25.01.04 kaggle 比赛 3-3 | 王慧玲与基层女性

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加&#xff1a;kaggle 比赛 Forecasting Sticker Sales时间&#xff1a;6 小时 读书 书名&#xff1a;基层女性时间&#xff1a;3 小时原因&#xff1a;虽然我之前就知道这个作者&#xff0c;因为我…

【从零开始入门unity游戏开发之——C#篇40】C#特性(Attributes)和自定义特性

文章目录 前言一、特性&#xff08;Attributes&#xff09;基本概念二、自定义特性1、自定义特性代码示例&#xff1a;2、应用自定义特性&#xff1a;3、解释3.1 **AttributeUsage 特性**3.2 特性的命名3.3 **构造函数**&#xff1a;3.4 **属性**&#xff1a; 4、使用反射获取特…