综合技术
直播中

李伟嘉

7年用户 177经验值
私信 关注
[问答]

卷积神经网络如何使用

卷积神经网络(CNN)究竟是什么,鉴于神经网络在工程上经历了曲折的历史,您为什么还会在意它呢? 对于这些非常中肯的问题,我们似乎可以给出相对简明的答案。


回帖(6)

付华一

2019-7-17 17:05:05
简言之,CNN是神经网络中的卷积步骤,是很多应用的关键方法,例如,视觉处理、笔迹识别、声纹分析、机器人,以及汽车辅助驾驶系统等。还能扩展到范围更广的嵌入式系统中。如果您希望掌握这一越来越广泛的应用的最新信息,那么,您应该非常关注它,因为CNN通常是这些问题的最佳解决方案,已经摆脱了在学术界的长期停留,进入了实际应用。
CNN某些重要的特性使其与传统的信号处理工具完全不同,体现在其功能以及您怎样设计它们上。相应的,CNN第一次的实际应用不是作为一种通用方法,而是专用黑盒,或者是工作台——对于使用它们的设计团队而言,大部分内部复杂的东西都是隐藏的。但还是让我们从头开始阐述。
举报

李建设

2019-7-17 17:05:20
卷积什么?
i-Abra CTO Greg Compton解释说:“了解CNN最简单的方法是开发一个功能非常强大的多对一滤波器。”例如,您会设计一个处理一帧高清晰视频的CNN,输出一个比特代表帧中是否有行人出现。
过去通过很多方法实现了这种目标识别工作。最常用、最直观的方法是基于规则的:针对预定义形状搜索图像,把形状位置置入到一个分类器中,设定分类器规则,哪些形状组合会是一个人。在抽象测试中,这类系统能够很好的执行。但是,在位置、姿势、灯光和噪声水平发生变化的真实图像中,这些还不够。
另一个极端则是神经网络。1940年,研究人员开始研究动物某些特殊的神经细胞是怎样工作的。这导致上世纪60年代的电子化发展,最终出现计算机、神经元模型,应用于小规模网络中,旨在解决某些具体的问题。这些问题的特征一般是极低的信噪比,要寻找的图案在很宽的范围内出现,或者很难定义要探测的目标。
到1990年,研究人员建立了神经网络——特别是深度学习神经网络,在图像识别和目标分类上非常成功。而深度学习网络包括了人工神经元连续层,每一个神经元处理前一层所有神经元输出的加权和。结果非常好——但是,如果输入是高清晰扩展动态范围摄像机输出的每秒120帧图像,那么计算负载是惊人的。
为解决计算问题,CNN结合了来自数字处理领域的两种方法:采用小卷积内核来搜索输入图像的某些视觉特性,极大的减少了数组非常大的一端的网络连接。他们采用了神经网络后端来解释卷积层出现的图案特性。更重要的一点:CNN采用了关键的后向传播学习神经网络技术,不仅仅训练神经元连接,而且还有卷积内核。结果(图1)是混合了前端卷积层和子采样以及后端神经元层的网络。
图1.一个常见卷积神经网络设计包括卷积连续层,具有映射和子采样功能,随后是卷积神经网络组织层。

举报

于姝斐

2019-7-17 17:05:28
内部有什么
从这里,我们可以更详细的了解CNN内部。一切都是从到达网络第一层的数据二维帧开始。使用小卷积内核熟悉的方法——即,4*4像素,第一个卷积层卷积内核和4*4单元,图像中每一像素一个,采用卷积结果替代像素值。结果实际上是稍小一些的帧,每一像素值代表单元中的像素与卷积内核特征的相似程度。这可以是线段、角度、T,或者其他的;我们稍后会讨论它来自哪里。
现在,CNN中的每一个卷积层都会将这一过程重复几次,每一次采用不同的内核。每一次都会产生不同的输出,CNN研究人员称其为特征图。那么,在我们CNN中的第一层会含有8个特征图,每一个特征图描述了最初图像中某一特性的可能位置。例如,如果我们进行印刷字符识别,我们最终会得到一个特征图,有水平、垂直和对角线段,不同内核合起来会有几张特征图。这些图的每一张的像素数都与最初图像几乎完全相同。但是,图像中的每一像素连接到每一个神经元,产生所有这些所需处理量只是一个神经元层所需要的一小部分。
卷积层最后一个不太明显的功能是去线性化。在很多CNN设计中,每一层采用了超越函数——流行的是双曲正切,限制像素值的范围,保证输出不是输入的线性组合。这对于后面的训练目的非常重要。
一个CNN通常含有多个卷积层。如果的确是这样,那么,更深的层会有多个特征图。但是这些特征图来自3D,而不是2D卷积。特征图中的每一个像素都是小3D内核加权和,乘以前一层中特征图相应的单元像素(图2)。直观地看——这里所应用的数学会让大家感到畏缩,后续层中的特征图是前面层中特征图所识别的特征位置的映射:在我们的字符识别实例中,即,最邻近的垂直线,对角线,连接点。
图2.内部卷积层对3D内核与前一层中每一特征图的2D单元进行卷积。


原理上,我们可以一层层堆起来,堆叠大量的卷积层,构建非常复杂的特征识别网络。但是在很多应用中,这是很大的浪费。当您希望知道邻近组合特征点的位置时,您不需要把位置设定到高清晰像素级。您可以简单的说,这一特征图的线段、角度和连接点的某些组合接近最初图像。换言之,在每一卷积层的最后,您可以仅保留一个小单元中所有像素的最大值,对每一特征图进行子采样。这意味着,每一层需要卷积的数据量大幅度下降,经验表明,并没有降低结果的精度。
举报

h1654155275.5669

2019-7-17 17:05:34
分类
两个或者三个这些卷积加上子采样层对之后,我们得到了大量的小特征图。每一张图都代表了最初图像中非常复杂的图案可能出现的位置:一个字符串或者一个行人形状的物体。但是,我们需要的不止是一张图——我们需要的是提取出所代表的含义。这一个手写的文字是代表美国第一任总统,George Washington? 是否有行人在前面路上徘徊? 我们需要得到是或者不是的答案。
这不是识别,而是分类。为进行分类,CNN在卷积层之后采用了全连接神经网络层。在第一个神经元层,每一个神经元处理来自最终卷积/子采样层的每一特征图的每一像素值,每一数值与预定的权重相乘,对求和去线性化。实际上,每一神经元的输出现在代表了对整个最初图像的判断。是不是有人写下了文字G. Washington? 路边上的物体会是一个行人吗?
当我们要求图像越来越多的抽象结论时,我们就增加了更多的神经元层。每一层都是全连接的,而某些CNN体系结构在最后一层转换为高斯连接方式。目前为止,层中的神经元相对较少,但是可能会代表非常复杂的判断:这是Washington总统在其第一任期内写下的文字吗? 在我到达交叉路口之前,前面是不是有个要倒下的醉汉?
如果您一直跟踪下去,会发现CNN的每一新帧都会触发雪崩式的计算,大部分计算都需要浮点格式。在输入层,图像中的每一个4*4单元都需要一个小规模的有限冲击响应(FIR)滤波器:16次乘法,一些加法,以及tanh(x)赋值。在输入层,每一特征图都得完成这些。对于新层中的每一特征图,在后续层中,来自前一层的每一个特征图的每一个单元(包括所有叠加的),被送入到卷积引擎中。子采样功能可以使其不会成为一项巨大的工作,但是规模仍然很大。但是在这一级,与评估全连接层的工作相比,这仍然微不足道。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分