zoukankan      html  css  js  c++  java
  • 【68】一维和三维卷积

    1. 2维数据
    从卷积神经网络框架,到如何使用它进行图像识别、对象检测、人脸识别与神经网络转换
    即使大部分讨论的图像数据,某种意义上而言都是2D数据,考虑到图像如此普遍
    许多所掌握的思想不仅局限于2D图像,甚至可以延伸至1D,乃至3D数据

    关于2D卷积,可能会输入一个14×14的图像,并使用一个5×5的过滤器进行卷积
    接下来看到了14×14图像是如何与5×5的过滤器进行卷积的
    通过这个操作会得到10×10的输出

    如果使用了多通道,比如14×14×3,那么相匹配的过滤器可能是5×5×3
    如果使用了多重过滤,比如16,最终你得到的是10×10×16

    2. 1维数据
    事实证明早期想法也同样可以用于1维数据

    举个例子,左边是一个EKG信号,或者说是心电图(electrocardiogram)
    当在胸部放置一个电极,电极透过胸部测量心跳带来的微弱电流
    正因为心脏跳动,产生的微弱电波能被一组电极测量
    这就是人心跳产生的EKG,每一个峰值都对应着一次心跳

    如果想使用EKG信号,比如医学诊断
    那么将处理1维数据,因为EKG数据是由时间序列对应的每个瞬间的电压组成
    这次不是一个14×14的尺寸输入,可能只有一个14尺寸输入

    在这种情况下可能需要使用一个1维过滤进行卷积
    只需要一个1×5的过滤器,而不是一个5×5的

    当对这个1维信号使用卷积,将发现一个14维的数据与5维数据进行卷积,并产生一个10维输出

    再一次如果使用多通道,在这种场景下可能会获得一个14×1的通道
    如果使用一个EKG,就是5×1的,如果有16个过滤器
    可能最后会获得一个10×16的数据,这可能会是卷积网络中的某一层

    对于卷积网络的下一层
    如果输入一个10×16数据,也可以使用一个5维过滤器进行卷积,这需要16个通道进行匹配
    如果有32个过滤器,另一层的输出结果就是6×32

    于2D数据而言,当处理10×10×16的数据时也是类似的
    可以使用5×5×16进行卷积,其中两个通道数16要相匹配
    将得到一个6×6的输出
    如果用的是32过滤器,输出结果就是6×6×32,这也是32的来源

    所有这些方法也可以应用于1维数据,可以在不同的位置使用相同的特征检测器
    比如说,为了区分EKG信号中的心跳的差异,可以在不同的时间轴位置使用同样的特征来检测心跳
    所以卷积网络同样可以被用于1D数据,对于许多1维数据应用
    实际上会使用递归神经网络进行处理

    3. 3维数据
    与1D数列或数字矩阵不同,现在有了一个3D块,一个3D输入数据

    以做CT扫描为例,这是一种使用X光照射,然后输出身体的3D模型
    CT扫描实现的是它可以获取身体不同片段(图片信息)

     

    当进行CT扫描时,与现在做的事情一样,可以看到人体躯干的不同切片,本质上这个数据是3维的

    一种对这份数据的理解方式是:
    假设数据现在具备一定长度、宽度与高度,其中每一个切片都与躯干的切片对应

    如果想要在3D扫描或CT扫描中应用卷积网络进行特征识别
    也可以从二维和一维的卷积里得到想法,并将其应用到3D卷积中

    为了简单起见,如果有一个3D对象,比如说是14×14×14
    这也是输入CT扫描的宽度与深度(后两个14)
    再次提醒,正如图像不是必须以矩形呈现,3D对象也不是一定是一个完美立方体
    所以长和宽可以不一样
    同样CT扫描结果的长宽高也可以是不一致的
    为了简化讨论,仅使用14×14×14为例

    如果现在使用5×5×5过滤器进行卷积,过滤器现在也是3D的,这将会给一个10×10×10的结果输出
    技术上来说也可以再×1(编号1所示),如果这有一个1的通道
    这仅仅是一个3D模块,但是数据可以有不同数目的通道
    那种情况下也是乘1(编号2所示),因为通道的数目必须与过滤器匹配
    如果使用16过滤器处理5×5×5×1,接下来的输出将是10×10×10×16
    这将成为3D数据卷积网络上的一层

    如果下一层卷积使用5×5×5×16维度的过滤器再次卷积,通道数目也与往常一样匹配
    如果有32个过滤器,操作也与之前相同,最终得到一个6×6×6×32的输出

    某种程度上3D数据也可以使用3D卷积网络学习,这些过滤器实现的功能正是通过3D数据进行特征检测
    CT医疗扫描是3D数据的一个实例

    另一个数据处理的例子是可以将电影中随时间变化的不同视频切片看作是3D数据
    可以将这个技术用于检测动作及人物行为

    总而言之这就是1D、2D及3D数据处理,图像数据无处不在
    以至于大多数卷积网络都是基于图像上的2D数据
    但希望其他模型同样会有帮助

  • 相关阅读:
    CodeForces
    hdu4003 树形dp
    hdu2196
    poj2486
    hdu1502 树形dp入门题
    cf 686D
    bzoj2763 分层图
    hdu4424 并查集+贪心+思维
    poj1734 最小环+输出路径
    集训题解1
  • 原文地址:https://www.cnblogs.com/lau1997/p/12391280.html
Copyright © 2011-2022 走看看