mxnet-yolo icon indicating copy to clipboard operation
mxnet-yolo copied to clipboard

about Fine-Grained Features

Open ZongweiZhou1 opened this issue 8 years ago • 9 comments

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.

ZongweiZhou1 avatar Sep 09 '17 06:09 ZongweiZhou1

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?

zhreshold avatar Sep 10 '17 18:09 zhreshold

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?

ZongweiZhou1 avatar Sep 11 '17 01:09 ZongweiZhou1

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

zhreshold avatar Sep 11 '17 01:09 zhreshold

I've changed the conv to activation output, still got very similar results. I need more spare time to debug it.

zhreshold avatar Sep 14 '17 21:09 zhreshold

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 avatar Sep 18 '17 11:09 liumusicforever

@liumusicforever Exactly

zhreshold avatar Sep 18 '17 17:09 zhreshold

@zhreshold thank you so mush !!

liumusicforever avatar Sep 19 '17 02:09 liumusicforever

@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 avatar Sep 20 '17 11:09 ZongweiZhou1

@ZongweiZhou1 It's a warm up from very small learning rate to normal in burn_in period.

zhreshold avatar Sep 22 '17 21:09 zhreshold