图像的处理原理:CNN(卷积神经网络)的实现过程
myzbx 2025-01-15 15:54 37 浏览
了解一定的技术原理,对产品经理而言是有益处的。本文讲述的图像处理的基本思路,希望大家能够对当前图像处理技术有一定了解。
现在有个概念叫泛产品经理,这个概念本身是好的,核心说的是产品思维,但是在工作上我认为还是有一定误导性。产品经理在工作中要突出自己的核心价值与职业壁垒,如果无法构建良好的职业壁垒,就会面临中年危机带来的挑战。
人工智能相对的技术内容是塑造职业壁垒的有力武器,并非要求产品经理能够自己写代码开发产品,而且在了解技术原理后,能够将业务快速高效的转化为可实施的产品问题,对于人工智能相关的产品更加重要。所有了解一定的技术原理,对产品经理而言是有益处的。本文讲述的图像处理的基本思路,希望大家能够对当前图像处理技术有一定了解。
卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,是当今图像处理的主流技术。说起CNN卷积网络,不得不说2012 年Alex Krizhevsky 凭借它们赢得了那一年的 ImageNet 大赛(由斯坦福大学李飞飞发起的世界级人工智能大赛),AlexNet将图像分类误差记录从 26% 降低到 15%,之后很多公司开始将深度学习作为的核心技术发展。Facebook、谷歌、亚马逊等知名公司都利用卷积网络进行图像识别,商品推送等工作。
CNN卷积神经网络是一个大家族,对图像而言主要有以下4个关键技术应用。
- 物体定位:预测包含主要物体的图像区域,以便识别区域中的物体。
- 物体识别:针对分割好的目标进行分类。
- 目标分割:将图像目标分割出来,针对图像上的像素进行归属,例中如人类、建筑物等。
- 关键点检测:从图像中检测目标物体上某关键点的位置,例如人类面部关键点信息。
CNN网络训练数据集是公开的,支持全球的开发者进行下载训练模型数据集:
(1)MNIST:最受欢迎的深度学习数据集之一。手写数字数据集,包含一组60,000个示例的训练集和一个包含10,000个示例的测试集。http://deeplearning.net/tutorial/gettingstarted.html
(2)ImageNet:李飞飞创立的全球视觉识别挑战赛数据集(ILSVRC)。http://image-net.org/index
(3)PASCAL:标准化的优秀的数据集,数据集可以用于图像分类、目标检测、图像分割。http://host.robots.ox.ac.uk/pascal/VOC/
(4)MS-COCO:COCO是一个大型的、丰富的物体检测,分割和字幕数据集。http://cocodataset.org/
为什么要用CNN来处理图像呢?
原因很简单,因为能在短时间内提取图像特征。
一般来讲,普通神经网络将输入层和隐含层进行全连接(Full Connected),从而保证系统能够提取张图像的特征。从算力的角度来分析,较小的图像从整幅图像中计算特征是可行的。比如提取一张28×28的小照片的特征,当前CPU还够用。
但是,如果提取大的图像(如 96×96 的图像),要使用这种普通神经网络全全连接方法来学习整幅图像上的特征,将变得非常耗时。需要设计个输入单元,如果要学习 100 个特征,那么就有个参数需要进行运算。
相比之下,96×96 的图像计算过程比28×28图像的处理过程慢100倍。大家都明白当前的相片动不动就是高清大图,普通神经网络按照全连接的方式无法预计何时才能处理完。
下面的内容是本节的重点部分,我们具体来讲述一下CNN网络的实现过程。
1. 图像的输入
我们首先要搞清楚一张照片是如何输入到神经网络中的。众所周知,计算机适合处理的是矩阵运算,所以必须要把图片转换成矩阵后计算机才能认识。所有的彩色图像都由红绿蓝(RGB)叠加而成,成为图像的三个通道,一张图片在计算机中存储也是通过这三个矩阵完成的。
图4-23图的色彩通道
如图4-23所示,一张64*64个像素大小的图片(例如白色可以表示成RGB(255,255,255),可以用3个64*64大小的矩阵来代表这个图。上面指画三个5 * 4的矩阵来代表64*64的全尺寸矩阵。RGB这三个矩阵称为为图像的3个通道,也作为神经网络的输入数据。
2. 卷积神经网络的组成
与其他神经网络相同,CNN网络同样也包含输入层、隐藏层、输出层几大部分,卷积神经网络的主要运算过程如图4-24所示。
图4-24卷积神经网络处理过程
卷积层(Convolutional layer):卷积层由多个卷积单元组成,每个卷积单元的参数都是通过反向传播算法优化得到的。卷积运算主要为了提取图像的特征,随着卷积层的增加,多层网络可以提取更为复杂的图像特征。
线性整流(Rectified Linear Units layer, ReLU layer):主要指的是激活函数运算(Activation function)使用线性整流的ReLu函数(Rectified Linear Units, ReLU)。
池化层(Pooling layer):在卷积之后图像的维度特征依然很多,将特征矩阵分割成几个单个区块,取其最大值或平均值,起到了降维的作用。
全连接层(Fully-Connected layer):把所有局部特征以及各通道的特征矩阵结合变为向量代表,计算最后每一类的得分。
3. 计算过程
CNN网络的计算过程如图XXX,每个组成模块代表了不同的计算内容。
(1)数据规则化
彩色图像的输入通常先要分解为R(红)G(绿)B(蓝)三个通道,其中每个值介于0~255之间。
(2)卷积运算(Convolution)
前面讲到,由于普通的神经网络对于输入与隐层采用全连接的方式进行特征提取,在处理图像时,稍微大一些的图将会导致计算量巨大而变得十分缓慢。卷积运算正是为了解决这一问题,每个隐含单元只能连接输入单元的一部分,我们可以理解为是一种特征的提取方法。
首先我们来明确几个基础概念:深度(depth)、步长(stride)、补零(zero-padding)、卷积核(convolution kernel)。
深度(depth):深度指的是图的深度与它控制输出单元的深度,也表示为连接同一块区域的神经元个数。
步幅(stride):用来描述卷积核移动的步长。
补零(zero-padding):通过对图片边缘补零来填充图片边缘,从而控制输出单元的空间大小。
卷积核(convolution kernel):在输出图像中每一个像素是输入图像中一个小区域中像素的加权平均的权值函数。卷积核可以有多个,卷积核参数可以通过误差反向传播来进行训练。
如图4-25为步长=1的卷积计算过程,卷积核依次向右移动进行卷积运算得到相应结果。
图4-25 卷积运算过程
为图像计算可以对边缘进行补零,可见这个过程改变了图像的运算大小,如图4-26所示。
卷积运算的过程其实非常简单,过程如图4-27描述,可以概括为公式(4.3.6)。其中B代表卷积后的结果,K是卷积核,A为图像的输入矩阵。
图4-27 卷积运算过程
如图4-27所示,可见卷积核K为2*2的卷积核,详细运算过程如下。
全部图像卷积运算可以通过公式(4.3.6)进行。
(3)激活
CNN卷积神经网络在卷积后需要经过激活过程,当前通常使用的激活函数是Relu函数。Relu函数的主要特点在之前的章节已经讲过。从函数的图像上来看,单侧抑制,相对宽阔的兴奋边界,具有稀疏激活性的特点。
(4)池化(Pooling)
池化的目的是提取特征,减少向下一个阶段传递的数据量。池化操作相对于对每个深度切片是独立,池化规模一般为像素的 2*2,与卷积运算相比,池化层运算一般有以下几种:
- 最大池化(Max Pooling):取4个点数值的最大值。这是最常用的池化算法。
- 均值池化(Mean Pooling):取4个点数值的均值。
- 高斯池化(Gauss Pooling):按照高斯模糊的方法。
如图4-28,描述了最大池化的计算方法。
图4-28 池化运算过程
(5)全连接(Fully-connected layer)
全连接层一般出现最后几步,在卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。全连接过程是对矩阵的展开过程,也可以理解为输出矩阵与一个1*1的卷积核进行卷积运算,最后展开为一个1*n的向量。
在卷积神经网络中,全连接层一般使用Softmax函数来进行分类。Softmax函数适用于数据分类,用于保证每个分类概率总和为1。
卷积神经网络(CNN)的计算过程虽然讲解繁琐,但对于了解深刻理解神经网络算法非常有益。卷积神经网络经过近30年的发展拥有多条网络发展分支,并且持续高速发展之中。其中有网络层数加深的VGG16与VGG19等,有卷积模块增强的NIN网络等,从分类任务向目标检测任务过度的新型网络R-CNN等,图4-29展示了卷积神经网络的不同发展分支。
#专栏作家#
白白,人人都是产品经理专栏作家。公众号:白白说话(xiaob-talk)。医药行业资深产品专家,负责人工智能行业类产品综合架构与技术开发。在行业云产品架构,药物设计AI辅助、医疗知识图谱等领域有深入研究。
本文原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自Unsplash,基于 CC0 协议
相关推荐
- 如何设计一个优秀的电子商务产品详情页
-
加入人人都是产品经理【起点学院】产品经理实战训练营,BAT产品总监手把手带你学产品电子商务网站的产品详情页面无疑是设计师和开发人员关注的最重要的网页之一。产品详情页面是客户作出“加入购物车”决定的页面...
- 怎么在JS中使用Ajax进行异步请求?
-
大家好,今天我来分享一项JavaScript的实战技巧,即如何在JS中使用Ajax进行异步请求,让你的网页速度瞬间提升。Ajax是一种在不刷新整个网页的情况下与服务器进行数据交互的技术,可以实现异步加...
- 中小企业如何组建,管理团队_中小企业应当如何开展组织结构设计变革
-
前言写了太多关于产品的东西觉得应该换换口味.从码农到架构师,从前端到平面再到UI、UE,最后走向了产品这条不归路,其实以前一直再给你们讲.产品经理跟项目经理区别没有特别大,两个岗位之间有很...
- 前端监控 SDK 开发分享_前端监控系统 开源
-
一、前言随着前端的发展和被重视,慢慢的行业内对于前端监控系统的重视程度也在增加。这里不对为什么需要监控再做解释。那我们先直接说说需求。对于中小型公司来说,可以直接使用三方的监控,比如自己搭建一套免费的...
- Ajax 会被 fetch 取代吗?Axios 怎么办?
-
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!今天给大家带来的主题是ajax、fetch...
- 前端面试题《AJAX》_前端面试ajax考点汇总
-
1.什么是ajax?ajax作用是什么?AJAX=异步JavaScript和XML。AJAX是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实...
- Ajax 详细介绍_ajax
-
1、ajax是什么?asynchronousjavascriptandxml:异步的javascript和xml。ajax是用来改善用户体验的一种技术,其本质是利用浏览器内置的一个特殊的...
- 6款可替代dreamweaver的工具_替代powerdesigner的工具
-
dreamweaver对一个web前端工作者来说,再熟悉不过了,像我07年接触web前端开发就是用的dreamweaver,一直用到现在,身边的朋友有跟我推荐过各种更好用的可替代dreamweaver...
- 我敢保证,全网没有再比这更详细的Java知识点总结了,送你啊
-
接下来你看到的将是全网最详细的Java知识点总结,全文分为三大部分:Java基础、Java框架、Java+云数据小编将为大家仔细讲解每大部分里面的详细知识点,别眨眼,从小白到大佬、零基础到精通,你绝...
- 福斯《死侍》发布新剧照 "小贱贱"韦德被改造前造型曝光
-
时光网讯福斯出品的科幻片《死侍》今天发布新剧照,其中一张是较为罕见的死侍在被改造之前的剧照,其余两张剧照都是死侍在执行任务中的状态。据外媒推测,片方此时发布剧照,预计是为了给不久之后影片发布首款正式预...
- 2021年超详细的java学习路线总结—纯干货分享
-
本文整理了java开发的学习路线和相关的学习资源,非常适合零基础入门java的同学,希望大家在学习的时候,能够节省时间。纯干货,良心推荐!第一阶段:Java基础重点知识点:数据类型、核心语法、面向对象...
- 不用海淘,真黑五来到你身边:亚马逊15件热卖爆款推荐!
-
Fujifilm富士instaxMini8小黄人拍立得相机(黄色/蓝色)扫二维码进入购物页面黑五是入手一个轻巧可爱的拍立得相机的好时机,此款是mini8的小黄人特别版,除了颜色涂装成小黄人...
- 2025 年 Python 爬虫四大前沿技术:从异步到 AI
-
作为互联网大厂的后端Python爬虫开发,你是否也曾遇到过这些痛点:面对海量目标URL,单线程爬虫爬取一周还没完成任务;动态渲染的SPA页面,requests库返回的全是空白代码;好不容易...
- 最贱超级英雄《死侍》来了!_死侍超燃
-
死侍Deadpool(2016)导演:蒂姆·米勒编剧:略特·里斯/保罗·沃尼克主演:瑞恩·雷诺兹/莫蕾娜·巴卡林/吉娜·卡拉诺/艾德·斯克林/T·J·米勒类型:动作/...
- 停止javascript的ajax请求,取消axios请求,取消reactfetch请求
-
一、Ajax原生里可以通过XMLHttpRequest对象上的abort方法来中断ajax。注意abort方法不能阻止向服务器发送请求,只能停止当前ajax请求。停止javascript的ajax请求...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 简介 (30)
- HTML 响应式设计 (31)
- HTML URL 编码 (32)
- HTML Web 服务器 (31)
- HTML 表单属性 (32)
- HTML 音频 (31)
- HTML5 支持 (33)
- HTML API (36)
- HTML 总结 (32)
- HTML 全局属性 (32)
- HTML 事件 (31)
- HTML 画布 (32)
- HTTP 方法 (30)
- 键盘快捷键 (30)
- CSS 语法 (35)
- CSS 轮廓宽度 (31)
- CSS 谷歌字体 (33)
- CSS 链接 (31)
- CSS 定位 (31)
- CSS 图片库 (32)
- CSS 图像精灵 (31)
- SVG 文本 (32)
- 时钟启动 (33)
- HTML 游戏 (34)
- JS Loop For (32)
