SimJeg / FC-DenseNet

Fully Convolutional DenseNets for semantic segmentation.
486 stars 145 forks source link

Number m in Table 2 in your paper #19

Open schnyox opened 7 years ago

schnyox commented 7 years ago

From the code I get that a short skip connection that concatenates the input to output of the bottleneck block. Shouldn't this connection exist in DenseNet.jpg? Also, can you explain why this block is called Bottleneck and what is it's purpose?

Best, Nikola.

schnyox commented 7 years ago

I changed the title of the Issue after compiling your model on my PC and running model.summary()

The number of feature maps after each block after the transition down blocks, i.e. the bottleneck block and the transition up blocks are n x k, where n, k are number of layers in a dense block and growth rate, respectively. The inputs to these blocks at the last layer in block are 880, 1072 etc. like the original values in the paper.

grypes commented 7 years ago

Am I wrong? I just calculated the number of 'm' in the paper. below DB(12 layers)+TD, *m* =656 , I think DB(15 layers), *m* = 15*16+656 =896, not 880. I also read your code. It seems to be 896 too. Could you help me have a check? Thanks a lot.

grypes commented 7 years ago

oh sorry. I get that. see https://github.com/SimJeg/FC-DenseNet#about-the-m-number-in-the-paper

decrispell commented 6 years ago

Has this issue been resolved? I still don't see how the (corrected) m values of the bottleneck and decoder blocks are arrived at. From my understanding of Table 2 in the paper, each decoder block is composed of a TransitionUp followed by a DenseBlock. According to Figure 1 (and verified in the code), the channels from the skip connections are concatenated before the DenseBlock, not after, so the m values should just be the number of channels output by each DenseBlock, which is just 16*num_layers. What am I missing?

decrispell commented 6 years ago

I believe I now understand the issue, so I'll leave my thoughts here in case anyone else suffers the same confusion. Anyone with a better understanding of the work, please feel free to confirm / correct me.

The "m" value in Table 2 describes the dimension of the "stack" variable in FC-DenseNet.py. However, for all of the upsampling blocks except the last (as pointed out in issue #9) that variable is unused for anything further. So, the actual dimension of the information flowing to the next block is indeed just the output of the Dense Block (block_to_upsample in the code), which is of dimension num_layers*growth_rate.