吴恩达卷积神经网络学习笔记(八)

3.4通过滑动窗口实现卷积

        为了构建滑动窗口的卷积应用,先要将之前神经网络中的全连接层转化为卷积层。

        假设对象检测算法输入一个14*14*13的图像,图像很小,过滤器大小为5*5,数量是16,14x14x3的图像在过波器处理之后映射为10x10x16,然后通过参数为2x2的最大池化操作图像减小到5x5x16,然后添加一个连接400个单元的全连接层,接着再添加一个全连接层,最终通过softmax单元输出Y。

        用4个数字来表示Y,它们分别对应softmax单元所输出的4个分类出现的概率,这4个分类可以是行人汽车摩托车和背景或其它对象。

        用5*5的过滤器来实现,数量是400个,输入图像大小为5*5*16,用5x5的过滤器对它进行卷积操作,过滤器实际是5x5x16,因为在卷积过程中过滤器会遍历这16个信道,所以这两处的信道数量必须保持一致,输出结果为1*1.

        假设应用400个这样的5*5*16过滤器,输出维度就是1*1*400,我们不再把它看作一个含有400个节点的集合,而是一个1*1*400的输出层。从数学角度上看,它和全连接层是一样的,因为这400个节点中每个节点都着个5*5*16维度的过滤器,所以每个值都是上一层上这些5*5*16激活值经过某个任意线性函数的输出结果。

        我们再添加另外一个卷积层这里用的是1*1卷积,假设有400个1*1的过滤器,在这400个过滤器的作下,下一层层的维度是1*1*400,它其实就是上个网络中的这一全连接层,最后经由1*1过滤器的处理得到一个softmax激活值,通过卷积网络我们最终得到这个1*1*4的输出层,而不是4个数字。

        以上就是用卷积层代替全连接层的过程,结果这几个单元集变成了1*1*400和1*1*4的维度。

        如何通过卷积实现窗口对象检测算法?

        假设向滑动窗口卷积网络输入14*14*3的图片,神经网络最后的输出层即softmax单元的输出,是1*1*4,测试集图片是16*16*3,现在给这个输入图片加上黄色条块。在最初的滑动窗口算法中,你会把这片蓝色区域输入卷积网络,生成0或1分类,接着滑动窗口步幅为2个像素,向右滑动2个像素,将这个绿框区域输入给卷积网络,运行整个卷积网络得到另外一个标签0或1,继续将橘色区域输入给卷积网络,卷积后得到另一个标签,最后对右下方的紫色区域进行最后一次卷积操作,在这个16*16*3的小图像上滑动窗口,卷积网络运行了4次,于是输出了4个标签。结果发现这4次卷积操作中的很多计算都是重复的,滑动窗口的卷积应用,使得卷积网络在这4次操作过程中很多计算都是重复的。

         所以我们采用卷积层代替全连接层,不再按检测窗口输入图片,而是将整个图片一起输入到网络中,这样重复的部分会共享结果,不会重复运算。

        总结一下滑动窗口的实现过程,在图片上剪切出一块区域,假设它的大小是14*14,把它输入到卷积网络,继续输入下一块区域,大小依然是14*14,重复操作,直到某个区域识别到汽车。我们不用依靠连续的卷积操作来识别图片中的汽车,比如我们可以对大小为28*28的整张图片进行卷积操作,一次得到所有预测值,如果足够幸运,神经网络就可以识别出汽车的位置。

        它提高了整个算法的效率,不过这有一个缺点,就是边界框的位置可能不够准确

B站视频来源:【中英字幕】吴恩达深度学习课程第四课 — 卷积神经网络_哔哩哔哩_bilibili

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值