32 lines
1009 B
Markdown
32 lines
1009 B
Markdown
# Conventions
|
|
|
|
Please check the following conventions if you would like to modify MMDetection as your own project.
|
|
|
|
## Loss
|
|
|
|
In MMDetection, a `dict` containing losses and metrics will be returned by `model(**data)`.
|
|
|
|
For example, in bbox head,
|
|
|
|
```python
|
|
class BBoxHead(nn.Module):
|
|
...
|
|
def loss(self, ...):
|
|
losses = dict()
|
|
# classification loss
|
|
losses['loss_cls'] = self.loss_cls(...)
|
|
# classification accuracy
|
|
losses['acc'] = accuracy(...)
|
|
# bbox regression loss
|
|
losses['loss_bbox'] = self.loss_bbox(...)
|
|
return losses
|
|
```
|
|
|
|
`bbox_head.loss()` will be called during model forward.
|
|
The returned dict contains `'loss_bbox'`, `'loss_cls'`, `'acc'` .
|
|
Only `'loss_bbox'`, `'loss_cls'` will be used during back propagation,
|
|
`'acc'` will only be used as a metric to monitor training process.
|
|
|
|
By default, only values whose keys contain `'loss'` will be back propagated.
|
|
This behavior could be changed by modifying `BaseDetector.train_step()`.
|