多尺度问题解法小结

[TOC]
  网络的图像输入,应该不拘泥于尺寸大小的才对,这是个朴素的想法。

1)为对抗多尺度问题

  卷积操作对输入尺寸是无必须要求的,任意尺寸均可。
  但是,如果加上全连接层,该层必须要求是固定尺寸的输入,那么问题就来了。怎么才能解决这种类似的问题呢。

1.1) 将全连接去掉

  对最后的feature-map做global average pooling,直接加softmax。这篇文章里NIN,就是这么干的。

1.2)将变尺寸划为固定尺寸

  在feature-map后,加入spatial pyramid pooling layer,将不固定尺寸变为固定尺寸。SPPnet, Faster R-CNN都是这样的思路。

1.3) 全部使用卷积层

  比如FCN(Fully Conv Network),多尺寸输入完全不成问题。FCN,主要应用在图像语义切分上。
  上面所说的这3种方法,都是在网络过程中解决多尺度问题,将变换尺寸translate为不变尺寸。

1.4) 借助anchor在输出上做多尺度。

  给输出提前约定尺寸的候选范围集,分别在不同尺寸上给出输出结果。

1.5) 多尺度filter,在卷积核上做多尺度。

  上面这2种方法,是在输出上做尺寸的约束,当时不改变输出的结构,将不变尺寸translate为变换尺寸。

1.6) 输入多尺寸放缩图像。

  高分辨率的风格迁移,有对输入做pyramid process(高斯低通滤波),得到多个尺度的输入图像。
  上面的这1种方法,则是在输入上直接做文章,直接是训练多个具有共享参数的网络了。

2)联合训练

  关于训练,有各种各样的方法。比较直接的,是单目标的训练任务,比如直接做分类,直接做回归,没有其他的任务需求。但是当有复杂任务目标时,就需要相应更为配套的训练方法。

2.1)多个单一任务,共享模型,交叉训练。

  Faster R-CNN,因为涉及到了图像位置匹配和目标类型识别,该方法用一个base网络做两个用途,一方面用做位置预测,一方面用做类型识别。怎么联合训练呢?两个任务交叉训练,共享交集网络的参数。两个训练任务仍然是单一的。

2.2)多个任务,共享模型,改进loss训练。

  网络完全共享,改进了输出层为平行输出,并对loss分层。根据数据,决定分流到哪个输出流,并对应该loss训练网络。Yolo9000就是这么搞的。

2.3)为了联合而联合。

未完待续。

你可能感兴趣的:(技术博客)