@@ -75,15 +75,6 @@ def fit_ont_epoch(net,epoch,epoch_size,epoch_size_val,gen,genval,Epoch):
7575 print ('Saving state, iter:' , str (epoch + 1 ))
7676 torch .save (model .state_dict (), 'logs/Epoch%d-Total_Loss%.4f-Val_Loss%.4f.pth' % ((epoch + 1 ),total_loss / (epoch_size + 1 ),val_toal_loss / (epoch_size_val + 1 )))
7777
78- '''
79- 一些建议的参数设置:
80- VGG:SGD优化器,冻结时学习率1e-3,解冻时学习率1e-4
81- nets.rpn中ProposalCreator的n_train_post_nms=2000;
82- utils.utils中ProposalTargetCreator的pos_ratio=0.25;
83- RESNET50:Adam优化器,冻结时学习率1e-4,解冻时学习率1e-5
84- nets.rpn中ProposalCreator的n_train_post_nms=300;
85- utils.utils中ProposalTargetCreator的pos_ratio=0.5;
86- '''
8778if __name__ == "__main__" :
8879 # 参数初始化
8980 annotation_path = '2007_train.txt'
@@ -118,22 +109,12 @@ def fit_ont_epoch(net,epoch,epoch_size,epoch_size_val,gen,genval,Epoch):
118109 num_val = int (len (lines )* val_split )
119110 num_train = len (lines ) - num_val
120111
121- '''
122- 一些建议的参数设置:
123- VGG:SGD优化器,冻结时学习率1e-3,解冻时学习率1e-4
124- nets.rpn中ProposalCreator的n_train_post_nms=2000;
125- utils.utils中ProposalTargetCreator的pos_ratio=0.25;
126- RESNET50:Adam优化器,冻结时学习率1e-4,解冻时学习率1e-5
127- nets.rpn中ProposalCreator的n_train_post_nms=300;
128- utils.utils中ProposalTargetCreator的pos_ratio=0.5;
129- '''
130112 if True :
131113 lr = 1e-4
132114 Init_Epoch = 0
133- Freeze_Epoch = 25
115+ Freeze_Epoch = 50
134116
135117 optimizer = optim .Adam (model .parameters (),lr ,weight_decay = 5e-4 )
136- # optimizer = optim.SGD(model.parameters(),lr,weight_decay=5e-4,momentum=0.9)
137118 lr_scheduler = optim .lr_scheduler .StepLR (optimizer ,step_size = 1 ,gamma = 0.95 )
138119
139120 if Use_Data_Loader :
@@ -158,18 +139,18 @@ def fit_ont_epoch(net,epoch,epoch_size,epoch_size_val,gen,genval,Epoch):
158139 # ------------------------------------#
159140 # 由于batch==1所以冻结bn层
160141 # ------------------------------------#
161- model = model . eval ()
142+ model . freeze_bn ()
162143
163144 for epoch in range (Init_Epoch ,Freeze_Epoch ):
164145 fit_ont_epoch (model ,epoch ,epoch_size ,epoch_size_val ,gen ,gen_val ,Freeze_Epoch )
165146 lr_scheduler .step ()
166147
167148 if True :
168149 lr = 1e-5
169- Freeze_Epoch = 25
170- Unfreeze_Epoch = 50
150+ Freeze_Epoch = 50
151+ Unfreeze_Epoch = 100
152+
171153 optimizer = optim .Adam (model .parameters (),lr ,weight_decay = 5e-4 )
172- # optimizer = optim.SGD(model.parameters(),lr,weight_decay=5e-4,momentum=0.9)
173154 lr_scheduler = optim .lr_scheduler .StepLR (optimizer ,step_size = 1 ,gamma = 0.95 )
174155
175156 if Use_Data_Loader :
@@ -194,7 +175,7 @@ def fit_ont_epoch(net,epoch,epoch_size,epoch_size_val,gen,genval,Epoch):
194175 # ------------------------------------#
195176 # 由于batch==1所以冻结bn层
196177 # ------------------------------------#
197- model = model . eval ()
178+ model . freeze_bn ()
198179
199180 for epoch in range (Freeze_Epoch ,Unfreeze_Epoch ):
200181 fit_ont_epoch (model ,epoch ,epoch_size ,epoch_size_val ,gen ,gen_val ,Unfreeze_Epoch )
0 commit comments