卷积神经网络原来是这样实现图像识别的

news2024/10/7 14:08:20

积神经网络原来是这样实现图像识别的

图像识别是非常有趣和具有挑战性的研究领域。本文阐述了卷积神经网络用于图像识别的概念、应用和技术。

什么是图像识别,为什么要使用它?

在机器视觉领域,图像识别是指软件识别人物、场景、物体、动作和图像写入的能力。为了实现图像识别,计算机可以结合人工智能软件和摄像机使用机器视觉技术。

虽然人类和动物的大脑很容易识别物体,但计算机在相同的任务中却遇到了困难。当我们看着像树木、汽车或朋友的东西时,我们通常不需要有意识地去学习后才能判断它是什么。然而,对于计算机,识别任何东西(无论是钟、椅子、人类或动物)都是一个非常困难的问题,并且为该问题找到解决方案的风险非常高。

图片:CS231.github

图像识别是一种机器学习方法,其设计类似于人类大脑的功能。通过这种方法,计算机可以识别图像中的视觉元素。通过依靠大型数据库和注意显露模式(emerging patterns),计算机可以理解图像,并制定相关的标签和类别。

图像识别的流行应用

图像识别有各种应用。其中最常见和最受欢迎的是个人图片管理。照片管理应用程序的用户体验正在通过图像识别变得越来越好。除了提供照片存储,应用程序还要进一步向人们提供更好的发现和搜索功能。他们可以通过机器学习提供的自动图像组织的功能来实现。集成在应用中的图像识别应用编程接口根据识别的图案对图像进行分类,并将它们进行主题分组。

图像识别的其他应用包括全景图库和视频网站、互动营销和创意活动、社交网络上的面部和图像识别以及具有巨大视觉数据库的网站的图像分类。

图像识别是一项艰巨的任务

图像识别不是一件容易的事情。实现它的一个好方法是,将元数据应用于非结构化数据。聘请人类专家手动标注音乐和电影库可能是一项艰巨的任务,但是当涉及无人驾驶汽车的导航系统,如将道路上的行人与各种其他车辆区分开来或过滤,分类或标记每天在社交媒体上显示的用户上传的数百万个视频和照片等挑战时,将变得遥不可及。

解决这个问题的一个方法是利用神经网络。我们可以利用传统的神经网络在理论上分析图像,但在实践中,从计算的角度来说,成本将是非常昂贵的。例如,一个普通的试图处理小图像的神经网络(让它变为30 * 30像素)仍然需要50万个参数和900个输入。一个功能强大的机器可以处理这一点,但是,一旦图像变得更大(例如达到500 * 500像素),则需要的参数和输入数量就会增加到非常高的水平。

与图像识别神经网络的应用相关的另一个问题是过度拟合。简单来说,过度拟合发生在模型裁剪本身与其已经被训练的数据非常接近的时候。一般来说,这将导致附加参数(进一步增加计算成本)和模型对新数据的暴露导致一般性能下降。

卷积神经网络

卷积神经网络架构模型

就神经网络的结构而言,一个相对简单的变化可以使更大的图像更易于管理。结果就是我们所说的CNN或ConvNets(卷积神经网络)。

神经网络的一般适用性是其优点之一,但是这种优势在处理图像时变成了一种妨碍。卷积神经网络进行有意思的权衡:如果一个网络是专门为处理图像而设计的,那么为了更可行的解决方案,必须牺牲一些一般性。

如果你考虑任何图像,接近度与其中的相似性具有很强的相关性,并且卷积神经网络明确利用了这一事实。这意味着在给定图像中,彼此更接近的两个像素更可能与彼此分开的两个像素相关。然而,在一般的神经网络中,每个像素都都与每一个神经元相连。增加的计算负荷使得网络在这种情况下不太准确。

