dgenerate-ultralytics-headless 8.3.165__py3-none-any.whl → 8.3.166__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. {dgenerate_ultralytics_headless-8.3.165.dist-info → dgenerate_ultralytics_headless-8.3.166.dist-info}/METADATA +1 -1
  2. {dgenerate_ultralytics_headless-8.3.165.dist-info → dgenerate_ultralytics_headless-8.3.166.dist-info}/RECORD +42 -42
  3. ultralytics/__init__.py +1 -1
  4. ultralytics/cfg/datasets/Argoverse.yaml +1 -1
  5. ultralytics/cfg/datasets/DOTAv1.5.yaml +1 -1
  6. ultralytics/cfg/datasets/DOTAv1.yaml +1 -1
  7. ultralytics/cfg/datasets/GlobalWheat2020.yaml +1 -1
  8. ultralytics/cfg/datasets/HomeObjects-3K.yaml +1 -1
  9. ultralytics/cfg/datasets/ImageNet.yaml +1 -1
  10. ultralytics/cfg/datasets/Objects365.yaml +1 -1
  11. ultralytics/cfg/datasets/SKU-110K.yaml +4 -4
  12. ultralytics/cfg/datasets/VOC.yaml +3 -3
  13. ultralytics/cfg/datasets/VisDrone.yaml +37 -30
  14. ultralytics/cfg/datasets/african-wildlife.yaml +1 -1
  15. ultralytics/cfg/datasets/brain-tumor.yaml +1 -1
  16. ultralytics/cfg/datasets/carparts-seg.yaml +1 -1
  17. ultralytics/cfg/datasets/coco-pose.yaml +1 -1
  18. ultralytics/cfg/datasets/coco.yaml +1 -1
  19. ultralytics/cfg/datasets/coco128-seg.yaml +1 -1
  20. ultralytics/cfg/datasets/coco128.yaml +1 -1
  21. ultralytics/cfg/datasets/coco8-grayscale.yaml +1 -1
  22. ultralytics/cfg/datasets/coco8-multispectral.yaml +1 -1
  23. ultralytics/cfg/datasets/coco8-pose.yaml +1 -1
  24. ultralytics/cfg/datasets/coco8-seg.yaml +1 -1
  25. ultralytics/cfg/datasets/coco8.yaml +1 -1
  26. ultralytics/cfg/datasets/crack-seg.yaml +1 -1
  27. ultralytics/cfg/datasets/dog-pose.yaml +1 -1
  28. ultralytics/cfg/datasets/dota8-multispectral.yaml +1 -1
  29. ultralytics/cfg/datasets/dota8.yaml +1 -1
  30. ultralytics/cfg/datasets/hand-keypoints.yaml +1 -1
  31. ultralytics/cfg/datasets/lvis.yaml +1 -1
  32. ultralytics/cfg/datasets/medical-pills.yaml +1 -1
  33. ultralytics/cfg/datasets/open-images-v7.yaml +1 -1
  34. ultralytics/cfg/datasets/package-seg.yaml +1 -1
  35. ultralytics/cfg/datasets/signature.yaml +1 -1
  36. ultralytics/cfg/datasets/tiger-pose.yaml +1 -1
  37. ultralytics/cfg/datasets/xView.yaml +1 -1
  38. ultralytics/utils/metrics.py +4 -4
  39. {dgenerate_ultralytics_headless-8.3.165.dist-info → dgenerate_ultralytics_headless-8.3.166.dist-info}/WHEEL +0 -0
  40. {dgenerate_ultralytics_headless-8.3.165.dist-info → dgenerate_ultralytics_headless-8.3.166.dist-info}/entry_points.txt +0 -0
  41. {dgenerate_ultralytics_headless-8.3.165.dist-info → dgenerate_ultralytics_headless-8.3.166.dist-info}/licenses/LICENSE +0 -0
  42. {dgenerate_ultralytics_headless-8.3.165.dist-info → dgenerate_ultralytics_headless-8.3.166.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dgenerate-ultralytics-headless
3
- Version: 8.3.165
3
+ Version: 8.3.166
4
4
  Summary: Automatically built Ultralytics package with python-opencv-headless dependency instead of python-opencv
5
5
  Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
6
6
  Maintainer-email: Ultralytics <hello@ultralytics.com>
@@ -1,4 +1,4 @@
1
- dgenerate_ultralytics_headless-8.3.165.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
1
+ dgenerate_ultralytics_headless-8.3.166.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
2
2
  tests/__init__.py,sha256=b4KP5_q-2IO8Br8YHOSLYnn7IwZS81l_vfEF2YPa2lM,894
3
3
  tests/conftest.py,sha256=LXtQJcFNWPGuzauTGkiXgsvVC3llJKfg22WcmhRzuQc,2593
4
4
  tests/test_cli.py,sha256=Kpfxq_RlbKK1Z8xNScDUbre6GB7neZhXZAYGI1tiDS8,5660
@@ -8,45 +8,45 @@ tests/test_exports.py,sha256=HmMKOTCia9ZDC0VYc_EPmvBTM5LM5eeI1NF_pKjLpd8,9677
8
8
  tests/test_integrations.py,sha256=kl_AKmE_Qs1GB0_91iVwbzNxofm_hFTt0zzU6JF-pg4,6323
9
9
  tests/test_python.py,sha256=JJu-69IfuUf1dLK7Ko9elyPONiQ1yu7yhapMVIAt_KI,27907
10
10
  tests/test_solutions.py,sha256=tuf6n_fsI8KvSdJrnc-cqP2qYdiYqCWuVrx0z9dOz3Q,13213
11
- ultralytics/__init__.py,sha256=wIZPLrHc-rAxfQk9cYyc2VaweiqnHQTfua9fEcayfKc,730
11
+ ultralytics/__init__.py,sha256=yczpDVZI5DkFqH3t28doRPDuDqSjoNtwLkDWy4qLC3c,730
12
12
  ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
13
13
  ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
14
14
  ultralytics/cfg/__init__.py,sha256=VIpPHImhjb0XLJquGZrG_LBGZchtOtBSXR7HYTYV2GU,39602
15
15
  ultralytics/cfg/default.yaml,sha256=oFG6llJO-Py5H-cR9qs-7FieJamroDLwpbrkhmfROOM,8307
16
- ultralytics/cfg/datasets/Argoverse.yaml,sha256=0mm20vJBZxxLQtc_Z3Op6zUjmJkINLi70hO6aw67Lwc,3263
17
- ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=aT3VKgkVPTaaRRjnpHEhIbgANU-yt7VsFjAf5562wqA,1212
18
- ultralytics/cfg/datasets/DOTAv1.yaml,sha256=Ydf8_hRfZkaFMEkDKw3as0msVV4KPD1JuFjVMYDqIMQ,1182
19
- ultralytics/cfg/datasets/GlobalWheat2020.yaml,sha256=JP6zk5GR2fufGGFmOMr57EnRj7kKh9-fIuInkdmXMlU,2145
20
- ultralytics/cfg/datasets/HomeObjects-3K.yaml,sha256=kF9tsGZKoFf9D7IA4SyiZrRMavhOpBW1TM_xWiyK_Iw,935
21
- ultralytics/cfg/datasets/ImageNet.yaml,sha256=1zci8FWwbkFwNHlAkfDUnWyoOKrFvkEXz1VNpVAizBg,42531
22
- ultralytics/cfg/datasets/Objects365.yaml,sha256=EfhNwsYMqDCXc3kZfokvk4LYq1QZDKl-ZpfoecP7aOE,9355
23
- ultralytics/cfg/datasets/SKU-110K.yaml,sha256=OBUCCRFr6UXrp6LkXZSXA92dSYCc6MrDP_0rlmmLrvI,2546
24
- ultralytics/cfg/datasets/VOC.yaml,sha256=zVkCLoj6EbZm8gf8cOg8QbEIpsN6W6oreKmW2czTWeE,3788
25
- ultralytics/cfg/datasets/VisDrone.yaml,sha256=iIAxa9F3CxG18d3SFrwqM8_8HFzObxEM3yyhWaQ8saQ,3282
26
- ultralytics/cfg/datasets/african-wildlife.yaml,sha256=WGr59qBlu_MgxQeh1bACHU-vcLbrdKi7VYQ0_pZSgg0,916
27
- ultralytics/cfg/datasets/brain-tumor.yaml,sha256=3NJ7my1ZXse4nnvtf7tTxeLdFO6UhjZlLAbA6VrIsrU,801
28
- ultralytics/cfg/datasets/carparts-seg.yaml,sha256=f1m1eKGkDseizSMOHMRUmxf_Q9XAn4cztbAkeHfkyis,1254
29
- ultralytics/cfg/datasets/coco-pose.yaml,sha256=j_ynggAOE1aNpjG42QHMDTrYiPic8S0cnbNHXqmH7vY,1624
30
- ultralytics/cfg/datasets/coco.yaml,sha256=E5OlAwkJkzhRI2BFIPnUE0VnzdQNDFhv2czDVS582BQ,2607
31
- ultralytics/cfg/datasets/coco128-seg.yaml,sha256=04Pfr7RPgJM2hF_LpYYD2zIPqCyOJ2sWW23HO2qXoEI,1983
32
- ultralytics/cfg/datasets/coco128.yaml,sha256=hNHjxEq57lRpcNYuN3dX7ockjhgQu7SdiXepcGApjdU,1966
33
- ultralytics/cfg/datasets/coco8-grayscale.yaml,sha256=YfAJRbM2wWd37p1Jl7rOOoxiPH3rWRo5mddjUvJcFxg,1962
34
- ultralytics/cfg/datasets/coco8-multispectral.yaml,sha256=Kaca3kaq8-iwtBOdmvJaETI-JzDNyjKbk7SSUWGUnO4,2064
35
- ultralytics/cfg/datasets/coco8-pose.yaml,sha256=4S_0RSNNK_ccz1Qxp7wdO0-RjxwwhldTRpGahQnzIw8,1010
36
- ultralytics/cfg/datasets/coco8-seg.yaml,sha256=8V59_ASLtTg3jsXtV03opU4TRwyFy2fsNUUSR791cB0,1914
37
- ultralytics/cfg/datasets/coco8.yaml,sha256=aPefOD63vx1EJ4BhdeumSrYVoJIh2uMyIb6BTrEFk68,1889
38
- ultralytics/cfg/datasets/crack-seg.yaml,sha256=mfoOsT4opIR9JbQuRqfZvj0xe_SBKB_rcp-Hnz2kFCY,838
39
- ultralytics/cfg/datasets/dog-pose.yaml,sha256=6b1EXTZcbwOQAOSewICR26gslN410xl6zjS3pcgZjmc,909
40
- ultralytics/cfg/datasets/dota8-multispectral.yaml,sha256=AD9LGIV0FdnHLJCsczU06SIOIHYOygr5owb69bi-Nk0,1217
41
- ultralytics/cfg/datasets/dota8.yaml,sha256=cVmqA8SYVIY4Rp5y0oIPfw1Si2AZMPMDrFaV8ZRUnGI,1061
42
- ultralytics/cfg/datasets/hand-keypoints.yaml,sha256=Rt8G2UhSofoyZew1N_PWwBhiuwo_3T22k7lwmvM0980,991
43
- ultralytics/cfg/datasets/lvis.yaml,sha256=69E7zRFQxqdx6T7GhrLVR8XoZtfx4pwR7I3kobxmz2M,29704
44
- ultralytics/cfg/datasets/medical-pills.yaml,sha256=gc1LspJeskPAA23WHFNz_CracF6H5SIFqVT5Zh_lb14,793
45
- ultralytics/cfg/datasets/open-images-v7.yaml,sha256=GblFutr27lY3W2h9GyK8zUqq5svtF1EeEBoP5kbnd5o,12120
46
- ultralytics/cfg/datasets/package-seg.yaml,sha256=N7k3rofNVuTPSc5KMPRInsOKvWiQWelezRHvW1usemQ,850
47
- ultralytics/cfg/datasets/signature.yaml,sha256=iNp2q29yUzMVtTJWJhrC7stt7jFPC70SCzQFOtoIad4,775
48
- ultralytics/cfg/datasets/tiger-pose.yaml,sha256=numopgYHU42-3n5NvOWwouQ5KpRzwah4qcJortFUgyQ,927
49
- ultralytics/cfg/datasets/xView.yaml,sha256=46Z-TaZAXHXM85PoSWeI9mhpu__RB5TOtPAfo0cbAFM,5341
16
+ ultralytics/cfg/datasets/Argoverse.yaml,sha256=4SGaJio9JFUkrscHJTPnH_QSbYm48Wbk8EFwl39zntc,3262
17
+ ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=VZ_KKFX0H2YvlFVJ8JHcLWYBZ2xiQ6Z-ROSTiKWpS7c,1211
18
+ ultralytics/cfg/datasets/DOTAv1.yaml,sha256=JrDuYcQ0JU9lJlCA-dCkMNko_jaj6MAVGHjsfjeZ_u0,1181
19
+ ultralytics/cfg/datasets/GlobalWheat2020.yaml,sha256=dnr_loeYSE6Eo_f7V1yubILsMRBMRm1ozyC5r7uT-iY,2144
20
+ ultralytics/cfg/datasets/HomeObjects-3K.yaml,sha256=xEtSqEad-rtfGuIrERjjhdISggmPlvaX-315ZzKz50I,934
21
+ ultralytics/cfg/datasets/ImageNet.yaml,sha256=GvDWypLVG_H3H67Ai8IC1pvK6fwcTtF5FRhzO1OXXDU,42530
22
+ ultralytics/cfg/datasets/Objects365.yaml,sha256=vLzbT3xgpLR-bHhrHOiYyzYvDIniRdevgSyPetm8QHk,9354
23
+ ultralytics/cfg/datasets/SKU-110K.yaml,sha256=a52le1-JQ2YH6b1WLMUxVz7RkZ36YsmXgWyw0z3q9nQ,2542
24
+ ultralytics/cfg/datasets/VOC.yaml,sha256=GfJkYxN6uAiBTHOsR57L0UDi5NE9vH59A15EROrp0DU,3785
25
+ ultralytics/cfg/datasets/VisDrone.yaml,sha256=NujUSnR6gpXYdcvgg9nxmSZjPjcC9MdZ_YzMipvnuK8,3615
26
+ ultralytics/cfg/datasets/african-wildlife.yaml,sha256=SuloMp9WAZBigGC8az-VLACsFhTM76_O29yhTvUqdnU,915
27
+ ultralytics/cfg/datasets/brain-tumor.yaml,sha256=qrxPO_t9wxbn2kHFwP3vGTzSWj2ELTLelUwYL3_b6nc,800
28
+ ultralytics/cfg/datasets/carparts-seg.yaml,sha256=A4e9hM1unTY2jjZIXGiKSarF6R-Ad9R99t57OgRJ37w,1253
29
+ ultralytics/cfg/datasets/coco-pose.yaml,sha256=UYEY90XjHxTEYsUMXZXXaxzxs31zRun-PLTMRo1i334,1623
30
+ ultralytics/cfg/datasets/coco.yaml,sha256=iptVWzO1gLRPs76Mrs1Sp4yjYAR4f3AYeoUwP0r4UKw,2606
31
+ ultralytics/cfg/datasets/coco128-seg.yaml,sha256=knBS2enqHzQj5R5frU4nJdxKsFFBhq8TQ1G1JNiaz9s,1982
32
+ ultralytics/cfg/datasets/coco128.yaml,sha256=ok_dzaBUzSd0DWfe531GT_uYTEoF5mIQcgoMHZyIVIA,1965
33
+ ultralytics/cfg/datasets/coco8-grayscale.yaml,sha256=8v6G6mOzZHQNdQM1YwdTBW_lsWWkLRnAimwZBHKtJg8,1961
34
+ ultralytics/cfg/datasets/coco8-multispectral.yaml,sha256=nlU4W0d8rl1cVChthOk0NImhVDCm0voY3FrZs2D0lY0,2063
35
+ ultralytics/cfg/datasets/coco8-pose.yaml,sha256=GfSONSl-Oh4QErto91E_ws3im9ZTEYmDMaPOaSLLdV8,1009
36
+ ultralytics/cfg/datasets/coco8-seg.yaml,sha256=Ez42ZE6xHlj8lcjtMBJJP2Y460q2BuiwRfk090XnBgE,1913
37
+ ultralytics/cfg/datasets/coco8.yaml,sha256=tzrDY1KW82AHsgpCxte_yPkgMIIpNY6Pb4F46TDPxkk,1888
38
+ ultralytics/cfg/datasets/crack-seg.yaml,sha256=fqvSIq1fRXO55V_g2T92hcYAVoKBHZsSZQR7CokoPUI,837
39
+ ultralytics/cfg/datasets/dog-pose.yaml,sha256=sRU1JDtEC4nLVf2vkn7lxbp4ILWNcgE-ok96rxZv2lc,908
40
+ ultralytics/cfg/datasets/dota8-multispectral.yaml,sha256=2lMBi1Q3_pc0auK00yX80oF7oUMo0bUlwjkOrp33hvs,1216
41
+ ultralytics/cfg/datasets/dota8.yaml,sha256=5n4h_4zdrtUSkmH5DHJ-JLPvfiATcieIkgP3NeOP5nI,1060
42
+ ultralytics/cfg/datasets/hand-keypoints.yaml,sha256=6JF2wwrfAfaVb5M_yLmXyv7iIFXtAt91FqS-Q3kJda0,990
43
+ ultralytics/cfg/datasets/lvis.yaml,sha256=nEQgUdSdBcTYW3LzdK2ba3k8SK-p7NNgZ-SoCXf5vns,29703
44
+ ultralytics/cfg/datasets/medical-pills.yaml,sha256=RK7iQFpDDkUS6EsEGqlbFjoohi3cgSsUIbsk7UItyds,792
45
+ ultralytics/cfg/datasets/open-images-v7.yaml,sha256=wK9v3OAGdHORkFdqoBi0hS0fa1b74LLroAzUSWjxEqw,12119
46
+ ultralytics/cfg/datasets/package-seg.yaml,sha256=V4uyTDWWzgft24y9HJWuELKuZ5AndAHXbanxMI6T8GU,849
47
+ ultralytics/cfg/datasets/signature.yaml,sha256=gBvU3715gVxVAafI_yaYczGX3kfEfA4BttbiMkgOXNk,774
48
+ ultralytics/cfg/datasets/tiger-pose.yaml,sha256=Y_8htA4--6hmpqHTW-Ix4t9SdaWenSSyl_FUtI2A7n8,926
49
+ ultralytics/cfg/datasets/xView.yaml,sha256=NEEGaRTvTGafckJiFD1ltFyMl0b04zOyOFu_J-PN-Ik,5340
50
50
  ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml,sha256=1Ycp9qMrwpb8rq7cqht3Q-1gMN0R87U35nm2j_isdro,524
51
51
  ultralytics/cfg/models/11/yolo11-cls.yaml,sha256=17l5GdN-Vst4LvafsK2-q6Li9VX9UlUcT5ClCtikweE,1412
52
52
  ultralytics/cfg/models/11/yolo11-obb.yaml,sha256=3M_c06B-y8da4tunHVxQQ-iFUNLKUfofqCZTpnH5FEU,2034
@@ -247,7 +247,7 @@ ultralytics/utils/export.py,sha256=LK-wlTlyb_zIKtSvOmfmvR70RcUU9Ct9UBDt5wn9_rY,9
247
247
  ultralytics/utils/files.py,sha256=ZCbLGleiF0f-PqYfaxMFAWop88w7U1hpreHXl8b2ko0,8238
248
248
  ultralytics/utils/instance.py,sha256=dC83rHvQXciAED3rOiScFs3BOX9OI06Ey1mj9sjUKvs,19070
249
249
  ultralytics/utils/loss.py,sha256=fbOWc3Iu0QOJiWbi-mXWA9-1otTYlehtmUsI7os7ydM,39799
250
- ultralytics/utils/metrics.py,sha256=3nQsz3rAm8n65iqikRzU30Pd2x20FY60ZlWrCMv5ZYk,62225
250
+ ultralytics/utils/metrics.py,sha256=pazuzAjKFnfnhSVH_w6xEWB4vN7RpC8n7v3zj9LkFbs,62247
251
251
  ultralytics/utils/ops.py,sha256=8d60fbpntrexK3gPoLUS6mWAYGrtrQaQCOYyRJsCjuI,34521
252
252
  ultralytics/utils/patches.py,sha256=tBAsNo_RyoFLL9OAzVuJmuoDLUJIPuTMByBYyblGG1A,6517
253
253
  ultralytics/utils/plotting.py,sha256=LO-iR-k1UewV5vt4xXDUIirdmNEZdpfiQvLyIWqINPg,47171
@@ -266,8 +266,8 @@ ultralytics/utils/callbacks/neptune.py,sha256=j8pecmlcsM8FGzLKWoBw5xUsi5t8E5HuxY
266
266
  ultralytics/utils/callbacks/raytune.py,sha256=S6Bq16oQDQ8BQgnZzA0zJHGN_BBr8iAM_WtGoLiEcwg,1283
267
267
  ultralytics/utils/callbacks/tensorboard.py,sha256=MDPBW7aDes-66OE6YqKXXvqA_EocjzEMHWGM-8z9vUQ,5281
268
268
  ultralytics/utils/callbacks/wb.py,sha256=Tm_-aRr2CN32MJkY9tylpMBJkb007-MSRNSQ7rDJ5QU,7521
269
- dgenerate_ultralytics_headless-8.3.165.dist-info/METADATA,sha256=dn7pmXhiMT8r-izfeG1OBh52O3IndQ0KxlW5T1dL1oA,38672
270
- dgenerate_ultralytics_headless-8.3.165.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
271
- dgenerate_ultralytics_headless-8.3.165.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
272
- dgenerate_ultralytics_headless-8.3.165.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
273
- dgenerate_ultralytics_headless-8.3.165.dist-info/RECORD,,
269
+ dgenerate_ultralytics_headless-8.3.166.dist-info/METADATA,sha256=0pclHc5tA3osCgE9XTl4UXoTJHFQx3usp2Fr-8-FzcI,38672
270
+ dgenerate_ultralytics_headless-8.3.166.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
271
+ dgenerate_ultralytics_headless-8.3.166.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
272
+ dgenerate_ultralytics_headless-8.3.166.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
273
+ dgenerate_ultralytics_headless-8.3.166.dist-info/RECORD,,
ultralytics/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.165"
3
+ __version__ = "8.3.166"
4
4
 
5
5
  import os
6
6
 
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── Argoverse ← downloads here (31.5 GB)
9
+ # └── Argoverse ← downloads here (31.5 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: Argoverse # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── dota1.5 ← downloads here (2GB)
9
+ # └── dota1.5 ← downloads here (2GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: DOTAv1.5 # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── dota1 ← downloads here (2GB)
9
+ # └── dota1 ← downloads here (2GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: DOTAv1 # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── GlobalWheat2020 ← downloads here (7.0 GB)
9
+ # └── GlobalWheat2020 ← downloads here (7.0 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: GlobalWheat2020 # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── homeobjects-3K ← downloads here (390 MB)
9
+ # └── homeobjects-3K ← downloads here (390 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: homeobjects-3K # dataset root dir
@@ -7,7 +7,7 @@
7
7
  # parent
8
8
  # ├── ultralytics
9
9
  # └── datasets
10
- # └── imagenet ← downloads here (144 GB)
10
+ # └── imagenet ← downloads here (144 GB)
11
11
 
12
12
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
13
13
  path: imagenet # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── Objects365 ← downloads here (712 GB = 367G data + 345G zips)
9
+ # └── Objects365 ← downloads here (712 GB = 367G data + 345G zips)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: Objects365 # dataset root dir
@@ -6,13 +6,13 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── SKU-110K ← downloads here (13.6 GB)
9
+ # └── SKU-110K ← downloads here (13.6 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: SKU-110K # dataset root dir
13
- train: train.txt # train images (relative to 'path') 8219 images
14
- val: val.txt # val images (relative to 'path') 588 images
15
- test: test.txt # test images (optional) 2936 images
13
+ train: train.txt # train images (relative to 'path') 8219 images
14
+ val: val.txt # val images (relative to 'path') 588 images
15
+ test: test.txt # test images (optional) 2936 images
16
16
 
17
17
  # Classes
18
18
  names:
@@ -6,16 +6,16 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── VOC ← downloads here (2.8 GB)
9
+ # └── VOC ← downloads here (2.8 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: VOC
13
- train: # train images (relative to 'path') 16551 images
13
+ train: # train images (relative to 'path') 16551 images
14
14
  - images/train2012
15
15
  - images/train2007
16
16
  - images/val2012
17
17
  - images/val2007
18
- val: # val images (relative to 'path') 4952 images
18
+ val: # val images (relative to 'path') 4952 images
19
19
  - images/test2007
20
20
  test: # test images (optional)
21
21
  - images/test2007
@@ -6,13 +6,13 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── VisDrone ← downloads here (2.3 GB)
9
+ # └── VisDrone ← downloads here (2.3 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: VisDrone # dataset root dir
13
- train: VisDrone2019-DET-train/images # train images (relative to 'path') 6471 images
14
- val: VisDrone2019-DET-val/images # val images (relative to 'path') 548 images
15
- test: VisDrone2019-DET-test-dev/images # test images (optional) 1610 images
13
+ train: images/train # train images (relative to 'path') 6471 images
14
+ val: images/val # val images (relative to 'path') 548 images
15
+ test: images/test # test-dev images (optional) 1610 images
16
16
 
17
17
  # Classes
18
18
  names:
@@ -31,50 +31,57 @@ names:
31
31
  download: |
32
32
  import os
33
33
  from pathlib import Path
34
+ import shutil
34
35
 
35
36
  from ultralytics.utils.downloads import download
36
37
 
37
38
 
38
- def visdrone2yolo(dir):
39
- """Convert VisDrone annotations to YOLO format, creating label files with normalized bounding box coordinates."""
39
+ def visdrone2yolo(dir, split, source_name=None):
40
+ """Convert VisDrone annotations to YOLO format with images/{split} and labels/{split} structure."""
40
41
  from PIL import Image
41
42
  from tqdm import tqdm
42
43
 
43
- def convert_box(size, box):
44
- # Convert VisDrone box to YOLO xywh box
45
- dw = 1.0 / size[0]
46
- dh = 1.0 / size[1]
47
- return (box[0] + box[2] / 2) * dw, (box[1] + box[3] / 2) * dh, box[2] * dw, box[3] * dh
48
-
49
- (dir / "labels").mkdir(parents=True, exist_ok=True) # make labels directory
50
- pbar = tqdm((dir / "annotations").glob("*.txt"), desc=f"Converting {dir}")
51
- for f in pbar:
52
- img_size = Image.open((dir / "images" / f.name).with_suffix(".jpg")).size
44
+ source_dir = dir / (source_name or f"VisDrone2019-DET-{split}")
45
+ images_dir = dir / "images" / split
46
+ labels_dir = dir / "labels" / split
47
+ labels_dir.mkdir(parents=True, exist_ok=True)
48
+
49
+ # Move images to new structure
50
+ if (source_images_dir := source_dir / "images").exists():
51
+ images_dir.mkdir(parents=True, exist_ok=True)
52
+ for img in source_images_dir.glob("*.jpg"):
53
+ img.rename(images_dir / img.name)
54
+
55
+ for f in tqdm((source_dir / "annotations").glob("*.txt"), desc=f"Converting {split}"):
56
+ img_size = Image.open(images_dir / f.with_suffix(".jpg").name).size
57
+ dw, dh = 1.0 / img_size[0], 1.0 / img_size[1]
53
58
  lines = []
54
- with open(f, encoding="utf-8") as file: # read annotation.txt
59
+
60
+ with open(f, encoding="utf-8") as file:
55
61
  for row in [x.split(",") for x in file.read().strip().splitlines()]:
56
- if row[4] == "0": # VisDrone 'ignored regions' class 0
57
- continue
58
- cls = int(row[5]) - 1
59
- box = convert_box(img_size, tuple(map(int, row[:4])))
60
- lines.append(f"{cls} {' '.join(f'{x:.6f}' for x in box)}\n")
62
+ if row[4] != "0": # Skip ignored regions
63
+ x, y, w, h = map(int, row[:4])
64
+ cls = int(row[5]) - 1
65
+ # Convert to YOLO format
66
+ x_center, y_center = (x + w / 2) * dw, (y + h / 2) * dh
67
+ w_norm, h_norm = w * dw, h * dh
68
+ lines.append(f"{cls} {x_center:.6f} {y_center:.6f} {w_norm:.6f} {h_norm:.6f}\n")
61
69
 
62
- label_file = str(f).replace(f"{os.sep}annotations{os.sep}", f"{os.sep}labels{os.sep}")
63
- with open(label_file, "w", encoding="utf-8") as fl:
64
- fl.writelines(lines)
65
-
70
+ (labels_dir / f.name).write_text("".join(lines), encoding="utf-8")
66
71
 
67
72
 
68
- # Download
73
+ # Download (ignores test-challenge split)
69
74
  dir = Path(yaml["path"]) # dataset root dir
70
75
  urls = [
71
76
  "https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-train.zip",
72
77
  "https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-val.zip",
73
78
  "https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-test-dev.zip",
74
- "https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-test-challenge.zip",
79
+ # "https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-test-challenge.zip",
75
80
  ]
76
81
  download(urls, dir=dir, curl=True, threads=4)
77
82
 
78
83
  # Convert
79
- for d in "VisDrone2019-DET-train", "VisDrone2019-DET-val", "VisDrone2019-DET-test-dev":
80
- visdrone2yolo(dir / d) # convert VisDrone annotations to YOLO labels
84
+ splits = {"VisDrone2019-DET-train": "train", "VisDrone2019-DET-val": "val", "VisDrone2019-DET-test-dev": "test"}
85
+ for folder, split in splits.items():
86
+ visdrone2yolo(dir, split, folder) # convert VisDrone annotations to YOLO labels
87
+ shutil.rmtree(dir / folder) # cleanup original directory
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── african-wildlife ← downloads here (100 MB)
9
+ # └── african-wildlife ← downloads here (100 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: african-wildlife # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── brain-tumor ← downloads here (4.21 MB)
9
+ # └── brain-tumor ← downloads here (4.21 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: brain-tumor # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── carparts-seg ← downloads here (133 MB)
9
+ # └── carparts-seg ← downloads here (133 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: carparts-seg # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── coco-pose ← downloads here (20.1 GB)
9
+ # └── coco-pose ← downloads here (20.1 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: coco-pose # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── coco ← downloads here (20.1 GB)
9
+ # └── coco ← downloads here (20.1 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: coco # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── coco128-seg ← downloads here (7 MB)
9
+ # └── coco128-seg ← downloads here (7 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: coco128-seg # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── coco128 ← downloads here (7 MB)
9
+ # └── coco128 ← downloads here (7 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: coco128 # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── coco8-grayscale ← downloads here (1 MB)
9
+ # └── coco8-grayscale ← downloads here (1 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: coco8-grayscale # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── coco8-multispectral ← downloads here (20.2 MB)
9
+ # └── coco8-multispectral ← downloads here (20.2 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: coco8-multispectral # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── coco8-pose ← downloads here (1 MB)
9
+ # └── coco8-pose ← downloads here (1 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: coco8-pose # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── coco8-seg ← downloads here (1 MB)
9
+ # └── coco8-seg ← downloads here (1 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: coco8-seg # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── coco8 ← downloads here (1 MB)
9
+ # └── coco8 ← downloads here (1 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: coco8 # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── crack-seg ← downloads here (91.6 MB)
9
+ # └── crack-seg ← downloads here (91.6 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: crack-seg # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── dog-pose ← downloads here (337 MB)
9
+ # └── dog-pose ← downloads here (337 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: dog-pose # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── dota8-multispectral ← downloads here (37.3MB)
9
+ # └── dota8-multispectral ← downloads here (37.3MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: dota8-multispectral # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── dota8 ← downloads here (1MB)
9
+ # └── dota8 ← downloads here (1MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: dota8 # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── hand-keypoints ← downloads here (369 MB)
9
+ # └── hand-keypoints ← downloads here (369 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: hand-keypoints # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── lvis ← downloads here (20.1 GB)
9
+ # └── lvis ← downloads here (20.1 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: lvis # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── medical-pills ← downloads here (8.19 MB)
9
+ # └── medical-pills ← downloads here (8.19 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: medical-pills # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── open-images-v7 ← downloads here (561 GB)
9
+ # └── open-images-v7 ← downloads here (561 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: open-images-v7 # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── package-seg ← downloads here (103 MB)
9
+ # └── package-seg ← downloads here (103 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: package-seg # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── signature ← downloads here (11.3 MB)
9
+ # └── signature ← downloads here (11.3 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: signature # dataset root dir
@@ -6,7 +6,7 @@
6
6
  # parent
7
7
  # ├── ultralytics
8
8
  # └── datasets
9
- # └── tiger-pose ← downloads here (22.8 MB)
9
+ # └── tiger-pose ← downloads here (49.8 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
12
  path: tiger-pose # dataset root dir
@@ -7,7 +7,7 @@
7
7
  # parent
8
8
  # ├── ultralytics
9
9
  # └── datasets
10
- # └── xView ← downloads here (20.7 GB)
10
+ # └── xView ← downloads here (20.7 GB)
11
11
 
12
12
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
13
13
  path: xView # dataset root dir
@@ -330,7 +330,7 @@ class ConfusionMatrix(DataExportMixin):
330
330
  """
331
331
  self.task = task
332
332
  self.nc = len(names) # number of classes
333
- self.matrix = np.zeros((self.nc + 1, self.nc + 1)) if self.task == "detect" else np.zeros((self.nc, self.nc))
333
+ self.matrix = np.zeros((self.nc, self.nc)) if self.task == "classify" else np.zeros((self.nc + 1, self.nc + 1))
334
334
  self.names = names # name of classes
335
335
 
336
336
  def process_cls_preds(self, preds, targets):
@@ -360,8 +360,9 @@ class ConfusionMatrix(DataExportMixin):
360
360
  conf (float, optional): Confidence threshold for detections.
361
361
  iou_thres (float, optional): IoU threshold for matching detections to ground truth.
362
362
  """
363
- conf = 0.25 if conf in {None, 0.001} else conf # apply 0.25 if default val conf is passed
364
363
  gt_cls, gt_bboxes = batch["cls"], batch["bboxes"]
364
+ is_obb = gt_bboxes.shape[1] == 5 # check if boxes contains angle for OBB
365
+ conf = 0.25 if conf in {None, 0.01 if is_obb else 0.001} else conf # apply 0.25 if default val conf is passed
365
366
  no_pred = len(detections["cls"]) == 0
366
367
  if gt_cls.shape[0] == 0: # Check if labels is empty
367
368
  if not no_pred:
@@ -380,7 +381,6 @@ class ConfusionMatrix(DataExportMixin):
380
381
  gt_classes = gt_cls.int().tolist()
381
382
  detection_classes = detections["cls"].int().tolist()
382
383
  bboxes = detections["bboxes"]
383
- is_obb = bboxes.shape[1] == 5 # check if detections contains angle for OBB
384
384
  iou = batch_probiou(gt_bboxes, bboxes) if is_obb else box_iou(gt_bboxes, bboxes)
385
385
 
386
386
  x = torch.where(iou > iou_thres)
@@ -422,7 +422,7 @@ class ConfusionMatrix(DataExportMixin):
422
422
  tp = self.matrix.diagonal() # true positives
423
423
  fp = self.matrix.sum(1) - tp # false positives
424
424
  # fn = self.matrix.sum(0) - tp # false negatives (missed detections)
425
- return (tp[:-1], fp[:-1]) if self.task == "detect" else (tp, fp) # remove background class if task=detect
425
+ return (tp, fp) if self.task == "classify" else (tp[:-1], fp[:-1]) # remove background class if task=detect
426
426
 
427
427
  @TryExcept(msg="ConfusionMatrix plot failure")
428
428
  @plt_settings()