当前位置: 首页 > news >正文

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

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

相关文章:

利用Deeplearning4j进行 图像识别

目录 图像识别简介 神经网络 感知器 前馈神经网络 自动编码器 受限玻尔兹曼机 深度卷积网络 理解图像内容以及图像含义方面,计算机遇到了很大困难。本章先介绍计算机理解图像教育方面 遇到的难题,接着重点讲解一个基于深度学习的解决方法。我们会…...

练习题:37

目录 Python题目 题目 题目分析 套接字概念剖析 通信原理分析 服务器 - 客户端连接建立过程: 基于套接字通信的底层机制: 代码实现 基于 TCP 的简单服务器 - 客户端通信示例 服务器端代码(tcp_server.py) 客户端代码&a…...

Unity热更文件比较工具类

打包出来的热更文件,如果每次都要全部上传到CDN文件服务器,不进耗费时间长,还浪费流量。 所以让AI写了个简单的文件比较工具类,然后修改了一下可用。记录一下。 路径可自行更改。校验算法这里使用的是MD5,如果使用SH…...

【hustoj注意事项】函数返回值问题

原文 https://lg.h-fmc.cn/index.php/BC/27.html 问题回顾 此题目选自HFMC_OJ&#xff1a;4312: 简单递归操作 hustoj测试 此问题错误的代码是 #include<bits/stdc.h> using namespace std; int a[10000];int n; int b[10000]{0}; int pailie(int deep) {int i; for(…...

实现一个通用的树形结构构建工具

文章目录 1. 前言2. 树结构3. 具体实现逻辑3.1 TreeNode3.2 TreeUtils3.3 例子 4. 小结 1. 前言 树结构的生成在项目中应该都比较常见&#xff0c;比如部门结构树的生成&#xff0c;目录结构树的生成&#xff0c;但是大家有没有想过&#xff0c;如果在一个项目中有多个树结构&…...

数势科技:解锁数据分析 Agent 的智能密码(14/30)

一、数势科技引领数据分析变革 在当今数字化浪潮中&#xff0c;数据已然成为企业的核心资产&#xff0c;而数据分析则是挖掘这一资产价值的关键钥匙。数势科技&#xff0c;作为数据智能领域的领军者&#xff0c;以其前沿的技术与创新的产品&#xff0c;为企业开启了高效数据分析…...

机器学习之过采样和下采样调整不均衡样本的逻辑回归模型

过采样和下采样调整不均衡样本的逻辑回归模型 目录 过采样和下采样调整不均衡样本的逻辑回归模型1 过采样1.1 样本不均衡1.2 概念1.3 图片理解1.4 SMOTE算法1.5 算法导入1.6 函数及格式1.7 样本类别可视化理解 2 下采样2.1 概念2.2 图片理解2.3 数据处理理解2.4 样本类别可视化…...

解决 ssh connect to host github.com port 22 Connection timed out

一、问题描述 本地 pull/push 推送代码到 github 项目报 22 端口连接超时&#xff0c;测试连接也是 22 端口连接超时 ssh 密钥没问题、也开了 Watt Toolkit 网络是通的&#xff0c;因此可以强制将端口切换为 443 二、解决方案 1、测试连接 ssh -T gitgithub.com意味着无法通…...

mybatis/mybatis-plus中mysql报错

文章目录 一、sql执行正常,mybatis报错二、sql执行正常,mybatis-plus报错直接改变字段利用mybatis-plus特性处理 总结 一、sql执行正常,mybatis报错 Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "ur" <K_ISOLATION>a…...

在ros2 jazzy和gazebo harmonic下的建图导航(cartographer和navigation)实现(基本)

我的github分支&#xff01;&#xff01;&#xff01; 你可以在这里找到相对应的源码。 DWDROME的MOGI分支 来源于&#xff01;&#xff01; MOGI-ROS/Week-3-4-Gazebo-basics 学习分支整理日志 分支概述 这是一个用于个人学习的新分支&#xff0c;目的是扩展基本模型并添加…...

《Rust权威指南》学习笔记(五)