通过停止很多这些不太重要的连接,卷积解决了这个问题。在技术术语中,卷积神经网络使得图像处理可以通过邻近度对连接进行滤波而计算可管理。在给定层中,卷积神经网络不是将每个输入连接到每个神经元,而是有意限制了连接,使得任何一个神经元仅从它之前的层的小部分接受输入(例如5 * 5或3 * 3像素)。因此,每个神经元只负责处理图像的某一部分(顺便说一句,这几乎是个体皮质神经元在大脑中的作用,每个神经元只对整个视野的一小部分起反应)。

卷积神经网络的工作过程

图片:deeplearning4j

在上图中从左到右,你可以观察到:

·对特征进行扫描的真实输入图像。通过它的过滤器是光矩形。

·激活映射被安排在一个堆栈的顶部,另一个用于你使用的每个筛选器。较大的矩形为要进行下采样的1补丁。

·激活图通过下采样进行压缩。

·通过将过滤器通过堆栈进行下采样生成的一组新的激活映射。

·第二次下采样——将第二组激活图压缩。

·完全连接层,每个节点指定1个标签的输出。

CNN如何通过滤临近连接?秘密是添加了两种新的层:池化和卷积层。我们将以下述方式分解这个过程:使用一个被用于某种用途的,比如说,确定一张图片中是否包含祖父。

该过程的第一步是卷积层,其本身又包含几个步骤。

·首先,我们将把祖父的图片分解成一系列重叠的3 * 3像素的拼图。

·之后,我们将通过一个简单的单层神经网络来运行这些拼图,权重保持不变。将瓷砖排列组合,当我们保持每个图像尺寸是小的(在这种情况下为3 * 3)时,神经网络需要处理它们保证可控与小型化。

·然后,将以数字表示照片中每个区域的内容的数组进行输出值排列,其中坐标轴表示颜色,宽度和高度。所以,对于每个拼图,在这种情况下,我们将有一个3 * 3 * 3的表示。(如果我们谈论祖父的视频的话,我们会抛出第四个维度——时间)。

·下一步是池化层。它采用这些3或4维阵列,并与空间维度一起应用下采样功能。结果是一个池数组,其中仅包含重要的图像部分,同时丢弃剩余部分,这最大限度地减少了需要完成的计算量,同时也避免了过度拟合问题。

采用下采样阵列作为常规全连接神经网络的输入。由于使用池和卷积,输入的大小已经大大降低了,所以我们现在必须拥有普通网络能够处理的一些东西,同时保留最重要的数据部分。最后一步的输出将代表系统对于祖父图片的确信度。

在现实生活中,CNN的工作过程错综复杂,涉及许多隐藏、池化和卷积层。除此之外,真正的CNN通常涉及数百或数千个标签,而不仅仅是单一标签。

如何构建卷积神经网络?

从零开始构建CNN可能是一项昂贵而耗时的工作。话虽如此,人们最近开发了一些API,旨在使不同组织能够收集不同的见解,而无需自己研究机器学习或计算机视觉专业知识。

谷歌 Cloud Vision

GoogleCloud Vision是谷歌的视觉识别API,并使用REST API。它基于开源的TensorFlow框架。它检测单个面部和物体,并包含一个相当全面的标签集。

IBM沃森视觉识别

IBM沃森视觉识别是沃森开发者云(Watson Developer Cloud)的一部分,并附带了一大批内置的类别,但实际上是为根据你提供的图像来训练自定义定制类而构建的。它还支持一些很棒的功能,包括NSFW和OCR检测,如Google Cloud Vision。

Clarif.ai

Clarif.ai是一个新兴的图像识别服务,也使用REST API。关于Clarif.ai的一个有趣的方面是它附带了一些模块,有助于将其算法定制到特定主题,如食物、旅行和婚礼。

尽管上述API适用于少数一般应用程序,但你可能仍然需要为特定任务开发自定义解决方案。幸运的是,许多库可以通过处理优化和计算方面来使开发人员和数据科学家的生活变得更加容易,从而使他们专注于训练模型。有许多库,包括Theano、Torch、DeepLearning4J和TensorFlow已经成功应用于各种应用。

