CVPR2020部分文章略读

本部分是笔者对CVPR2020部分感兴趣的文章的略读,大致包括图像分类、检测以及分割三个主题,由于是略读,因此不会对文章进行细致的分析,而只会大体阐述实现的方法。

图像分类:

1、GhostNet: More Features from Cheap Operations

研究问题:

CNN中随着卷积的进行,通道数越来越多,网络的性能就依赖于这些高度冗余的特征图,以往的卷积方式计算较为复杂,因此本文希望找到一种计算更为简单的替代方式来产生这些冗余的特征图。

实现方式:

CVPR2020部分文章略读_第1张图片
CVPR2020部分文章略读_第2张图片

首先分析基本结构,ghost模块分为两步操作,第一步先使用卷积操作,减少了通道,为的是减少运算量,第二步较为巧妙,对每个通道的特征图都进行了卷积操作,生成个特征图,个特征图共生成个,再堆叠上原来的特征图,通道数为,总共生成的通道数为,达到了跟普通卷积一样的结果,但没有使用逐点卷积,大大减少了计算量。

网络的设计借鉴了MobileNet网络,也是一种倒置残差结构,值得注意的是,文章也引入了一个宽度因子来控制通道的层数,用来减少运算量。总的来说,性能要超出MobileNet网络与ShuffleNet网络。

2、Self-training with Noisy Student improves ImageNet classificatio

研究问题:

利用自训练的方式,通过利用已标记的数据以及未标记的数据训练出一个强大的网络。

实现方式:

知识蒸馏是通过一个性能强大的teacher网络,训练出一个较小的student网络,性能可能略逊色于teacher网络,但复杂度大大减少。本文与知识蒸馏的逆过程相类似,示意图如下:

CVPR2020部分文章略读_第3张图片

首先利用已标记好的数据训练一个teacher网络,之后将未标记的数据送进teacher网络中,产生伪标签,再找到一个起码性能起码不逊色与teacher网络的student网络,将已标记数据与带有伪标签的数据混合进行训练,训练好了之后再将student网络当作teacher网络重复这个过程。需要注意的是,本文的一大创新点就是在student网络训练的过程中引入了噪声,使得训出来的网络更加鲁棒,更加强大;噪声又分为输入噪声与模型噪声,输入噪声通过随机增强得到,可以鼓励模型预测一些更难的图像,而模型噪声通过dropout与随机深度函数得到,可以迫使网络进行类似于集成学习的学习。此外,本文还使用了数据过滤来过滤那些teacher模型表现不好的图像,数据平衡来确保各个类别的图片数量大致相等。


其他:

1、Designing Network Design Spaces

研究问题:通过搜索设计空间,找到设计神经网络的一套通用的法则

实现方式:

神经网络架构搜索是为了某个任务搜索到最佳的神经网络架构,而本文则是想搜索到通用的神经网络架构。设计空间是非常庞大的,因此本文使用的方法是采样,并通过错误经验分布来比较性能,不断的缩小范围,最终找到答案。所采用的网络结构如图所示:

CVPR2020部分文章略读_第4张图片
CVPR2020部分文章略读_第5张图片

主要区别在body网络的设计,主要有以下四个参数:块的数目,通道的宽度,瓶颈层比率跟组宽度(即组卷积用的组数),经过测试,发现共享瓶颈层比率以及组宽度最佳,并且,块的数目以及通道的宽度应该逐渐增加。这里使用了线性函数建模了block深度与宽度的关系:这里是初始化的宽度,是斜率,具体可见论文。为了量化,引入额外的变量,有:

因此,这里主要搜索,通过实验有以下结论可供参考:

1)网络不是越深越好,20个block左右较为合适

2)瓶颈层比率设为1最佳

3)宽度因子设为2.5为宜

4)其余参数最好随着网络增大而增大

5)速度用activations衡量最好(即所有卷积层输出tensor大小)

2、Circle Loss: A Unified Perspective of Pair Similarity Optimization

研究问题:无论是分类还是回归,我们所要求的无非就是类内相似度足够大,类间相似度足够小,文章基于这个问题,提出了一种基于对的统一的相似性优化方法。

实现方式:

类内相似性用来表示,类间相似性用来表示,所以需要最小化,直接优化会出现两个问题,一个是类内相似性与类间相似性的比重一样,这样基于梯度进行优化的幅度是一样的,较为的低效,另一个是收敛状态模糊,虽然差值一样但与具体的值可能不一样,解决的方法是对两个分布赋予一个权重,即,

首先给出统一的损失函数公式:

\displaylines{
  {{\cal L}_{uni}} = \log [1 + \sum\limits_{i = 1}^K {\sum\limits_{j = 1}^L {\exp (\gamma (s_n^j - s_p^i + m))} } ] \cr 
   = \log [1 + \sum\limits_{j = 1}^L {\exp (\gamma (s_n^j + m))\sum\limits_{i = 1}^K {\exp (\gamma ( - s_p^i))} } ] \cr}

此公式可以降级成其他损失函数,这里不展开。将上式换成circle loss的形式,则:

\begin{gathered}
  {\mathcal{L}_{circle}} = \log [1 + \sum\limits_{i = 1}^K {\sum\limits_{j = 1}^L {\exp (\gamma (\alpha _n^js_n^j - \alpha _p^is_p^i))} } ] \\ 
   = \log [1 + \sum\limits_{j = 1}^L {\exp (\gamma (\alpha _n^js_n^j))\sum\limits_{i = 1}^K {\exp ( - \gamma \alpha _p^is_p^i)} } ] \\ 
\end{gathered}

规定,无论是类间相似度还是类内相似度,如果偏离最优值越大,那么惩罚力度就越大,因此有:

其中+代表从0截断,代表取值非负。另外,与非对称,因此各自定义余量,有:

考虑简单的二分类情况,令为1,有:

带入权重则有:

显然,其决策边界是一个圆,通过设置

有,即优化目标为类间相似度为0,类内相似度为1。换言之,我们期望。

至此,circle loss中只有两个超参数,即与

你可能感兴趣的:(CVPR2020部分文章略读)