Skip to content

Commit 7ed7314

Browse files
committed
add annotations
1 parent 92f4457 commit 7ed7314

File tree

3 files changed

+21
-14
lines changed

3 files changed

+21
-14
lines changed

nets/yolo_training.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,8 @@ def forward(self, l, input, targets=None):
196196
loss_conf = torch.mean(self.BCELoss(conf, tobj))
197197

198198
loss += loss_conf * self.balance[l] * self.obj_ratio
199+
# if n != 0:
200+
# print(loss_loc * self.box_ratio, loss_cls * self.cls_ratio, loss_conf * self.balance[l] * self.obj_ratio)
199201
return loss
200202

201203
def get_near_points(self, x, y, i, j):

train.py

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -91,23 +91,28 @@
9191
mosaic = True
9292
label_smoothing = 0
9393

94-
#------------------------------------------------------------------#
95-
# 训练分为两个阶段,分别是冻结阶段和解冻阶段。
96-
# 设置冻结阶段是为了满足机器性能不足的同学的训练需求
97-
# 如果机器较好可以不进行冻结训练,即当Freeze_Train=False
98-
#
99-
# 显存不足与数据集大小无关,提示显存不足请调小batch_size。
100-
# 受到BatchNorm层影响,batch_size最小为2,不能为1。
101-
#
102-
# 如:当Init_Epoch = 60、Freeze_Epoch = 50、UnFreeze_Epoch = 100时
103-
# 会跳过冻结阶段,直接从60代开始,并调整对应的学习率。
104-
#------------------------------------------------------------------#
94+
#----------------------------------------------------------------------------------------------------------------------------#
95+
# 训练分为两个阶段,分别是冻结阶段和解冻阶段。设置冻结阶段是为了满足机器性能不足的同学的训练需求。
96+
# 冻结训练需要的显存较小,显卡非常差的情况下,可设置Freeze_Epoch等于UnFreeze_Epoch,此时仅仅进行冻结训练。
97+
#
98+
# 在此提供若干参数设置建议,各位训练者根据自己的需求进行灵活调整:
99+
# (一)从整个模型的预训练权重开始训练:
100+
# Init_Epoch = 0,Freeze_Epoch = 50,UnFreeze_Epoch = 100,Freeze_Train = True(默认参数)
101+
# Init_Epoch = 0,UnFreeze_Epoch = 100,Freeze_Train = False(不冻结训练)
102+
# 其中:UnFreeze_Epoch可以在100-300之间调整。optimizer_type = 'sgd',Init_lr = 1e-2。
103+
# (二)batch_size的设置:
104+
# 在显卡能够接受的范围内,以大为好。显存不足与数据集大小无关,提示显存不足(OOM或者CUDA out of memory)请调小batch_size。
105+
# 受到BatchNorm层影响,batch_size最小为2,不能为1。
106+
# 正常情况下Freeze_batch_size建议为Unfreeze_batch_size的1-2倍。不建议设置的差距过大,因为关系到学习率的自动调整。
107+
#----------------------------------------------------------------------------------------------------------------------------#
105108
#------------------------------------------------------------------#
106109
# 冻结阶段训练参数
107110
# 此时模型的主干被冻结了,特征提取网络不发生改变
108111
# 占用的显存较小,仅对网络进行微调
109-
# Init_Epoch 模型当前开始的训练世代
110-
# 可以大于Freeze_Epoch(断点续练时使用)
112+
# Init_Epoch 模型当前开始的训练世代,其值可以大于Freeze_Epoch,如设置:
113+
# Init_Epoch = 60、Freeze_Epoch = 50、UnFreeze_Epoch = 100
114+
# 会跳过冻结阶段,直接从60代开始,并调整对应的学习率。
115+
# (断点续练时使用)
111116
# Freeze_Epoch 模型冻结训练的Freeze_Epoch
112117
# (当Freeze_Train=False时失效)
113118
# Freeze_batch_size 模型冻结训练的batch_size

utils/dataloader.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def get_random_data(self, annotation_line, input_shape, jitter=.3, hue=.1, sat=0
106106
#------------------------------------------#
107107
# 对图像进行缩放并且进行长和宽的扭曲
108108
#------------------------------------------#
109-
new_ar = w/h * self.rand(1-jitter,1+jitter) / self.rand(1-jitter,1+jitter)
109+
new_ar = iw/ih * self.rand(1-jitter,1+jitter) / self.rand(1-jitter,1+jitter)
110110
scale = self.rand(.25, 2)
111111
if new_ar < 1:
112112
nh = int(scale*h)

0 commit comments

Comments
 (0)