UberNet : Training a ‘Universal’ Convolutional Neural Network for Low-, Mid-, and High-Level Vision using Diverse Datasets and Limited Memory
这是一篇很有意思的文章,将CNN的许多用途一起结合训练一个网络进行,实现CNN的:
boundary detection (b) normal estimation (c) saliency estimation (d) semantic segmentation (e) semantic part segmentation (f) semantic boundary detection and (g) proposal generation and object detection
这是一篇很有意思的文章,将CNN的许多用途一起结合训练一个网络进行,实现CNN的:
boundary detection (b) normal estimation (c) saliency estimation (d) semantic segmentation (e) semantic part segmentation (f) semantic boundary detection and (g) proposal generation and object detection
多功能的结合对于工业界应该有很深的意义,一个网络十分方便。
对于不同任务下网络的结合,主要需要解决的问题有以下2个:
(1)不同数据集上的训练
(2)内存大小的限制
对于问题(1):
不同的数据集上同时训练时的统一,作者设计了如下图的网络,即为UberNet,结合多标签任务:图中最左是一个连续的降采样操作得到的影像金字塔,金字塔中每个图像都连接着独立的一个CNN网络。图中,C指的是VGG网络,结合B批处理的正则化操作,来得到特征,并得到对应的task的回应E。所有的回应E结合最终完成task-special 的操作。
对于问题(2)内存的问题:
作者修改了一系列内存的储存方式来进行内存问题的优化。下图为单个任务的Vanilla backpropagation方法:黑色箭头代表memory查找操作,黄色箭头代表储存操作,蓝色箭头代表前后向传播。在前向传播中,每层在bottom box中储存激活信号,而在后向传播中,激活信号与梯度信息(top boxes)通过loss层进行递归的计算。
而相对地,下图为单个任务下的low-memory backpropagation方法示意图:首先储存memory中的激活值的子集,然后在小网络上提供‘anchor’points的运行的反向传播算法,主要减少同时在内存中储存的激活与梯度信息。
对于多任务下,作者也进行了一系列改进,下图分别为多任务下的Vanilla backpropagation及作者修改的结果:
最终的部分结果展示: