Deep learning Caffe棋盘工艺品,如何修复?
我使用的是Caffe,我使用的反褶积层如下:Deep learning Caffe棋盘工艺品,如何修复?,deep-learning,caffe,Deep Learning,Caffe,我使用的是Caffe,我使用的反褶积层如下: layer { name: "name" type: "Deconvolution" bottom: "bottom top: "top" param { lr_mult: 0 decay_mult: 0 } convolution_param { num_output: 256 bias_term: false pad: 0 kernel_size: 2 group
layer {
name: "name"
type: "Deconvolution"
bottom: "bottom
top: "top"
param {
lr_mult: 0
decay_mult: 0
}
convolution_param {
num_output: 256
bias_term: false
pad: 0
kernel_size: 2
group: 256
stride: 2
weight_filler {
type: "bilinear"
}
}
}
当完成培训并验证我的网络时,我会收到奇怪的棋盘艺术品。我找不到任何关于如何在Caffe中修复此问题的信息,因此我在这里询问是否有人对此有解决方案?此问题不是Caffe特有的,它的发生是因为反褶积。提供了一个非常好的分析和解决方案。有几种简单的方法可以防止此问题:
- 用一个步幅
- 减少在网络中使用反褶积,就像只在最后一层一样
- 在应用反褶积(本文中提到的调整卷积大小)之前,对特征图进行上采样
- 答案很简单:
layer {
name: "name"
type: "Deconvolution"
bottom: "bottom
top: "top"
param {
lr_mult: 0
decay_mult: 0
}
convolution_param {
num_output: 256
bias_term: false
pad: 1
kernel_size: 4 # <-- changing kernel size fixed the problem.
group: 256
stride: 2
weight_filler {
type: "bilinear"
}
}
}
层{
姓名:“姓名”
类型:“反褶积”
底部:“底部
顶部:“顶部”
param{
lr_mult:0
衰减倍数:0
}
卷积参数{
输出数量:256
偏倚术语:假
pad:1
kernel_size:4#为了通过某些已知因子执行双线性上采样,仅使用双线性权重填充创建反褶积层是不够的。您还需要正确设置步长、填充和内核大小。
如果我们把整个过程想象成绘画,那么内核就是我们的画笔,步幅描述了我们触摸画布的频率。选择太小的内核,步幅太大,输出结果看起来就像我们把颜料的微小斑点分开。太大的内核会导致过度模糊。当内核没有初始化时,会出现棋盘格正确-目前(),caffe包含一个双线性过滤器生成的错误,对于某些大小,它实际上不是双线性的(在PR中建议的修复)
中给出了选择正确尺寸/步幅/填充的公式。好的,你的第一步在caffe中很容易完成,但是第二步对我来说不可能,第三步在caffe中也不可能,你能帮我完成第三步吗?实际上,使用一步步幅,也不是很容易!!在我的情况下,你会怎么做?@thigi你觉得呢意思是这不是很容易?首先,在你的文章中,他们谈到了重叠,但在我的实现中:stride:2内核大小:2没有重叠。其次,你能给我一个例子,使用stride:1我可以用来替换我的代码(->我认为这是不可能的)对于第三个要点,我的问题是:这在caffe中可能吗?是的,因为我使用了:kernel\u size:2和stride:2,我的问题仍然没有得到回答,因为我认为你的答案只适用于重叠的内核,这对我来说不是。这里的答案是什么?你刚刚更改了kernel\u size
?你能详细说明一下吗是的,这是答案!这是正确的答案,你还需要什么?@ShaiSee在我的答案之上,你可以找到一个链接@Shai@Shai这一层不会“学习”"我说得对吗?它只是做双线性上采样?如果你的lr\u mult
和decation\u mult
为零,权重不会更新。不,不是。我知道你的答案是你如何解决你的特定问题-将比例提高2倍-但我的答案提供了关于这一问题的一般性解释,而不仅仅是一个原始代码片段。是的,这是真的,你想把这两种解决方案结合起来吗?