dgenerate-ultralytics-headless 8.3.211__tar.gz → 8.3.214__tar.gz

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 (288) hide show
  1. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/PKG-INFO +1 -1
  2. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/dgenerate_ultralytics_headless.egg-info/PKG-INFO +1 -1
  3. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/test_engine.py +19 -0
  4. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/test_python.py +3 -0
  5. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/__init__.py +1 -1
  6. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/Objects365.yaml +19 -15
  7. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/VOC.yaml +4 -5
  8. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/VisDrone.yaml +5 -5
  9. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco-pose.yaml +3 -2
  10. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco.yaml +2 -2
  11. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/lvis.yaml +2 -2
  12. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/engine/trainer.py +78 -41
  13. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/classify/val.py +1 -0
  14. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/plotting.py +3 -2
  15. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/LICENSE +0 -0
  16. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/README.md +0 -0
  17. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/dgenerate_ultralytics_headless.egg-info/SOURCES.txt +0 -0
  18. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/dgenerate_ultralytics_headless.egg-info/dependency_links.txt +0 -0
  19. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/dgenerate_ultralytics_headless.egg-info/entry_points.txt +0 -0
  20. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/dgenerate_ultralytics_headless.egg-info/requires.txt +0 -0
  21. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/dgenerate_ultralytics_headless.egg-info/top_level.txt +0 -0
  22. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/pyproject.toml +0 -0
  23. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/setup.cfg +0 -0
  24. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/__init__.py +0 -0
  25. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/conftest.py +0 -0
  26. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/test_cli.py +0 -0
  27. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/test_cuda.py +0 -0
  28. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/test_exports.py +0 -0
  29. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/test_integrations.py +0 -0
  30. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/tests/test_solutions.py +0 -0
  31. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/assets/bus.jpg +0 -0
  32. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/assets/zidane.jpg +0 -0
  33. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/__init__.py +0 -0
  34. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  35. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  36. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  37. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  38. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
  39. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  40. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  41. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  42. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  43. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  44. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  45. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  46. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
  47. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  48. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  49. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  50. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  51. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/construction-ppe.yaml +0 -0
  52. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  53. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  54. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  55. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  56. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  57. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  58. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  59. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  60. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/signature.yaml +0 -0
  61. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  62. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/datasets/xView.yaml +0 -0
  63. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/default.yaml +0 -0
  64. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  65. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  66. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  67. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  68. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  69. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  70. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  71. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  72. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  73. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  74. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  75. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  76. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  77. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  78. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  79. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  80. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  81. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  82. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  83. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  84. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  85. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  86. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  87. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  88. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  89. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  90. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  91. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  92. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  93. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  94. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  95. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  96. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  97. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  98. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  99. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  100. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  101. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  102. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  103. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  104. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  105. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  106. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  107. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  108. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  109. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  110. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  111. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  112. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  113. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  114. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  115. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  116. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  117. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  118. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  119. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  120. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  121. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/__init__.py +0 -0
  122. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/annotator.py +0 -0
  123. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/augment.py +0 -0
  124. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/base.py +0 -0
  125. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/build.py +0 -0
  126. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/converter.py +0 -0
  127. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/dataset.py +0 -0
  128. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/loaders.py +0 -0
  129. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/scripts/download_weights.sh +0 -0
  130. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/scripts/get_coco.sh +0 -0
  131. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/scripts/get_coco128.sh +0 -0
  132. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  133. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/split.py +0 -0
  134. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/split_dota.py +0 -0
  135. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/data/utils.py +0 -0
  136. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/engine/__init__.py +0 -0
  137. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/engine/exporter.py +0 -0
  138. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/engine/model.py +0 -0
  139. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/engine/predictor.py +0 -0
  140. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/engine/results.py +0 -0
  141. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/engine/tuner.py +0 -0
  142. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/engine/validator.py +0 -0
  143. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/hub/__init__.py +0 -0
  144. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/hub/auth.py +0 -0
  145. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/hub/google/__init__.py +0 -0
  146. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/hub/session.py +0 -0
  147. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/hub/utils.py +0 -0
  148. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/__init__.py +0 -0
  149. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/fastsam/__init__.py +0 -0
  150. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/fastsam/model.py +0 -0
  151. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/fastsam/predict.py +0 -0
  152. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/fastsam/utils.py +0 -0
  153. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/fastsam/val.py +0 -0
  154. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/nas/__init__.py +0 -0
  155. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/nas/model.py +0 -0
  156. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/nas/predict.py +0 -0
  157. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/nas/val.py +0 -0
  158. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/rtdetr/__init__.py +0 -0
  159. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/rtdetr/model.py +0 -0
  160. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/rtdetr/predict.py +0 -0
  161. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/rtdetr/train.py +0 -0
  162. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/rtdetr/val.py +0 -0
  163. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/__init__.py +0 -0
  164. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/amg.py +0 -0
  165. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/build.py +0 -0
  166. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/model.py +0 -0
  167. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/__init__.py +0 -0
  168. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/blocks.py +0 -0
  169. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/decoders.py +0 -0
  170. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/encoders.py +0 -0
  171. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  172. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/sam.py +0 -0
  173. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  174. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/transformer.py +0 -0
  175. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/modules/utils.py +0 -0
  176. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/sam/predict.py +0 -0
  177. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/utils/__init__.py +0 -0
  178. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/utils/loss.py +0 -0
  179. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/utils/ops.py +0 -0
  180. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/__init__.py +0 -0
  181. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/classify/__init__.py +0 -0
  182. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/classify/predict.py +0 -0
  183. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/classify/train.py +0 -0
  184. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/detect/__init__.py +0 -0
  185. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/detect/predict.py +0 -0
  186. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/detect/train.py +0 -0
  187. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/detect/val.py +0 -0
  188. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/model.py +0 -0
  189. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/obb/__init__.py +0 -0
  190. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/obb/predict.py +0 -0
  191. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/obb/train.py +0 -0
  192. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/obb/val.py +0 -0
  193. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/pose/__init__.py +0 -0
  194. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/pose/predict.py +0 -0
  195. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/pose/train.py +0 -0
  196. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/pose/val.py +0 -0
  197. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/segment/__init__.py +0 -0
  198. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/segment/predict.py +0 -0
  199. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/segment/train.py +0 -0
  200. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/segment/val.py +0 -0
  201. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/world/__init__.py +0 -0
  202. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/world/train.py +0 -0
  203. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/world/train_world.py +0 -0
  204. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  205. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  206. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/yoloe/train.py +0 -0
  207. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  208. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/models/yolo/yoloe/val.py +0 -0
  209. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/__init__.py +0 -0
  210. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/autobackend.py +0 -0
  211. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/modules/__init__.py +0 -0
  212. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/modules/activation.py +0 -0
  213. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/modules/block.py +0 -0
  214. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/modules/conv.py +0 -0
  215. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/modules/head.py +0 -0
  216. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/modules/transformer.py +0 -0
  217. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/modules/utils.py +0 -0
  218. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/tasks.py +0 -0
  219. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/nn/text_model.py +0 -0
  220. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/py.typed +0 -0
  221. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/__init__.py +0 -0
  222. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/ai_gym.py +0 -0
  223. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/analytics.py +0 -0
  224. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/config.py +0 -0
  225. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/distance_calculation.py +0 -0
  226. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/heatmap.py +0 -0
  227. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/instance_segmentation.py +0 -0
  228. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/object_blurrer.py +0 -0
  229. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/object_counter.py +0 -0
  230. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/object_cropper.py +0 -0
  231. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/parking_management.py +0 -0
  232. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/queue_management.py +0 -0
  233. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/region_counter.py +0 -0
  234. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/security_alarm.py +0 -0
  235. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/similarity_search.py +0 -0
  236. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/solutions.py +0 -0
  237. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/speed_estimation.py +0 -0
  238. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/streamlit_inference.py +0 -0
  239. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/templates/similarity-search.html +0 -0
  240. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/trackzone.py +0 -0
  241. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/solutions/vision_eye.py +0 -0
  242. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/__init__.py +0 -0
  243. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/basetrack.py +0 -0
  244. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/bot_sort.py +0 -0
  245. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/byte_tracker.py +0 -0
  246. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/track.py +0 -0
  247. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/utils/__init__.py +0 -0
  248. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/utils/gmc.py +0 -0
  249. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  250. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/trackers/utils/matching.py +0 -0
  251. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/__init__.py +0 -0
  252. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/autobatch.py +0 -0
  253. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/autodevice.py +0 -0
  254. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/benchmarks.py +0 -0
  255. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/__init__.py +0 -0
  256. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/base.py +0 -0
  257. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/clearml.py +0 -0
  258. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/comet.py +0 -0
  259. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/dvc.py +0 -0
  260. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/hub.py +0 -0
  261. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/mlflow.py +0 -0
  262. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/neptune.py +0 -0
  263. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/platform.py +0 -0
  264. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/raytune.py +0 -0
  265. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  266. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/callbacks/wb.py +0 -0
  267. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/checks.py +0 -0
  268. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/cpu.py +0 -0
  269. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/dist.py +0 -0
  270. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/downloads.py +0 -0
  271. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/errors.py +0 -0
  272. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/events.py +0 -0
  273. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/export/__init__.py +0 -0
  274. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/export/imx.py +0 -0
  275. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/files.py +0 -0
  276. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/git.py +0 -0
  277. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/instance.py +0 -0
  278. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/logger.py +0 -0
  279. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/loss.py +0 -0
  280. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/metrics.py +0 -0
  281. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/nms.py +0 -0
  282. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/ops.py +0 -0
  283. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/patches.py +0 -0
  284. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/tal.py +0 -0
  285. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/torch_utils.py +0 -0
  286. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/tqdm.py +0 -0
  287. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/triton.py +0 -0
  288. {dgenerate_ultralytics_headless-8.3.211 → dgenerate_ultralytics_headless-8.3.214}/ultralytics/utils/tuner.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dgenerate-ultralytics-headless
