Open mariochr opened 6 years ago
Hi,
I see that you are trying to train the deconv50. I did not use this network in the final results sent to the MediaEval and reported in the paper. I am sorry for this, but there is a mismatch related to the networks' name between the code and paper. Thank you for raising this!
In fact, I did not use any network starting with the name 'deconv' in this implementation you are using because I could not achieve as good performance as with other networks. Hence, these networks should not be included in this code. The deconv networks reported in the paper (and used in the MediaEval Satellites) are actually the SegNet-based architectures (implemented in the code you are currently using with name 'SegNet'). You may match the architecture from the paper and the code, if you want. I have updated the code to better reflect the names of the architecture allowing an easier match between the code and paper.
Aside this, in general, I used the following parameters:
learningRate= 0.01 weightDecay= 0.005 batchSize= 100 niter= 200000 cropSize= 25 strideCrop= 10
For instance, using the above configuration, I achieved the following result in the validation set using deconvnet_1: ---- Iter 200000 -- Time 05:31:59.126174 -- Validation: Overall Accuracy= 0.940296 Normalized Accuracy= 0.930775 IoU (TP / (TP + FP + FN))= 0.839800 Confusion Matrix= [[32546911 1282646] [ 1815006 16238562]]
And using deconvnet_2: ---- Iter 200000 -- Time 10:03:10.553048 -- Validation: Overall Accuracy= 0.943408 Normalized Accuracy= 0.936319 IoU (TP / (TP + FP + FN))= 0.848800 Confusion Matrix= [[32463946 1365611] [ 1570567 16483001]]
Hope this can help you.
Yeah it works now much better. :+1: I finally got a result thanks
But I think one mistake is still there. In your code you have a for loop with the following elements.
nets = ['segNet', 'segnetICPR', 'dilatedGRSL'] # ['segNet', 'segnetICPR', 'dilatedICPR', 'dilatedGRSL']
But I think you have to loop over this elements:
nets = ['deconvnet_1', 'deconvnet_2', 'dilatedICPR', 'dilatedGRSL']
You have the following if clauses in the training methods:
# CONVNET
if net_type == 'deconvnet_1':
upscore = deconvnet_1(x, keep_prob, is_training, weight_decay, crop_size, channels)
elif net_type == 'deconvnet_2':
upscore = deconvnet_2(x, keep_prob, is_training, weight_decay, crop_size, channels)
elif net_type == 'dilatedICPR':
upscore = dilated_convnet_1(x, keep_prob, is_training, weight_decay, crop_size, channels)
elif net_type == 'dilatedGRSL':
upscore = dilated_convnet_2(x, keep_prob, is_training, weight_decay, crop_size, channels)
else:
print(BatchColors.FAIL + 'Network type not found: ' + net_type + BatchColors.ENDC)
return
Because of the 3 nets in your line only one would be trained while the others won't be trained at all.
Hello !
Thanks for sharing your work ! I've read your recently published paper and I'm really intrested in reproducing what you have done in this work. However, I'm unable to find the dataset you used. I'm wondering where I can find it. It would be great if you can instruct me how to get it.
Thanks in advance !
Sorry for late answer. @mariochr thank you for pointing this out. I will fix it as soon as I can. @aferjani the dataset employed in this work was part of the 2017 Multimedia Satellite Task. You can send email to the organizers in order to have access to the dataset.
Hi
First thanks for the code. I wanted to try it out myself but I got stuck. When I train it and let it validate in the end it will classify all in the same class... it doesn't learn anything at all.
I'm not sure but probably the parameters are wrong? What did you use?
I used for one:
input_data_path= D:/Master/merged/ output_path(for model, images, etc)= D:/Master/Output/FDSI/ former_model_path(only for testing purpose)= learningRate= .0003 weight_decay= .5 batch_size= 100 niter= 5000 crop_size= 10 strideCrop= 10 networkType (deconv50|deconvICPR|deconvTuia|segnet25|segnetICPR)= deconv50 specific_event[0 to all]= 0 process[training|validate|testing]= training