zoukankan      html  css  js  c++  java
  • ICCV 2015 B-CNN细粒度分类

    哈哈,好久没写博客了。。。。最近懒癌发作~~主要是因为心情不太好啊,做什么事情都不太顺心,不过已经过去啦。最近一直忙着公司的项目,想用这个网络,就给大家带来了的这篇文章。可能比较老,来自ICCV 2015的一篇关于细粒度分类的文章,文章:B-CNN。由于文章比较简单,我就不介绍的那么详细啦~

    科普下:粗粒度与细粒度分类

    粗粒度:比如猫狗猪这种差别比较大的。

    细粒度:狗类别中,识别是什么品种的狗,这就是细粒度分类。

    B-CNN框架:

    从图中可以看出,其实就是两个卷积神经网络对图像进行特征抽取,然后用一个bilinear pooling 函数把CNN 抽取的两组特征进行结合,最后代入softmax层进行分类。

    在一般的深度学习模型中,都是由一个神经网络构成的,在这里,有两个神经网络 A

    和 B,输入图像首先被调整到448 × 448大小,然后用这两个网络分别提取该幅图像的特征,在图像的每一个位置,两个网络分别生成1 × 512大小的特征,在每一个位置 对两个网络提取的特征A(l)和B(l)做外积操作:

    得到这个位置的双线性特征,大小为512X512。

    接下来采用求和池化方式,将所有位置得到的双线性特征进行求和作为本幅

    图像的特征:

    它的大小也为 512 × 512,接下来对该双线性特征进行如下计算:

    得到它的带符号平方根,并进行正则化:

    以此作为该幅图片的特征,并用来分类。这个双线性特征比单个卷积网络提

    取的特征在分类中获得更好的效果,两个卷积神经网络的作用在这里分别相当于

    区域检测和特征提取。因此,它一方面避免了传统方法中大量的人工标记操作,

    同时也获得了较高的准确率。

    在训练过程中,两个网络可以同时被训练,并且整个训练过程是端到端的,

    已知 X的损失函数梯度为,A和 B 的损失函数梯度由链式法则求得:

    这里的网络 A和网络 B 可以是两个对称的网络,也可以是两个不对称的网

    络.文中分别用了VGG-16 和VGG-19两种网络。

    关于为什么用向量的外积,我想是吸收两组CNN 抽取的特征,然后进项特征融合,其实在这一步,我们可以做就很多东西。我现在发的有一篇文章,也有类似的思想。

     

    首先说说内外积的几何意义

    向量ab的内积是长度为 |a||b|cosθ的标量,是向量a在向量b方向上的分量

    而向量ab的外积是长度为 |a||b|sinθ、并垂直于向量ab的矢量

    这就说明向量ab的外积和向量ab是不在同一平面内,或者说,向量ab在平面上被我们看到了的话,外积我们是看不到的,他应该是一个旋转过程,

    所以说,外积在物理上(我感觉运动学会用到)可以说是,对运动产生作用的。

     

  • 相关阅读:
    Gym 100418J Lucky tickets(数位dp)
    UI各种小控件的用法
    安卓系统底层C语言算法之測试參数是几个long型的算法
    Chisel Tutorial(一)——Chisel介绍
    java中super的作用
    flume採集数据导入elasticsearch 配置
    UML中的序列图(时序图)
    简单的Queue
    UNIX环境高级编程(5):文件I/O(1)
    四、基于HTTPS协议的12306抢票软件设计与实现--水平DNS并发查询分享
  • 原文地址:https://www.cnblogs.com/xiaohuahua108/p/9199392.html
Copyright © 2011-2022 走看看