高级特性 1.在Rust中&#xff0c;unsafe是一种允许绕过Rust的安全性保证的机制&#xff0c;用于执行一些Rust默认情况下不允许的操作。unsafe存在的原因是&#xff1a;unsafe 允许执行某些可能被 Rust 的安全性检查阻止的操作&#xff0c;从而可以进行性能优化&#xff0c;如手…...

GitHub的简单操作

引言 今天开始就要开始做项目了&#xff0c;上午是要把git搭好。搭的过程中遇到好多好多的问题。下面就说一下git的简单操作流程。我们是使用的GitHub,下面也就以这个为例了 一、GitHub账号的登录注册 https://github.com/ 通过这个网址可以来到GitHub首页 点击中间绿色的S…...

「Mac畅玩鸿蒙与硬件54」UI互动应用篇31 - 滑动解锁屏幕功能

本篇教程将实现滑动解锁屏幕功能&#xff0c;通过 Slider 组件实现滑动操作&#xff0c;学习事件监听、状态更新和交互逻辑的实现方法。 关键词 滑动解锁UI交互状态管理动态更新事件监听 一、功能说明 滑动解锁屏幕功能包含以下功能&#xff1a; 滑动解锁区域&#xff1a;用…...

SMMU软件指南之系统架构考虑

安全之安全(security)博客目录导读 目录 5.1 I/O 一致性 5.2 客户端设备 5.2.1 地址大小 5.2.2 缓存 5.3 PCIe 注意事项 5.3.1 点对点通信 5.3.2 No_snoop 5.3.3 ATS 5.4 StreamID 分配 5.5 MSI 本博客介绍与 SMMU 相关的一些系统架构注意事项。 5.1 I/O 一致性 如…...

使用高云小蜜蜂GW1N-2实现MIPI到LVDS(DVP)转换案例分享

作者&#xff1a;Hello&#xff0c;Panda 大家晚上好&#xff0c;熊猫君又来了。 今天要分享的是一个简单的MIPI到LVDS&#xff08;DVP&#xff09;接口转换的案例。目的就是要把低成本FPGA的应用潜力充分利用起来。 一、应用背景 这个案例的应用背景是&#xff1a;现在还在…...

「C++笔记」unordered_map:哈希化的无序映射函数(键值对)

unordered_map 是 C 中一个经过哈希函数&#xff08;Hash&#xff09;处理的映射&#xff08;map&#xff09;容器。 本文中的map和set是差不多的&#xff0c;unordered_map与unordered_set也是对应的。所以不再单独写一篇了。 这里的内容建议看完本文之后再回过头来看 二者虽然…...

Linux 安装jdk

1、官网下载jdk https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html2、以tar包为例&#xff0c;在window或者Linux解压都可以&#xff0c;这里直接在win解压了&#xff0c;上传到服务器 3、在/usr/local/ 创建jdk目录&#xff0c;将jdk上传到…...

asp.net core 发布到iis后,一直500.19,IIS设置没问题,安装了sdk,文件夹权限都有,还是报错

原因就是没有安装ASP.NET Core 9.0 Runtime (v9.0.0) - Windows Hosting Bundle&#xff0c;我是只安装了.net core的sdk&#xff0c;下面介绍下sdk和hosting bundle的关系 在 .NET Core 和 ASP.NET Core 的开发中&#xff0c;SDK&#xff08;Software Development Kit&#x…...

【Go】运行自己的第一个Go程序

运行自己的第一个Go程序 一、Go语言的安装Go环境安装查看是否安装成功配置GOPROXY(代理) 二、Goland安装三、Goland破解四、新建项目 开一篇专栏记录学习Go的过程&#xff0c;一门新语言从hello world开始&#xff0c;这篇文章详细讲解Go语言环境搭建及hello world实现 一、Go语…...

qt qss文件的使用

qt样式的修改方式 一 通过ui界面的改变样式表来直接修改显示效果。 不推荐&#xff0c;其他人不好修改&#xff0c;不够直观&#xff0c;不易维护。 二 通过setStyleSheet接口修改。 一般&#xff0c;界面很少的时候可以使用。一旦界面多起来&#xff0c;代码部分就显得杂乱…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一&#xff1a;使用Read()读取文件2.3、方式二&#xff1a;bufio读取文件2.4、方式三&#xff1a;os.ReadFile读取2.5、写…...