3
- Version: 8.3.211
3
+ Version: 8.3.214
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dgenerate-ultralytics-headless
3
- Version: 8.3.211
3
+ Version: 8.3.214
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>
@@ -3,6 +3,8 @@
3
3
  import sys
4
4
  from unittest import mock
5
5
 
6
+ import torch
7
+
6
8
  from tests import MODEL
7
9
  from ultralytics import YOLO
8
10
  from ultralytics.cfg import get_cfg
@@ -136,3 +138,20 @@ def test_classify():
136
138
  assert test_func in pred.callbacks["on_predict_start"], "callback test failed"
137
139
  result = pred(source=ASSETS, model=trainer.best)
138
140
  assert len(result), "predictor test failed"
141
+
142
+
143
+ def test_nan_recovery():
144
+ """Test NaN loss detection and recovery during training."""
145
+ nan_injected = [False]
146
+
147
+ def inject_nan(trainer):
148
+ """Inject NaN into loss during batch processing to test recovery mechanism."""
149
+ if trainer.epoch == 1 and trainer.tloss is not None and not nan_injected[0]:
150
+ trainer.tloss *= torch.tensor(float("nan"))
151
+ nan_injected[0] = True
152
+
153
+ overrides = {"data": "coco8.yaml", "model": "yolo11n.yaml", "imgsz": 32, "epochs": 3}
154
+ trainer = detect.DetectionTrainer(overrides=overrides)
155
+ trainer.add_callback("on_train_batch_end", inject_nan)
156
+ trainer.train()
157
+ assert nan_injected[0], "NaN injection failed"
@@ -23,6 +23,8 @@ from ultralytics.utils import (
23
23
  ASSETS_URL,
24
24
  DEFAULT_CFG,
25
25
  DEFAULT_CFG_PATH,
26
+ IS_JETSON,
27
+ IS_RASPBERRYPI,
26
28
  LINUX,
27
29
  LOGGER,
28
30
  ONLINE,
@@ -217,6 +219,7 @@ def test_val(task: str, weight: str, data: str) -> None:
217
219
  metrics.confusion_matrix.to_json()
218
220
 
219
221
 
222
+ @pytest.mark.skipif(IS_JETSON or IS_RASPBERRYPI, reason="Edge devices not intended for training")
220
223
  def test_train_scratch():
221
224
  """Test training the YOLO model from scratch using the provided configuration."""
222
225
  model = YOLO(CFG)
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.211"
3
+ __version__ = "8.3.214"
4
4
 
5
5
  import importlib
6
6
  import os
@@ -384,6 +384,7 @@ names:
384
384
 
385
385
  # Download script/URL (optional) ---------------------------------------------------------------------------------------
386
386
  download: |
387
+ from concurrent.futures import ThreadPoolExecutor
387
388
  from pathlib import Path
388
389
 
389
390
  import numpy as np
@@ -396,31 +397,28 @@ download: |
396
397
  check_requirements("faster-coco-eval")
397
398
  from faster_coco_eval import COCO
398
399
 
399
- # Make Directories
400
- dir = Path(yaml["path"]) # dataset root dir
401
- for p in "images", "labels":
402
- (dir / p).mkdir(parents=True, exist_ok=True)
403
- for q in "train", "val":
404
- (dir / p / q).mkdir(parents=True, exist_ok=True)
405
-
406
400
  # Train, Val Splits
401
+ dir = Path(yaml["path"])
407
402
  for split, patches in [("train", 50 + 1), ("val", 43 + 1)]:
408
403
  print(f"Processing {split} in {patches} patches ...")
409
404
  images, labels = dir / "images" / split, dir / "labels" / split
405
+ images.mkdir(parents=True, exist_ok=True)
406
+ labels.mkdir(parents=True, exist_ok=True)
410
407
 
411
408
  # Download
412
409
  url = f"https://dorc.ks3-cn-beijing.ksyun.com/data-set/2020Objects365%E6%95%B0%E6%8D%AE%E9%9B%86/{split}/"
413
410
  if split == "train":
414
411
  download([f"{url}zhiyuan_objv2_{split}.tar.gz"], dir=dir) # annotations json
415
- download([f"{url}patch{i}.tar.gz" for i in range(patches)], dir=images, curl=True, threads=8)
412
+ download([f"{url}patch{i}.tar.gz" for i in range(patches)], dir=images, threads=17) # 51 patches / 17 threads = 3
416
413
  elif split == "val":
417
414
  download([f"{url}zhiyuan_objv2_{split}.json"], dir=dir) # annotations json
418
- download([f"{url}images/v1/patch{i}.tar.gz" for i in range(15 + 1)], dir=images, curl=True, threads=8)
419
- download([f"{url}images/v2/patch{i}.tar.gz" for i in range(16, patches)], dir=images, curl=True, threads=8)
415
+ download([f"{url}images/v1/patch{i}.tar.gz" for i in range(15 + 1)], dir=images, threads=16)
416
+ download([f"{url}images/v2/patch{i}.tar.gz" for i in range(16, patches)], dir=images, threads=16)
420
417
 
421
418
  # Move
422
- for f in TQDM(images.rglob("*.jpg"), desc=f"Moving {split} images"):
423
- f.rename(images / f.name) # move to /images/{split}
419
+ files = list(images.rglob("*.jpg"))
420
+ with ThreadPoolExecutor(max_workers=16) as executor:
421
+ list(TQDM(executor.map(lambda f: f.rename(images / f.name), files), total=len(files), desc=f"Moving {split} images"))
424
422
 
425
423
  # Labels
426
424
  coco = COCO(dir / f"zhiyuan_objv2_{split}.json")
@@ -428,10 +426,12 @@ download: |
428
426
  for cid, cat in enumerate(names):
429
427
  catIds = coco.getCatIds(catNms=[cat])
430
428
  imgIds = coco.getImgIds(catIds=catIds)
431
- for im in TQDM(coco.loadImgs(imgIds), desc=f"Class {cid + 1}/{len(names)} {cat}"):
432
- width, height = im["width"], im["height"]
433
- path = Path(im["file_name"]) # image filename
429
+
430
+ def process_annotation(im):
431
+ """Process and write annotations for a single image."""
434
432
  try:
433
+ width, height = im["width"], im["height"]
434
+ path = Path(im["file_name"])
435
435
  with open(labels / path.with_suffix(".txt").name, "a", encoding="utf-8") as file:
436
436
  annIds = coco.getAnnIds(imgIds=im["id"], catIds=catIds, iscrowd=None)
437
437
  for a in coco.loadAnns(annIds):
@@ -441,3 +441,7 @@ download: |
441
441
  file.write(f"{cid} {x:.5f} {y:.5f} {w:.5f} {h:.5f}\n")
442
442
  except Exception as e:
443
443
  print(e)
444
+
445
+ images_list = coco.loadImgs(imgIds)
446
+ with ThreadPoolExecutor(max_workers=16) as executor:
447
+ list(TQDM(executor.map(process_annotation, images_list), total=len(images_list), desc=f"Class {cid + 1}/{len(names)} {cat}"))
@@ -49,7 +49,7 @@ download: |
49
49
  from pathlib import Path
50
50
 
51
51
  from ultralytics.utils.downloads import download
52
- from ultralytics.utils import TQDM
52
+ from ultralytics.utils import ASSETS_URL, TQDM
53
53
 
54
54
  def convert_label(path, lb_path, year, image_id):
55
55
  """Converts XML annotations from VOC format to YOLO format by extracting bounding boxes and class IDs."""
@@ -79,11 +79,10 @@ download: |
79
79
 
80
80
  # Download
81
81
  dir = Path(yaml["path"]) # dataset root dir
82
- url = "https://github.com/ultralytics/assets/releases/download/v0.0.0/"
83
82
  urls = [
84
- f"{url}VOCtrainval_06-Nov-2007.zip", # 446MB, 5012 images
85
- f"{url}VOCtest_06-Nov-2007.zip", # 438MB, 4953 images
86
- f"{url}VOCtrainval_11-May-2012.zip", # 1.95GB, 17126 images
83
+ f"{ASSETS_URL}/VOCtrainval_06-Nov-2007.zip", # 446MB, 5012 images
84
+ f"{ASSETS_URL}/VOCtest_06-Nov-2007.zip", # 438MB, 4953 images
85
+ f"{ASSETS_URL}/VOCtrainval_11-May-2012.zip", # 1.95GB, 17126 images
87
86
  ]
88
87
  download(urls, dir=dir / "images", threads=3, exist_ok=True) # download and unzip over existing (required)
89
88
 
@@ -34,7 +34,7 @@ download: |
34
34
  import shutil
35
35
 
36
36
  from ultralytics.utils.downloads import download
37
- from ultralytics.utils import TQDM
37
+ from ultralytics.utils import ASSETS_URL, TQDM
38
38
 
39
39
 
40
40
  def visdrone2yolo(dir, split, source_name=None):
@@ -73,10 +73,10 @@ download: |
73
73
  # Download (ignores test-challenge split)
74
74
  dir = Path(yaml["path"]) # dataset root dir
75
75
  urls = [
76
- "https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-train.zip",
77
- "https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-val.zip",
78
- "https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-test-dev.zip",
79
- # "https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-test-challenge.zip",
76
+ f"{ASSETS_URL}/VisDrone2019-DET-train.zip",
77
+ f"{ASSETS_URL}/VisDrone2019-DET-val.zip",
78
+ f"{ASSETS_URL}/VisDrone2019-DET-test-dev.zip",
79
+ # f"{ASSETS_URL}/VisDrone2019-DET-test-challenge.zip",
80
80
  ]
81
81
  download(urls, dir=dir, threads=4)
82
82
 
@@ -26,12 +26,13 @@ names:
26
26
  download: |
27
27
  from pathlib import Path
28
28
 
29
+ from ultralytics.utils import ASSETS_URL
29
30
  from ultralytics.utils.downloads import download
30
31
 
31
32
  # Download labels
32
33
  dir = Path(yaml["path"]) # dataset root dir
33
- url = "https://github.com/ultralytics/assets/releases/download/v0.0.0/"
34
- urls = [f"{url}coco2017labels-pose.zip"]
34
+
35
+ urls = [f"{ASSETS_URL}/coco2017labels-pose.zip"]
35
36
  download(urls, dir=dir.parent)
36
37
  # Download data
37
38
  urls = [
@@ -101,13 +101,13 @@ names:
101
101
  download: |
102
102
  from pathlib import Path
103
103
 
104
+ from ultralytics.utils import ASSETS_URL
104
105
  from ultralytics.utils.downloads import download
105
106
 
106
107
  # Download labels
107
108
  segments = True # segment or box labels
108
109
  dir = Path(yaml["path"]) # dataset root dir
109
- url = "https://github.com/ultralytics/assets/releases/download/v0.0.0/"
110
- urls = [url + ("coco2017labels-segments.zip" if segments else "coco2017labels.zip")] # labels
110
+ urls = [ASSETS_URL + ("/coco2017labels-segments.zip" if segments else "/coco2017labels.zip")] # labels
111
111
  download(urls, dir=dir.parent)
112
112
  # Download data
113
113
  urls = [
@@ -1223,12 +1223,12 @@ names:
1223
1223
  download: |
1224
1224
  from pathlib import Path
1225
1225
 
1226
+ from ultralytics.utils import ASSETS_URL
1226
1227
  from ultralytics.utils.downloads import download
1227
1228
 
1228
1229
  # Download labels
1229
1230
  dir = Path(yaml["path"]) # dataset root dir
1230
- url = "https://github.com/ultralytics/assets/releases/download/v0.0.0/"
1231
- urls = [f"{url}lvis-labels-segments.zip"]
1231
+ urls = [f"{ASSETS_URL}/lvis-labels-segments.zip"]
1232
1232
  download(urls, dir=dir.parent)
1233
1233
 
1234
1234
  # Download data
@@ -44,7 +44,6 @@ from ultralytics.utils.dist import ddp_cleanup, generate_ddp_command
44
44
  from ultralytics.utils.files import get_latest_run
45
45
  from ultralytics.utils.plotting import plot_results
46
46
  from ultralytics.utils.torch_utils import (
47
- TORCH_1_9,
48
47
  TORCH_2_4,
49
48
  EarlyStopping,
50
49
  ModelEMA,
@@ -171,7 +170,10 @@ class BaseTrainer:
171
170
  self.tloss = None
172
171
  self.loss_names = ["Loss"]
173
172
  self.csv = self.save_dir / "results.csv"
173
+ if self.csv.exists() and not self.args.resume:
174
+ self.csv.unlink()
174
175
  self.plot_idx = [0, 1, 2]
176
+ self.nan_recovery_attempts = 0
175
177
 
176
178
  # Callbacks
177
179
  self.callbacks = _callbacks or callbacks.get_default_callbacks()
@@ -424,23 +426,20 @@ class BaseTrainer:
424
426
  self.tloss = self.loss_items if self.tloss is None else (self.tloss * i + self.loss_items) / (i + 1)
425
427
 
426
428
  # Backward
427
- if self.loss.isfinite():
428
- self.scaler.scale(self.loss).backward()
429
- if ni - last_opt_step >= self.accumulate:
430
- self.optimizer_step()
431
- last_opt_step = ni
432
-
433
- # Timed stopping
434
- if self.args.time:
435
- self.stop = (time.time() - self.train_time_start) > (self.args.time * 3600)
436
- if RANK != -1: # if DDP training
437
- broadcast_list = [self.stop if RANK == 0 else None]
438
- dist.broadcast_object_list(broadcast_list, 0) # broadcast 'stop' to all ranks
439
- self.stop = broadcast_list[0]
440
- if self.stop: # training time exceeded
441
- break
442
- else:
443
- LOGGER.warning(f"Non-finite forward pass (loss={self.loss}), skipping backwards pass...")
429
+ self.scaler.scale(self.loss).backward()
430
+ if ni - last_opt_step >= self.accumulate:
431
+ self.optimizer_step()
432
+ last_opt_step = ni
433
+
434
+ # Timed stopping
435
+ if self.args.time:
436
+ self.stop = (time.time() - self.train_time_start) > (self.args.time * 3600)
437
+ if RANK != -1: # if DDP training
438
+ broadcast_list = [self.stop if RANK == 0 else None]
439
+ dist.broadcast_object_list(broadcast_list, 0) # broadcast 'stop' to all ranks
440
+ self.stop = broadcast_list[0]
441
+ if self.stop: # training time exceeded
442
+ break
444
443
 
445
444
  # Log
446
445
  if RANK in {-1, 0}:
@@ -462,6 +461,7 @@ class BaseTrainer:
462
461
  self.run_callbacks("on_train_batch_end")
463
462
 
464
463
  self.lr = {f"lr/pg{ir}": x["lr"] for ir, x in enumerate(self.optimizer.param_groups)} # for loggers
464
+
465
465
  self.run_callbacks("on_train_epoch_end")
466
466
  if RANK in {-1, 0}:
467
467
  final_epoch = epoch + 1 >= self.epochs
@@ -471,6 +471,13 @@ class BaseTrainer:
471
471
  if self.args.val or final_epoch or self.stopper.possible_stop or self.stop:
472
472
  self._clear_memory(threshold=0.5) # prevent VRAM spike
473
473
  self.metrics, self.fitness = self.validate()
474
+
475
+ # NaN recovery
476
+ if self._handle_nan_recovery(epoch):
477
+ continue
478
+
479
+ self.nan_recovery_attempts = 0
480
+ if RANK in {-1, 0}:
474
481
  self.save_metrics(metrics={**self.label_loss_items(self.tloss), **self.metrics, **self.lr})
475
482
  self.stop |= self.stopper(epoch + 1, self.fitness) or final_epoch
476
483
  if self.args.time:
@@ -556,7 +563,10 @@ class BaseTrainer:
556
563
  """Read results.csv into a dictionary using polars."""
557
564
  import polars as pl # scope for faster 'import ultralytics'
558
565
 
559
- return pl.read_csv(self.csv, infer_schema_length=None).to_dict(as_series=False)
566
+ try:
567
+ return pl.read_csv(self.csv, infer_schema_length=None).to_dict(as_series=False)
568
+ except Exception:
569
+ return {}
560
570
 
561
571
  def _model_train(self):
562
572
  """Set model in training mode."""
@@ -600,6 +610,7 @@ class BaseTrainer:
600
610
  serialized_ckpt = buffer.getvalue() # get the serialized content to save
601
611
 
602
612
  # Save checkpoints
613
+ self.wdir.mkdir(parents=True, exist_ok=True) # ensure weights directory exists
603
614
  self.last.write_bytes(serialized_ckpt) # save last.pt
604
615
  if self.best_fitness == self.fitness:
605
616
  self.best.write_bytes(serialized_ckpt) # save best.pt
@@ -665,17 +676,8 @@ class BaseTrainer:
665
676
  def optimizer_step(self):
666
677
  """Perform a single step of the training optimizer with gradient clipping and EMA update."""
667
678
  self.scaler.unscale_(self.optimizer) # unscale gradients
668
- try:
669
- if TORCH_1_9:
670
- torch.nn.utils.clip_grad_norm_(self.model.parameters(), max_norm=10.0, error_if_nonfinite=True)
671
- self.scaler.step(self.optimizer)
672
- except RuntimeError as e:
673
- if "finite" in str(e).lower():
674
- LOGGER.warning("Non-finite gradients, skipping optimizer updates")
675
- self.scaler.update()
676
- self.optimizer.zero_grad()
677
- return
678
- raise
679
+ torch.nn.utils.clip_grad_norm_(self.model.parameters(), max_norm=10.0)
680
+ self.scaler.step(self.optimizer)
679
681
  self.scaler.update()
680
682
  self.optimizer.zero_grad()
681
683
  if self.ema:
@@ -749,8 +751,9 @@ class BaseTrainer:
749
751
  """Save training metrics to a CSV file."""
750
752
  keys, vals = list(metrics.keys()), list(metrics.values())
751
753
  n = len(metrics) + 2 # number of cols
752
- s = "" if self.csv.exists() else (("%s," * n % tuple(["epoch", "time"] + keys)).rstrip(",") + "\n") # header
753
754
  t = time.time() - self.train_time_start
755
+ self.csv.parent.mkdir(parents=True, exist_ok=True) # ensure parent directory exists
756
+ s = "" if self.csv.exists() else (("%s," * n % tuple(["epoch", "time"] + keys)).rstrip(",") + "\n") # header
754
757
  with open(self.csv, "a", encoding="utf-8") as f:
755
758
  f.write(s + ("%.6g," * n % tuple([self.epoch + 1, t] + vals)).rstrip(",") + "\n")
756
759
 
@@ -812,20 +815,54 @@ class BaseTrainer:
812
815
  ) from e
813
816
  self.resume = resume
814
817
 
815
- def resume_training(self, ckpt):
816
- """Resume YOLO training from given epoch and best fitness."""
817
- if ckpt is None or not self.resume:
818
- return
819
- best_fitness = 0.0
820
- start_epoch = ckpt.get("epoch", -1) + 1
818
+ def _load_checkpoint_state(self, ckpt):
819
+ """Load optimizer, scaler, EMA, and best_fitness from checkpoint."""
821
820
  if ckpt.get("optimizer") is not None:
822
- self.optimizer.load_state_dict(ckpt["optimizer"]) # optimizer
823
- best_fitness = ckpt["best_fitness"]
821
+ self.optimizer.load_state_dict(ckpt["optimizer"])
824
822
  if ckpt.get("scaler") is not None:
825
823
  self.scaler.load_state_dict(ckpt["scaler"])
826
824
  if self.ema and ckpt.get("ema"):
827
- self.ema.ema.load_state_dict(ckpt["ema"].float().state_dict()) # EMA
825
+ self.ema = ModelEMA(self.model) # validation with EMA creates inference tensors that can't be updated
826
+ self.ema.ema.load_state_dict(ckpt["ema"].float().state_dict())
828
827
  self.ema.updates = ckpt["updates"]
828
+ self.best_fitness = ckpt.get("best_fitness", 0.0)
829
+
830
+ def _handle_nan_recovery(self, epoch):
831
+ """Detect and recover from NaN/Inf loss and fitness collapse by loading last checkpoint."""
832
+ loss_nan = self.loss is not None and not self.loss.isfinite()
833
+ fitness_nan = self.fitness is not None and not np.isfinite(self.fitness)
834
+ fitness_collapse = self.best_fitness and self.best_fitness > 0 and self.fitness == 0
835
+ corrupted = RANK in {-1, 0} and loss_nan and (fitness_nan or fitness_collapse)
836
+ reason = "Loss NaN/Inf" if loss_nan else "Fitness NaN/Inf" if fitness_nan else "Fitness collapse"
837
+ if RANK != -1: # DDP: broadcast to all ranks
838
+ broadcast_list = [corrupted if RANK == 0 else None]
839
+ dist.broadcast_object_list(broadcast_list, 0)
840
+ corrupted = broadcast_list[0]
841
+ if not corrupted:
842
+ return False
843
+ if epoch == self.start_epoch or not self.last.exists():
844
+ LOGGER.warning(f"{reason} detected but can not recover from last.pt...")
845
+ return False # Cannot recover on first epoch, let training continue
846
+ self.nan_recovery_attempts += 1
847
+ if self.nan_recovery_attempts > 3:
848
+ raise RuntimeError(f"Training failed: NaN persisted for {self.nan_recovery_attempts} epochs")
849
+ LOGGER.warning(f"{reason} detected (attempt {self.nan_recovery_attempts}/3), recovering from last.pt...")
850
+ self._model_train() # set model to train mode before loading checkpoint to avoid inference tensor errors
851
+ _, ckpt = load_checkpoint(self.last)
852
+ ema_state = ckpt["ema"].float().state_dict()
853
+ if not all(torch.isfinite(v).all() for v in ema_state.values() if isinstance(v, torch.Tensor)):
854
+ raise RuntimeError(f"Checkpoint {self.last} is corrupted with NaN/Inf weights")
855
+ unwrap_model(self.model).load_state_dict(ema_state) # Load EMA weights into model
856
+ self._load_checkpoint_state(ckpt) # Load optimizer/scaler/EMA/best_fitness
857
+ del ckpt, ema_state
858
+ self.scheduler.last_epoch = epoch - 1
859
+ return True
860
+
861
+ def resume_training(self, ckpt):
862
+ """Resume YOLO training from given epoch and best fitness."""
863
+ if ckpt is None or not self.resume:
864
+ return
865
+ start_epoch = ckpt.get("epoch", -1) + 1
829
866
  assert start_epoch > 0, (
830
867
  f"{self.args.model} training to {self.epochs} epochs is finished, nothing to resume.\n"
831
868
  f"Start a new training without resuming, i.e. 'yolo train model={self.args.model}'"
@@ -836,7 +873,7 @@ class BaseTrainer:
836
873
  f"{self.model} has been trained for {ckpt['epoch']} epochs. Fine-tuning for {self.epochs} more epochs."
837
874
  )
838
875
  self.epochs += ckpt["epoch"] # finetune additional epochs
839
- self.best_fitness = best_fitness
876
+ self._load_checkpoint_state(ckpt)
840
877
  self.start_epoch = start_epoch
841
878
  if start_epoch > (self.epochs - self.args.close_mosaic):
842
879
  self._close_dataloader_mosaic()
@@ -205,6 +205,7 @@ class ClassificationValidator(BaseValidator):
205
205
  img=batch["img"],
206
206
  batch_idx=torch.arange(batch["img"].shape[0]),
207
207
  cls=torch.argmax(preds, dim=1),
208
+ conf=torch.amax(preds, dim=1),
208
209
  )
209
210
  plot_images(
210
211
  batched_preds,
@@ -778,10 +778,10 @@ def plot_images(
778
778
  idx = batch_idx == i
779
779
  classes = cls[idx].astype("int")
780
780
  labels = confs is None
781
+ conf = confs[idx] if confs is not None else None # check for confidence presence (label vs pred)
781
782
 
782
783
  if len(bboxes):
783
784
  boxes = bboxes[idx]
784
- conf = confs[idx] if confs is not None else None # check for confidence presence (label vs pred)
785
785
  if len(boxes):
786
786
  if boxes[:, :4].max() <= 1.1: # if normalized with tolerance 0.1
787
787
  boxes[..., [0, 2]] *= w # scale to pixels
@@ -805,7 +805,8 @@ def plot_images(
805
805
  for c in classes:
806
806
  color = colors(c)
807
807
  c = names.get(c, c) if names else c
808
- annotator.text([x, y], f"{c}", txt_color=color, box_color=(64, 64, 64, 128))
808
+ label = f"{c}" if labels else f"{c} {conf[0]:.1f}"
809
+ annotator.text([x, y], label, txt_color=color, box_color=(64, 64, 64, 128))
809
810
 
810
811
  # Plot keypoints
811
812
  if len(kpts):