yolov5/utils
yxNONG b3ceffb513
Add QFocalLoss() (#1482)
* Update loss.py

implement the quality focal loss which is a more general case of focal loss
more detail in https://arxiv.org/abs/2006.04388 

In the obj loss (or the case cls loss with label smooth), the targets is no long barely be 0 or 1 (can be 0.7), in this case, the normal focal loss is not work accurately
quality focal loss in behave the same as focal loss when the target is equal to 0 or 1, and work accurately when targets in (0, 1)

example:

targets:
tensor([[0.6225, 0.0000, 0.0000],
        [0.9000, 0.0000, 0.0000],
        [1.0000, 0.0000, 0.0000]])
___________________________
pred_prob:
tensor([[0.6225, 0.2689, 0.1192],
        [0.7773, 0.5000, 0.2227],
        [0.8176, 0.8808, 0.1978]])
____________________________
focal_loss
tensor([[0.0937, 0.0328, 0.0039],
        [0.0166, 0.1838, 0.0199],
        [0.0039, 1.3186, 0.0145]])
______________
qfocal_loss
tensor([[7.5373e-08, 3.2768e-02, 3.9179e-03],
        [4.8601e-03, 1.8380e-01, 1.9857e-02],
        [3.9233e-03, 1.3186e+00, 1.4545e-02]])
 
we can see that targets[0][0] = 0.6255 is almost the same as pred_prob[0][0] = 0.6225, 
the targets[1][0] = 0.9 is greater then pred_prob[1][0] = 0.7773 by 0.1227
however, the focal loss[0][0] = 0.0937 larger then focal loss[1][0] = 0.0166 (which against the purpose of focal loss)

for the quality focal loss , it implement the case of targets not equal to 0 or 1

* Update loss.py
2020-11-25 19:32:27 +01:00
..
google_app_engine adding the configuration to deploy yolov5 in in app engine (#964) 2020-09-22 11:48:44 -07:00
__init__.py initial commit 2020-05-29 17:04:54 -07:00
activations.py Utils reorganization (#1392) 2020-11-14 11:50:32 +01:00
autoanchor.py Remove redundant downloads mirror (#1461) 2020-11-20 13:10:56 +01:00
datasets.py Update caching (#1496) 2020-11-24 16:25:21 +01:00
general.py Cat apriori to autolabels (#1484) 2020-11-23 13:38:47 +01:00
google_utils.py Sync train and test iou_thresh (#1465) 2020-11-21 12:38:35 +01:00
loss.py Add QFocalLoss() (#1482) 2020-11-25 19:32:27 +01:00
metrics.py Prevent PR plotting (#1489) 2020-11-24 00:46:01 +01:00
plots.py Update labels.png with rectangles fix (#1432) 2020-11-18 12:27:30 +01:00
torch_utils.py FLOPS computation device bug fix (#1447) 2020-11-19 12:56:20 +01:00