【问题标题】:How to fine tune an FCN-32s for interactive object segmentation如何微调 FCN-32 以进行交互式对象分割
【发布时间】:2017-03-08 14:21:56
【问题描述】:

我正在尝试在 CVPR 论文 (Deep Interactive Object Selection) 中实现建议的模型,其中数据集包含每个输入样本的 5 个通道:

1.红色

2.蓝色

3.绿色

4.与积极点击相关的欧几里得距离图

5.与负面点击相关的欧几里得距离图(如下):

为此,我应该使用“对象二进制掩码”作为标签微调 FCN-32s 网络:

如您所见,在第一个 conv 层中,我有 2 个额外的通道,因此我进行了网络手术,将前 3 个通道的预训练参数和 2 个额外的 Xavier 初始化。

对于 FCN 架构的其余部分,我有以下问题:

  1. 我应该冻结“fc6”之前的所有层(第一个转换层除外)吗?如果是,如何学习第一个 conv 的额外通道?在训练过程中,梯度是否足够强以到达第一个 conv 层?

  2. “fc6”的内核大小应该是多少?我应该保留7吗?我在“Caffe net_surgery”笔记本中看到它取决于最后一层(“pool5”)的输出大小。

  3. 主要问题是“score_fr”和“upcore”层的输出数量,因为我没有做类分割(20类和背景使用21),我应该如何改变它? 2呢? (一个用于对象,另一个用于非对象(背景)区域)?

  4. 我应该将“crop”图层的“offset”更改为 32 以获得中心作物吗?

  5. 如果改变每一层,对它们来说最好的初始化策略是什么? “升级”是“双线性”,其余的是“Xavier”?

  6. 我应该将我的二进制标签矩阵值转换为以零为中心 ({-0.5,0.5}) 的状态,还是可以将它们与 {0,1} 中的值一起使用?

任何有用的想法将不胜感激。

PS: 我使用欧几里得损失,而我使用“1”作为“score_fr”和“upcore”层的输出数量。如果我为此使用 2,我想它应该是 softmax。

【问题讨论】:

    标签: neural-network deep-learning caffe image-segmentation conv-neural-network


    【解决方案1】:

    我可以回答你的一些问题。

    1. 梯度将到达第一层,因此即使冻结其他层也应该可以学习权重。

    2. num_output 更改为 2 并进行微调。你应该得到一个很好的输出。

    3. 我认为您需要对每个选项进行试验,看看准确性如何。

    4. 您可以使用值 0,1。

    【讨论】:

    • 感谢您的重播,目前,我正在使用欧几里得损失,所以我想也许我的分数层应该只有一个输出(网络预测是我的损失的第一个输入层),经过一些训练迭代后,我检查了结果,似乎网络将学习我所期望的。但是损失函数有点压倒性。据我了解,它是小批量所有样本的归一化欧几里得距离。由于我不能使用超过 8 的批量大小,因此损失不稳定性似乎很自然。
    • 你应该使用softmax loss。它旨在用于分类问题,但并不是真正的像素级分类。 ;)
    • 在这种情况下,我应该使用两个标签,一个用于对象,另一个与第一个相反的标签用于背景?
    • 不需要。 Softmax 损失应该会自动为您完成。看FCN训练网。他们使用 softmax 损失层。
    • 是的,我以前见过,但我想也许我需要再输一次,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多