π [Update] log item, format value on wandb
Browse files- yolo/tools/loss_functions.py +3 -3
- yolo/tools/solver.py +15 -3
yolo/tools/loss_functions.py
CHANGED
@@ -125,9 +125,9 @@ class DualLoss:
|
|
125 |
main_iou, main_dfl, main_cls = self.loss(main_predicts, targets)
|
126 |
|
127 |
loss_dict = {
|
128 |
-
"BoxLoss": self.iou_rate * (aux_iou * self.aux_rate + main_iou),
|
129 |
-
"DFLoss": self.dfl_rate * (aux_dfl * self.aux_rate + main_dfl),
|
130 |
-
"BCELoss": self.cls_rate * (aux_cls * self.aux_rate + main_cls),
|
131 |
}
|
132 |
loss_sum = sum(list(loss_dict.values())) / len(loss_dict)
|
133 |
return loss_sum, loss_dict
|
|
|
125 |
main_iou, main_dfl, main_cls = self.loss(main_predicts, targets)
|
126 |
|
127 |
loss_dict = {
|
128 |
+
"Loss/BoxLoss": self.iou_rate * (aux_iou * self.aux_rate + main_iou),
|
129 |
+
"Loss/DFLoss": self.dfl_rate * (aux_dfl * self.aux_rate + main_dfl),
|
130 |
+
"Loss/BCELoss": self.cls_rate * (aux_cls * self.aux_rate + main_cls),
|
131 |
}
|
132 |
loss_sum = sum(list(loss_dict.values())) / len(loss_dict)
|
133 |
return loss_sum, loss_dict
|
yolo/tools/solver.py
CHANGED
@@ -49,9 +49,10 @@ class ValidateModel(BaseModel):
|
|
49 |
"map": batch_metrics["map"],
|
50 |
"map_50": batch_metrics["map_50"],
|
51 |
},
|
52 |
-
on_step=True,
|
53 |
prog_bar=True,
|
54 |
logger=False,
|
|
|
|
|
55 |
batch_size=batch_size,
|
56 |
)
|
57 |
return predicts
|
@@ -59,7 +60,11 @@ class ValidateModel(BaseModel):
|
|
59 |
def on_validation_epoch_end(self):
|
60 |
epoch_metrics = self.metric.compute()
|
61 |
del epoch_metrics["classes"]
|
62 |
-
self.log_dict(
|
|
|
|
|
|
|
|
|
63 |
|
64 |
|
65 |
class TrainModel(ValidateModel):
|
@@ -80,7 +85,14 @@ class TrainModel(ValidateModel):
|
|
80 |
aux_predicts = self.vec2box(predicts["AUX"])
|
81 |
main_predicts = self.vec2box(predicts["Main"])
|
82 |
loss, loss_item = self.loss_fn(aux_predicts, main_predicts, targets)
|
83 |
-
self.log_dict(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
return loss * batch_size
|
85 |
|
86 |
def configure_optimizers(self):
|
|
|
49 |
"map": batch_metrics["map"],
|
50 |
"map_50": batch_metrics["map_50"],
|
51 |
},
|
|
|
52 |
prog_bar=True,
|
53 |
logger=False,
|
54 |
+
on_step=True,
|
55 |
+
sync_dist=True,
|
56 |
batch_size=batch_size,
|
57 |
)
|
58 |
return predicts
|
|
|
60 |
def on_validation_epoch_end(self):
|
61 |
epoch_metrics = self.metric.compute()
|
62 |
del epoch_metrics["classes"]
|
63 |
+
self.log_dict(
|
64 |
+
{"PyCOCO/AP @ .5:.95": epoch_metrics["map"], "PyCOCO/AP @ .5": epoch_metrics["map_50"]}, rank_zero_only=True
|
65 |
+
)
|
66 |
+
self.log_dict(epoch_metrics, prog_bar=True, logger=True, on_epoch=True, rank_zero_only=True)
|
67 |
+
self.metric.reset()
|
68 |
|
69 |
|
70 |
class TrainModel(ValidateModel):
|
|
|
85 |
aux_predicts = self.vec2box(predicts["AUX"])
|
86 |
main_predicts = self.vec2box(predicts["Main"])
|
87 |
loss, loss_item = self.loss_fn(aux_predicts, main_predicts, targets)
|
88 |
+
self.log_dict(
|
89 |
+
loss_item,
|
90 |
+
prog_bar=True,
|
91 |
+
logger=True,
|
92 |
+
on_epoch=True,
|
93 |
+
batch_size=batch_size,
|
94 |
+
rank_zero_only=True,
|
95 |
+
)
|
96 |
return loss * batch_size
|
97 |
|
98 |
def configure_optimizers(self):
|