利用Deeplearning4j进行 图像识别

news2025/1/7 6:22:47

目录

图像识别简介

神经网络

感知器

前馈神经网络

自动编码器

受限玻尔兹曼机

深度卷积网络


理解图像内容以及图像含义方面,计算机遇到了很大困难。本章先介绍计算机理解图像教育方面 遇到的难题,接着重点讲解一个基于深度学习的解决方法。我们会学习配置深度学习模型的高层 次理论,并且讨论如何使用一个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.coloradmin.cn/o/2271404.html

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

相关文章

51单片机——按键实验

由于机械点的弹性作用,按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开,因而在闭合和断开的瞬间均伴随着一连串的抖动。抖动时间的长短由按键的机械特性决定的,一般为 5ms 到 10ms,为了确保 CPU 对按键的…

关于嵌入式系统的知识课堂(二)

成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于嵌入式系统的知识课堂(…

CSS——5. 外部样式

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>方法3&#xff1a;外部样式</title><link rel"stylesheet" href"a.css" /><link rel"stylesheet" href"b.css"/&g…

玩游戏提示找不到vcruntime140.dll,修复方法分享

在玩游戏时&#xff0c;电脑突然弹出“找不到vcruntime140.dll”的提示怎么回事&#xff1f;玩游戏时提示找不到vcruntime140.dll文件时&#xff0c;这通常意味着你的系统中缺少了这个关键的DLL文件&#xff0c;或者该文件已损坏。vcruntime140.dll是Visual C运行时库的一部分&…

Aloudata AIR | 逻辑数据平台的 NoETL 之道

一文为你介绍 Aloudata AIR 逻辑数据平台的技术原理与核心价值 本文主旨是介绍逻辑数据平台的技术原理与核心价值&#xff0c;包含几个部分的内容&#xff1a; 首先&#xff0c;简要阐述逻辑数据平台出现的背景&#xff1b;其次&#xff0c;详细讲解逻辑数据平台的构建方法&am…

电子应用设计方案86:智能 AI背景墙系统设计

智能 AI 背景墙系统设计 一、引言 智能 AI 背景墙系统旨在为用户创造一个动态、个性化且具有交互性的空间装饰体验&#xff0c;通过融合先进的技术和创意设计&#xff0c;提升室内环境的美观度和功能性。 二、系统概述 1. 系统目标 - 提供多种主题和风格的背景墙显示效果&…

12306分流抢票软件 bypass v1.16.43 绿色版(春节自动抢票工具)

软件介绍 12306Bypass分流抢票软件&#xff0c;易操作强大的12306抢票软件&#xff0c;全程自动抢票&#xff0c;云识别验证码打码&#xff0c;多线程秒单、稳定捡漏&#xff0c;支持抢候补票、抢到票自动付款&#xff0c;支持多天、多车次、多席别、多乘客、短信提醒等功能。…

MiFlash 线刷工具下载合集

MiFlash 线刷工具下载合集 MiFlash 线刷工具下载合集 – MIUI历史版本相较于小米助手的刷机功能&#xff0c;线刷还是偏好使用 MiFlash。特点是界面简单纯粹&#xff0c;有自定义高级选项&#xff0c;可以选择刷机不上 BL 锁&#xff0c;自定义刷机脚本&#xff0c;EDL 刷机模…

面向对象分析和设计OOA/D,UML,GRASP

目录 什么是分析和设计&#xff1f; 什么是面向对象的分析和设计&#xff1f; 迭代开发 UML 用例图 交互图 基于职责驱动设计 GRASP 常见设计原则 什么是分析和设计&#xff1f; 分析&#xff0c;强调是对问题和需求的调查研究&#xff0c;不是解决方案。例如&#x…

第五届电网系统与绿色能源国际学术会议(PGSGE 2025)

2025年第五届电网系统与绿色能源国际学术会议(PGSGE 2025) 定于2025年01月10-12日在吉隆坡召开。 第五届电网系统与绿色能源国际学术会议&#xff08;PGSGE 2025&#xff09; 基本信息 会议官网&#xff1a;www.pgsge.org【点击投稿/了解会议详情】 会议时间&#xff1a;202…

Python爬虫 - 豆瓣图书数据爬取、处理与存储

文章目录 前言一、使用版本二、需求分析1. 分析要爬取的内容1.1 分析要爬取的单个图书信息1.2 爬取步骤1.2.1 爬取豆瓣图书标签分类页面1.2.2 爬取分类页面1.2.3 爬取单个图书页面 1.3 内容所在的标签定位 2. 数据用途2.1 基础分析2.2 高级分析 3. 应对反爬机制的策略3.1 使用 …

Java 数据库连接 - Sqlite

Java 数据库连接 - Sqlite PS: 1. 连接依赖库&#xff1a;[sqlite-jdbc-xxx.jar](https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc)(根据连接的数据库版本选择) 2. 支持一次连接执行多次sql语句&#xff1b; 3. 仅本地连接&#xff1b;使用说明&#xff1a; publ…

组网实训实现

小型单元网络实现 IP划分&#xff1a; 外网:172.1.1.0/24 172.1.2.0/24 内网&#xff1a;基于192.168.3.0/24的子网划分 综合办公楼&#xff1a;192.168.3.00 000000 /26&#xff08;192.168.3.0-192.168.3.63&#xff09; 综合一楼&#xff1a;192.168.3.0000 0000 /28&…

如何在 VSCode 中配置 C++ 开发环境:详细教程

如何在 VSCode 中配置 C 开发环境&#xff1a;详细教程 在软件开发的过程中&#xff0c;选择一个合适的开发环境是非常重要的。Visual Studio Code&#xff08;VSCode&#xff09;作为一款轻量级的代码编辑器&#xff0c;凭借其强大的扩展性和灵活性&#xff0c;受到许多开发者…

UE5动画蓝图

动画蓝图&#xff0c;混合空间&#xff0c;状态机&#xff0c;瞄准偏移&#xff0c;动画蒙太奇&#xff0c;动画混合&#xff0c;骨骼绑定&#xff0c;动画重定向&#xff0c;动画通知&#xff0c;Control Rig…… 虚幻动画模块是一个庞大的系统&#xff0c;大模块里又包含很多…

腾讯云智能结构化 OCR:驱动多行业数字化转型的核心引擎

在当今数字化时代的汹涌浪潮中&#xff0c;数据已跃升为企业发展的关键要素&#xff0c;其高效、精准的处理成为企业在激烈市场竞争中脱颖而出的核心竞争力。腾讯云智能结构化 OCR 技术凭借其前沿的科技架构与卓越的功能特性&#xff0c;宛如一颗璀璨的明星&#xff0c;在交通、…

Flutter Android修改应用名称、应用图片、应用启动画面

修改应用名称 打开Android Studio&#xff0c;打开对应项目的android文件。 选择app下面的manifests->AndroidManifest.xml文件&#xff0c;将android:label"bluetoothdemo2"中的bluetoothdemo2改成自己想要的名称。重新启动或者重新打包&#xff0c;应用的名称…

USB 驱动开发 --- Gadget 设备连接 Windows 免驱

环境信息 测试使用 DuoS(Arm CA53&#xff0c; Linux 5.10) 搭建方案验证环境&#xff0c;使用 USB sniff Wirekshark 抓包分析&#xff0c;合照如下&#xff1a; 注&#xff1a;左侧图中设备&#xff1a;1. 蓝色&#xff0c;USB sniff 非侵入工 USB 抓包工具&#xff1b;2. …

java项目之读书笔记共享平台(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的闲一品交易平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 读书笔记共享平台的主要使…

git知识点汇总

git init 初始化一个git仓库&#xff0c;后面可以加仓库名&#xff0c;在当前目录下创建指定名称的目录并在该目录下创建仓库&#xff0c;若不加则直接在当前目录下创建仓库。git仓库的三个区域&#xff1a;工作区&#xff08;当前目录&#xff09;、暂存区&#xff08;.git/in…