从alexnet到resnet,初探深度学习算法玩摄影
编辑:叶琰
简介
今天说的是初探,那就是说,目的是为了让大家先有一个比较直观的感受,主要集中在有监督算法上。
总体来说,就是指在底层特征的提取上,利用了从Alexnet开始,到最新的模型的方法,来替换掉早期的大量手动设计的特征。
主要从两大内容上让大家有一个直观的感受
1.从简单网络到复杂网络的升级,将分别举一个alexnet,googlenet,resnet的代表性paper。
2.说说网络结构的设计思路以及发展,以及主要使用的loss function。
下面的内容,如果有听不太懂的地方,就回到之前的一系列文章,去对着读。
1.1 Alexnet (2015年)
这篇文章研究的是一个二分类的问题。
是比较早期的应用,采用了一个双通道的网络,虽然不是直接的alexnet的网络,但是基本上也没有什么差异了,网络结构如下。
从输入上,也是典型的两个子网络的操作,分别输入global view和local view。local view是多个random crop,可以学习到多个局部响应。
从上面的网络结构和输入你就可以想到,这基本上也就是拿来做做分类了。实际上也是如此,上文就是拿来做二分类,以及图像风格的分类,特征直接抽取全连接层的特征。
1.2 GoogleNet【2】 (2017年)
这也是研究一个二分类的问题。
这篇文章,相对于上面的alexnet文章,更加直接,直接采用了googlenet v1的1/3部分,其中共3个inception module,前两个用于提取local feature,最后一个用于提取global feature。
最后,直接concatenate local feature与global feature层,输入softmax做分类。
也是直接粗暴的应用,不过通过观察feature map的响应特点,他们总结高质量图和低质量图的规律,并认为前者会有更多的激活。
1.3 ResNet (2017年)
前面的两个,都是研究分类问题。但是到后来,美学质量的问题,已经转换为回归问题之后,文【3】就利用上了最新的resnet,一股脑研究了分数的分布特性。
网络结构本身,没什么变化。就是几个卷积+全连接层,但是因为为了适应不同的输入尺度,消除由于resize,crop等造成的精度损失,采用了自适应的spp layer(adaptive spatial pyramid pooling ),同时添加了语义分类信息作为弱监督,也提出了huber loss,与通用的回归问题loss,euclidnean loss做了比较。
取得了当下最好的结果,AVA上分类超过了80%,这也是当下state-of-out的水平了。
2.1 DMA-Net【4】(2015年)
前面说的有些网络【2-3】,都是single column,也就是只有一个通道的输入。
实际上,从网络结构上来看,可以分为两大类。即single column与multi column,下面就说这个multi column。
DMA是其中一个代表。它的网络结构也很简单,4个卷积层和3个全连接层,每次送进去多个随机crop的图。
随后,通过各种pool的组合(min,max,median,averaging),将各个patch的cnn特征进行组合,输出到softmax,随机进行分类。
怎么组合这些patch?由于不是直接采用全组合,所以文章说贡献了两个network layer,即statistics layer,与sorting layer。Statistics layer,学习到的是与顺序无关的,而sorting layer则是与顺序有关的。
虽然上面看起来是multi column,但实际上是共享权重的,所以严格说来,不是真正的multi column网络。
2.2 MNA-Net (2016年)
【5】是典型的mutli-column了。
总共有5个columns。由于采用了sppnet,所以可以接受任意大小的图片输入,通过改变kernel尺寸的大小,可以学习到多尺度的信息。
3.1 multi-task loss【6】(2016年)
这部分,主要是说说多任务的loss,在其中的应用。
由于美学的评价标准,跟图像的主体是什么,以及图像的摄影风格,是有很大的关系的,所以style loss,content loss的应用,在后来是很广泛的。
【6】是直接使用alexnet,将输出的1000的fc8,变成了2分类的美学layer,和29类的semantic layer,也就是直接融合了两类loss,但是有个很大的隐患,loss的平衡也就是相对权重,是一个非常需要经验的问题。
rapid【1】中就加入了style loss做正则,相对于【6】来说,训练会更加容易。【7】更是猛,直接3分类。将任务拆解成3个,object,scene,texture。
Scene的输入:wrapped global image,
Object:wrapped global image与检测到的salient region。
Texture:16个随机cropped patchs,当然了,训练的细节,我们可以在课程中详细讲述。
重点说说AADB【8】的文章,他们的网络训练的时候是成对训练的。核心思想是要整合语义级别的内容,与visual content属性。学习到的是一个相对的分数。
学习分为3个阶段:
利用euclidean loss,学习美学分数。
加入attribute,然后进行分类。
加入class content branch,继续学习。
多阶段的学习,是能够收敛的保障。
就这么多,看完大家应该已经有个大致的印象了。