单发多框检测(SSD) 讨论区


#165

检查一下,是这个原因吗。Encounter sample with no valid label报错原因


#166

检查一下,是这个原因吗。https://discuss.gluon.ai/t/topic/8745


#167

如果我想在SSD网络的特征提取层使用VGG16,是否只是需要在VGG11的基础上改变conv_arch = ((2, 64), (2, 128), (3, 256), (3, 512),(3,512))就可以呢?如果不行,那该怎么实现呢?


#168


请问使用 image.ImageDetIter类 来读取.rec格式的图像文件时,如何像 dataiter对象一样 进行 transform_first 对RGB三个通道进行标准化呢,我发现教程中 SSD 训练和预测并没有对 RGB通道做归一化,而是直接用原始图像就开始训练了。


#170

请问一下@mli@szha,教程里面的FocalLoss为啥不需要写backward,这里是怎么实现更新权重的,谢谢。

class FocalLoss(gluon.loss.Loss):
    def __init__(self, axis=-1, alpha=0.25, gamma=2, batch_axis=0, **kwargs):
        super(FocalLoss, self).__init__(None, batch_axis, **kwargs)
        self._axis = axis
        self._alpha = alpha
        self._gamma = gamma

    def hybrid_forward(self, F, output, label):
        output = F.softmax(output)
        pj = output.pick(label, axis=self._axis, keepdims=True)
        loss = - self._alpha * ((1 - pj) ** self._gamma) * pj.log()
        return loss.mean(axis=self._batch_axis, exclude=True)

#171

这个问题您解决了吗


#172

請問,爲什麼要做通道歸一化呢,對紅外圖像是不是就不用做了


#173

我觉得做归一化的原因应该是让数值更稳定吧,让网络更容易训练


#174

在教程中。真实框和anchor都是除掉了图片宽高的,但是今天看gluoncv源码,发现并没有这个步骤,这是为啥呢


#175

请问SSD的源码在我机器上跑没有问题,但是总是跑不完,训练精度一个小时后远远超过了书上的数值,什么原因呢?


#176

不是机器的问题,我把书上源码搬到Google colab上运行是一样的慢(一个k80),一个epoch同样要运行约50分钟,书上的结果为什么五个epoch只需要大约12秒??


#177

MXNetError Traceback (most recent call last)
in
12 bbox_labels, bbox_masks, cls_labels = contrib.nd.MultiBoxTarget(
13 anchors, Y, cls_preds.transpose((0, 2, 1)))
—> 14 print(cls_labels)
15 # 根据类别和偏移量的预测和标注值计算损失函数。
16 l = calc_loss(cls_preds, cls_labels, bbox_preds, bbox_labels,

E:\anaconda\envs\mxnet\lib\site-packages\mxnet\ndarray\ndarray.py in repr(self)
187 “”“Returns a string representation of the array.”""
188 shape_info = ‘x’.join([’%d’ % x for x in self.shape])
–> 189 return ‘\n%s\n<%s %s @%s>’ % (str(self.asnumpy()),
190 self.class.name,
191 shape_info, self.context)

E:\anaconda\envs\mxnet\lib\site-packages\mxnet\ndarray\ndarray.py in asnumpy(self)
1874 self.handle,
1875 data.ctypes.data_as(ctypes.c_void_p),
-> 1876 ctypes.c_size_t(data.size)))
1877 return data
1878

E:\anaconda\envs\mxnet\lib\site-packages\mxnet\base.py in check_call(ret)
147 “”"
148 if ret != 0:
–> 149 raise MXNetError(py_str(_LIB.MXGetLastError()))
150
151

MXNetError: [21:59:43] C:/ci/libmxnet_1533399150922/work/src/operator/contrib/multibox_target.cu:359: Check failed: num_labels > 2 (1 vs. 2)
请问哪位大神遇到了这个问题,我用书上的源码跑的,出现这个报错,就是:
bbox_labels, bbox_masks, cls_labels = contrib.nd.MultiBoxTarget(anchors, Y, cls_preds.transpose((0, 2, 1)))
中的cls_labels报错了


#178

mxnet是哪个版本?
最好更新到environment里的版本:


#179

我也遇到 MultiBoxTarget 的问题了,mxnet 版本是 mxnet-cu92 1.3.1,查看了一下 1.3.1 的源码,就是
src/operator/contrib/multibox_target.cu:359
的确是有个 num_labels > 2 的判断;
换成最新的 mxnet_cu92-1.5.0b20190126 就没问题了,新的 mxnet 源码里也没有这句判断了。


#180

似乎发现一个小问题:cls_predictor(num_anchors, num_classes))和bbox_predictor(num_anchors)都需要输入参数num_anchors,教程里直接说每个中心点预测4个锚框,但是似乎程序里没有给出?


#181

有的,原来上面参数定义过了.num_anchors = len(sizes[0]) + len(ratios[0]) - 1
自己不仔细了


#182

按照教程中SSD的代码执行,因显存小, 把batchsize改为了16, 发现训练之后进行测试,anchor box的数量不够。 有一个皮卡丘没有anchor box框。 请问如何改进呢?


#183

使用教程上的代码进行训练,训练的时候现在acc很高,但是训练完成后,预测结果类别全是0即背景,epoch大概是2000,请问大概是什么原因,与那位训练完成,并可以正确预测的么?但是使用gluon cv的代码则没有问题,仔细对比了实现的每个细节也没有发现是哪里不对


#184

为什么感受野为6x6呢,请问是怎么计算的?


#185

改用CPU来训练,内存大些, batchsize改为256之后, 所有皮卡丘都框住了。 但还是不明确是什么原因,请大牛帮忙解释一下。 辛苦啦!