alexgkendall / SegNet-Tutorial

Files for a tutorial to train SegNet for road scenes using the CamVid dataset
http://mi.eng.cam.ac.uk/projects/segnet/tutorial.html
847 stars 517 forks source link

How many iter number to get a good enough result on CamVid dataset? #89

Open sj-li opened 7 years ago

sj-li commented 7 years ago

Well, I follow the tutorial and fine-tune the Segnet on VGG16 model 91000 times, but the result is not very good.

The train loss(iter about 91000) is :

I0317 13:56:23.532151  6295 solver.cpp:214] Iteration 900, loss = 0.03369
I0317 13:56:23.532177  6295 solver.cpp:229]     Train net output #0: accuracy = 0.911472
I0317 13:56:23.532186  6295 solver.cpp:229]     Train net output #1: loss = 0.03369 (* 1 = 0.03369 loss)
I0317 13:56:23.532189  6295 solver.cpp:229]     Train net output #2: per_class_accuracy = 0.966494
I0317 13:56:23.532203  6295 solver.cpp:229]     Train net output #3: per_class_accuracy = 0.935624
I0317 13:56:23.532207  6295 solver.cpp:229]     Train net output #4: per_class_accuracy = 0.974202
I0317 13:56:23.532210  6295 solver.cpp:229]     Train net output #5: per_class_accuracy = 0.98653
I0317 13:56:23.532224  6295 solver.cpp:229]     Train net output #6: per_class_accuracy = 0.972631
I0317 13:56:23.532228  6295 solver.cpp:229]     Train net output #7: per_class_accuracy = 0.924186
I0317 13:56:23.532230  6295 solver.cpp:229]     Train net output #8: per_class_accuracy = 0.992469
I0317 13:56:23.532243  6295 solver.cpp:229]     Train net output #9: per_class_accuracy = 0.972149
I0317 13:56:23.532245  6295 solver.cpp:229]     Train net output #10: per_class_accuracy = 0.971311
I0317 13:56:23.532249  6295 solver.cpp:229]     Train net output #11: per_class_accuracy = 0.992593
I0317 13:56:23.532253  6295 solver.cpp:229]     Train net output #12: per_class_accuracy = 1
I0317 13:56:23.532258  6295 solver.cpp:486] Iteration 900, lr = 0.001
I0317 13:56:45.740921  6295 solver.cpp:214] Iteration 920, loss = 0.0377614
I0317 13:56:45.741063  6295 solver.cpp:229]     Train net output #0: accuracy = 0.900756
I0317 13:56:45.741077  6295 solver.cpp:229]     Train net output #1: loss = 0.0377614 (* 1 = 0.0377614 loss)
I0317 13:56:45.741094  6295 solver.cpp:229]     Train net output #2: per_class_accuracy = 0.978263
I0317 13:56:45.741101  6295 solver.cpp:229]     Train net output #3: per_class_accuracy = 0.944558
I0317 13:56:45.741106  6295 solver.cpp:229]     Train net output #4: per_class_accuracy = 0.947357
I0317 13:56:45.741113  6295 solver.cpp:229]     Train net output #5: per_class_accuracy = 0.975293
I0317 13:56:45.741132  6295 solver.cpp:229]     Train net output #6: per_class_accuracy = 0.981129
I0317 13:56:45.741153  6295 solver.cpp:229]     Train net output #7: per_class_accuracy = 0.958768
I0317 13:56:45.741158  6295 solver.cpp:229]     Train net output #8: per_class_accuracy = 0.993664
I0317 13:56:45.741175  6295 solver.cpp:229]     Train net output #9: per_class_accuracy = 0.989151
I0317 13:56:45.741180  6295 solver.cpp:229]     Train net output #10: per_class_accuracy = 0.986485
I0317 13:56:45.741196  6295 solver.cpp:229]     Train net output #11: per_class_accuracy = 0.991918
I0317 13:56:45.741201  6295 solver.cpp:229]     Train net output #12: per_class_accuracy = 0.997599
I0317 13:56:45.741217  6295 solver.cpp:486] Iteration 920, lr = 0.001
I0317 13:57:07.946753  6295 solver.cpp:214] Iteration 940, loss = 0.0262951
I0317 13:57:07.946779  6295 solver.cpp:229]     Train net output #0: accuracy = 0.928922
I0317 13:57:07.946786  6295 solver.cpp:229]     Train net output #1: loss = 0.0262951 (* 1 = 0.0262951 loss)
I0317 13:57:07.946791  6295 solver.cpp:229]     Train net output #2: per_class_accuracy = 0.941757
I0317 13:57:07.946805  6295 solver.cpp:229]     Train net output #3: per_class_accuracy = 0.92891
I0317 13:57:07.946807  6295 solver.cpp:229]     Train net output #4: per_class_accuracy = 0.982162
I0317 13:57:07.946811  6295 solver.cpp:229]     Train net output #5: per_class_accuracy = 0.988171
I0317 13:57:07.946815  6295 solver.cpp:229]     Train net output #6: per_class_accuracy = 0.987485
I0317 13:57:07.946817  6295 solver.cpp:229]     Train net output #7: per_class_accuracy = 0.963508
I0317 13:57:07.946820  6295 solver.cpp:229]     Train net output #8: per_class_accuracy = 0.98771
I0317 13:57:07.946832  6295 solver.cpp:229]     Train net output #9: per_class_accuracy = 0.995955
I0317 13:57:07.946835  6295 solver.cpp:229]     Train net output #10: per_class_accuracy = 0.990914
I0317 13:57:07.946838  6295 solver.cpp:229]     Train net output #11: per_class_accuracy = 0.985075
I0317 13:57:07.946841  6295 solver.cpp:229]     Train net output #12: per_class_accuracy = 0.996063

and the test result is : default

So how many times do you iter on CamVid to get a good enough result?

Thanks

isn4 commented 7 years ago

Hi @freedomabcd , SegNet converges after about 100 epochs: #24 The number of iterations you need before it converges depends on how big your batch sizes are and how many training images you have: http://stackoverflow.com/questions/4752626/epoch-vs-iteration-when-training-neural-networks However, SegNet's use of the terms "epoch" and "iteration" seem to diverge from the link I've just posted. Perhaps @alexgkendall can clear this up for us.