mxnet-yolo
mxnet-yolo copied to clipboard
about Fine-Grained Features
Hi, @zhreshold ,
we know from the paper that yolo v2 adds a passthrough layer to bring features from the earlier layer at 26x26 resolution to get the fine-grained features. However, I find these codes when i read the file 'symbol_darkent19_yolo.py' in this respository,
conv5_5 = bone.get_internals()["conv5_5_output"] conv5_6 = mx.sym.stack_neighbor(data=conv5_5, kernel=(2, 2), name='stack_downsample') concat = mx.sym.Concat(*[conv5_6, conv7_2], dim=1)
I think these codes just concate the conv5_5 output with the activation_output of stage 7, right? Why not just concate the activation outputs form stage 5 and 7, like the mode the source code of yolo v2 used in darknet? Do you compare the performances of the different connection type? if yes, tell me the result please.
Wow, thanks for the finding. I've double checked with darknet, the concatenated layers are conv5_5(+1 conv) and stage 7, as in yolo-voc.cfg. Seems like I missed an extra conv layer. But how did you get the "stage 5 and 7"? Did I missed something?
I know you mean the conv layer with 64 filters. But what confused me is that, the output concatenated should be the result of activation operator after conv5_5 not just the output of convolution layer according to yolo-voc.cfg.
[convolutional] batch_normalize=1 filters=512 size=3 stride=1 pad=1 activation=leaky
I think this is a section consisting of a conv layer, a batchnorm layer and a activation layer, the concatenate output seems to be the output of activation layer not just the conv layer?
Good point! I guess I made a mistake cause I am completely disordered by in-place operation like activations. I will try to test the performance by fixing these errors. Thanks @ZongweiZhou1
I've changed the conv to activation output, still got very similar results. I need more spare time to debug it.
In this problem , can I solve it from changing code below ?
source:
conv5_5 = bone.get_internals()["conv5_5_output"]
become:
conv5_5 = bone.get_internals()["leaky_conv5_5_output"]
@liumusicforever Exactly
@zhreshold thank you so mush !!
@zhreshold
I want to lean this repository in detail these days. And have a lot of questions to consult. Forexampe, I'm confused by
if num_update < self.burn_in:
lr = self.base_lr * pow(max(1, num_update) / float(self.burn_in), self.burn_in_power)
return lr
In the __call__()function of class train.lr_scheduler.BurnInMultiFactorScheduler.
What does this snippet mean? warmup?
I would be very grateful if you can give me some advice.
@ZongweiZhou1 It's a warm up from very small learning rate to normal in burn_in period.