卷积神经网络的有趣应用

自动将声音添加到无声电影

为了匹配无声视频,系统必须在此任务中合成声音。该系统使用千个视频示例进行训练,用鼓棒击打不同的表面,产生不同的声音。深度学习模型将视频帧与预录音的数据库相关联,以选择与场景中发生的完全匹配的声音。然后系统将借助于类似于图灵测试的设置进行评估,人们必须确定哪个视频具有假(合成)或真实的声音。这是卷积神经网络和LSTM循环神经网络中非常酷的应用。

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

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

相关文章

单例模式以及常见的两种实现模式

单例模式是校招中最常考的设计模式之一. 设计模式其实就是类似于“规章制度”,按照这个套路来进行操作。 单例模式能保证某个类在程序中只存在唯一 一份实例。而不会创建出多个实例,如果创建出了多个实例,就会编译报错。而不会创建出多个实…

数据库SQL语言实战(二)

目录 检索查询 题目一 题目二 题目三 题目四 题目五 题目六 题目七 题目八 题目九(本篇最难的题目) 分析 实现(两种方式) 模板 总结 检索查询 按照要求查找数据库中的数据 题目一 找出没有选修任何课程的学…

【算法刷题 | 二叉树 06】4.10( 路径总和、路径总和 || )

文章目录 13.路径总和13.1问题13.2解法一:递归13.2.1递归思路(1)确定递归函数参数以及返回值(2)确定终止条件(3)确定递归逻辑 13.2.2代码实现 14.路径总和 ||14.1问题14.2解法一:递归…

【设计模式】聊聊观察者设计模式原理及应用

原理 观察者模式属于行为模式,行为模式主要解决类和对象之间交互问题。 含义:在对象之间定义一个一对多的依赖,当一个对象状态改变时,所有依赖的对象会自动通知。 被依赖的对象被观察者(Observable) ,依赖的对象观察…

2024年广东省网络系统管理样题第3套网络部署部分

2024年广东省网络系统管理样题第3套网络部署部分 模块A:网络构建 极安云科专注职业教育技能培训4年,包含信息安全管理与评估、网络系统管理、网络搭建等多个赛项及各大CTF模块培训学习服务。本团队基于赛项知识点,提供完整全面的系统性理论教…

欧拉回路算法

1 基本概念 1.1 欧拉路径和欧拉回路 欧拉路径:欧拉路是指从图中任意一个点开始到图中任意一个点结束的路径,并且图中每条边通过的且只通过一次。 欧拉回路:欧拉回路是指起点和终点相同的欧拉路。 注意:如果欧拉回路,那么一定存在…

基于51单片机的无线病床呼叫系统设计—LCD1602显示

基于51单片机的无线病床呼叫系统 (仿真+程序+原理图+设计报告) 功能介绍 具体功能: 1.病人按下按键,LCD1602显示对应的床位号; 2.多人同时呼叫,显示屏同时显示&#xf…

5、JVM-G1详解

G1收集器 -XX:UseG1GC G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征. G1将Java堆划分为多个大小相等的独立区域(Region),JVM目标…

001vscode为什么设置不了中文?

VSCode中文插件安装 在VSCode中设置中文的首要步骤是安装“Chinese (Simplified) Language Pack for Visual Studio Code”扩展插件。这一过程十分简单,只需打开VSCode,进入扩展市场,搜索“ Chinese (Simplified) Language Pack ”然后点击…

C语言高质量编程之assert()和const

目录 编程中常见的错误 assert() const 编程中常见的错误 在编程中我们通常会遇到三种错误形式,分别是:编译型错误,链接型错误,运行时错误。 编译型错误: 在编译阶段发生的错误,绝大多数情况是由语法错误…

【Golang学习笔记】从零开始搭建一个Web框架(二)

