我使用了弱监督的细分学习,但这是行不通的。
class SegmentaionConvolutions(nn.Module):
def __init__(self):
super(SegmentaionConvolutions,self).__init__()
self.conv_seg = nn.Conv2d(512,2,kernel_size=1)
self.softmax = nn.Softmax(dim=2)
self.pool= nn.MaxPool2d(kernel_size=2, stride=2, ceil_mode=True) # retains size because stride is 1 (and padding)
self.init_conv2d()
def init_conv2d(self):
"""
Initialize convolution parameters.
"""
for c in self.children():
if isinstance(c, nn.Conv2d):
nn.init.xavier_uniform_(c.weight)
nn.init.constant_(c.bias, 0.)
def forward(self,conv5_feats):
pooled_feats = self.pool(self.pool(conv5_feats))
out = self.conv_seg(pooled_feats)
return out
这是我添加到SSD中的代码。 转换5层后,其输入来自SSD的功能。 我合并了10 * 8的输入要素,因为弱训练效果不好。 另外,此类输出通过互熵损失来评估。 我应该如何改进此模型。 请给我建议。