文章目录 模块化路由前缀树路由 前情提示: 【Golang学习笔记】从零开始搭建一个Web框架(一)-CSDN博客 模块化路由 路由在kilon.go文件中导致路由和引擎交织在一起,如果要实现路由功能的拓展增强,那将会非常麻烦&…

第二期书生浦语大模型训练营第三次作业

任务一:在茴香豆 Web 版中创建自己领域的知识问答助手 构建个人回答助手 进入web页面,传输属于自己的文件,此处进行输入大量投资领域资料,构建个人投资者问答助手 回答示例 茴香豆缺陷 此处会发现茴香豆仍然存在一些缺点&#…

CF938Div3(A-F)

A: 买n个酸奶&#xff0c;一次一瓶a元,一次买两瓶可以优惠价b元,也可以a元,问恰好买n瓶需要多少钱. void solve() {int n, a, b;cin >> n >> a >> b;int ans min(a * n, n / 2 * b n % 2 * a);cout << ans << endl; } B: 给你一个数组,问能…

手把手教你安装深度学习框架PyTorch:一键式安装指南

随着人工智能和深度学习的飞速发展&#xff0c;PyTorch作为一个强大而灵活的深度学习框架&#xff0c;受到了越来越多研究者和开发者的青睐。PyTorch不仅易于上手&#xff0c;而且支持动态计算图&#xff0c;使得调试和实验变得非常方便。本文将手把手教你如何安装PyTorch&…

Spark-机器学习(1)什么是机器学习与MLlib算法库的认识

从这一系列开始&#xff0c;我会带着大家一起了解我们的机器学习&#xff0c;了解我们spark机器学习中的MLIib算法库&#xff0c;知道它大概的模型&#xff0c;熟悉并认识它。同时&#xff0c;本篇文章为个人spark免费专栏的系列文章&#xff0c;有兴趣的可以收藏关注一下&…

若依从0到1部署

服务器安装 MySQL8 Ubuntu 在 20.04 版本中&#xff0c;源仓库中 MySQL 的默认版本已经更新到 8.0&#xff0c;因此可以直接使用 apt-get 安装。 设置 apt 国内代理 打开 https://developer.aliyun.com/mirror/ 阿里云镜像站&#xff0c;找到适合自己的系统&#xff1a; 找…

实战--------部署搭建ELFK+zookeeper+kafka架构

目录 一、部署jdk环境 二、搭建Elasticsearch 三、搭建logstash 四、搭建kibana服务 五、搭建filebeat服务 六、搭建zookeeper与kafka服务 七、部署ELFKzookeeperkafka Filebeat/Fluentd&#xff1a;负责从各服务器节点上实时收集日志数据&#xff0c;Filebeat轻量级&am…

js学习总结

这里写目录标题 前情提要JavaScript书写位置1. 内部javaScript (不常用)2. 外部javaScript (常用)3.内联javaScript (常用) js中的输入和输出输出语法1. document.write()2. alert()3. console.log() 输入语法prompt() 前情提要 1. 在javaScript中的 分号 是可以省略的JavaScr…

8:系统开发基础--8.1:软件工程概述、8.2:软件开发方法 、8.3:软件开发模型、8.4:系统分析

转上一节&#xff1a; http://t.csdnimg.cn/G7lfmhttp://t.csdnimg.cn/G7lfm 课程内容提要&#xff1a; 8&#xff1a;知识点考点详解 8.1&#xff1a;软件工程概述 1.软件的生存周期 2.软件过程改进—CMM Capability Maturity Model能力成熟度模型 3.软件过程改进—CMMI—…

Niobe开发板OpenHarmony内核编程开发——事件标志

本示例将演示如何在Niobe Wifi IoT开发板上使用cmsis 2.0 接口使用事件标志同步线程 EventFlags API分析 osEventFlagsNew() /// Create and Initialize an Event Flags object./// \param[in] attr event flags attributes; NULL: default values./// \return e…