ultralytics 8.3.149__tar.gz → 8.3.151__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 (278) hide show
  1. {ultralytics-8.3.149/ultralytics.egg-info → ultralytics-8.3.151}/PKG-INFO +1 -1
  2. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/__init__.py +1 -1
  3. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/engine/validator.py +2 -5
  4. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/fastsam/val.py +2 -4
  5. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/classify/val.py +2 -3
  6. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/detect/val.py +2 -3
  7. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/obb/val.py +3 -4
  8. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/pose/val.py +2 -3
  9. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/segment/val.py +2 -3
  10. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/parking_management.py +4 -2
  11. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/trackzone.py +5 -4
  12. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/trackers/track.py +0 -2
  13. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/benchmarks.py +9 -1
  14. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/metrics.py +108 -38
  15. {ultralytics-8.3.149 → ultralytics-8.3.151/ultralytics.egg-info}/PKG-INFO +1 -1
  16. {ultralytics-8.3.149 → ultralytics-8.3.151}/LICENSE +0 -0
  17. {ultralytics-8.3.149 → ultralytics-8.3.151}/README.md +0 -0
  18. {ultralytics-8.3.149 → ultralytics-8.3.151}/pyproject.toml +0 -0
  19. {ultralytics-8.3.149 → ultralytics-8.3.151}/setup.cfg +0 -0
  20. {ultralytics-8.3.149 → ultralytics-8.3.151}/tests/__init__.py +0 -0
  21. {ultralytics-8.3.149 → ultralytics-8.3.151}/tests/conftest.py +0 -0
  22. {ultralytics-8.3.149 → ultralytics-8.3.151}/tests/test_cli.py +0 -0
  23. {ultralytics-8.3.149 → ultralytics-8.3.151}/tests/test_cuda.py +0 -0
  24. {ultralytics-8.3.149 → ultralytics-8.3.151}/tests/test_engine.py +0 -0
  25. {ultralytics-8.3.149 → ultralytics-8.3.151}/tests/test_exports.py +0 -0
  26. {ultralytics-8.3.149 → ultralytics-8.3.151}/tests/test_integrations.py +0 -0
  27. {ultralytics-8.3.149 → ultralytics-8.3.151}/tests/test_python.py +0 -0
  28. {ultralytics-8.3.149 → ultralytics-8.3.151}/tests/test_solutions.py +0 -0
  29. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/assets/bus.jpg +0 -0
  30. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/assets/zidane.jpg +0 -0
  31. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/__init__.py +0 -0
  32. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  33. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  34. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  35. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  36. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
  37. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  38. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  39. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  40. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  41. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  42. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  43. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  44. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  45. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  46. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/coco.yaml +0 -0
  47. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  48. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  49. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
  50. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  51. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  52. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  53. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  54. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  55. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  56. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  57. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  58. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  59. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  60. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  61. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  62. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  63. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/signature.yaml +0 -0
  64. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  65. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/datasets/xView.yaml +0 -0
  66. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/default.yaml +0 -0
  67. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  68. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  69. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  70. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  71. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  72. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  73. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  74. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  75. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  76. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  77. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  78. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  79. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  80. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  81. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  82. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  83. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  84. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  85. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  86. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  87. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  88. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  89. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  90. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  91. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  92. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  93. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  94. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  95. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  96. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  97. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  98. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  99. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  100. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  101. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  102. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  103. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  104. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  105. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  106. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  107. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  108. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  109. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  110. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  111. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  112. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  113. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  114. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  115. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  116. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  117. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  118. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  119. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  120. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  121. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  122. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  123. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  124. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/data/__init__.py +0 -0
  125. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/data/annotator.py +0 -0
  126. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/data/augment.py +0 -0
  127. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/data/base.py +0 -0
  128. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/data/build.py +0 -0
  129. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/data/converter.py +0 -0
  130. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/data/dataset.py +0 -0
  131. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/data/loaders.py +0 -0
  132. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/data/scripts/download_weights.sh +0 -0
  133. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/data/scripts/get_coco.sh +0 -0
  134. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/data/scripts/get_coco128.sh +0 -0
  135. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  136. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/data/split.py +0 -0
  137. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/data/split_dota.py +0 -0
  138. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/data/utils.py +0 -0
  139. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/engine/__init__.py +0 -0
  140. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/engine/exporter.py +0 -0
  141. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/engine/model.py +0 -0
  142. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/engine/predictor.py +0 -0
  143. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/engine/results.py +0 -0
  144. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/engine/trainer.py +0 -0
  145. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/engine/tuner.py +0 -0
  146. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/hub/__init__.py +0 -0
  147. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/hub/auth.py +0 -0
  148. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/hub/google/__init__.py +0 -0
  149. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/hub/session.py +0 -0
  150. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/hub/utils.py +0 -0
  151. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/__init__.py +0 -0
  152. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/fastsam/__init__.py +0 -0
  153. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/fastsam/model.py +0 -0
  154. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/fastsam/predict.py +0 -0
  155. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/fastsam/utils.py +0 -0
  156. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/nas/__init__.py +0 -0
  157. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/nas/model.py +0 -0
  158. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/nas/predict.py +0 -0
  159. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/nas/val.py +0 -0
  160. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/rtdetr/__init__.py +0 -0
  161. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/rtdetr/model.py +0 -0
  162. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/rtdetr/predict.py +0 -0
  163. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/rtdetr/train.py +0 -0
  164. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/rtdetr/val.py +0 -0
  165. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/sam/__init__.py +0 -0
  166. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/sam/amg.py +0 -0
  167. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/sam/build.py +0 -0
  168. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/sam/model.py +0 -0
  169. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/sam/modules/__init__.py +0 -0
  170. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/sam/modules/blocks.py +0 -0
  171. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/sam/modules/decoders.py +0 -0
  172. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/sam/modules/encoders.py +0 -0
  173. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  174. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/sam/modules/sam.py +0 -0
  175. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  176. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/sam/modules/transformer.py +0 -0
  177. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/sam/modules/utils.py +0 -0
  178. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/sam/predict.py +0 -0
  179. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/utils/__init__.py +0 -0
  180. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/utils/loss.py +0 -0
  181. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/utils/ops.py +0 -0
  182. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/__init__.py +0 -0
  183. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/classify/__init__.py +0 -0
  184. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/classify/predict.py +0 -0
  185. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/classify/train.py +0 -0
  186. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/detect/__init__.py +0 -0
  187. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/detect/predict.py +0 -0
  188. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/detect/train.py +0 -0
  189. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/model.py +0 -0
  190. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/obb/__init__.py +0 -0
  191. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/obb/predict.py +0 -0
  192. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/obb/train.py +0 -0
  193. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/pose/__init__.py +0 -0
  194. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/pose/predict.py +0 -0
  195. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/pose/train.py +0 -0
  196. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/segment/__init__.py +0 -0
  197. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/segment/predict.py +0 -0
  198. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/segment/train.py +0 -0
  199. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/world/__init__.py +0 -0
  200. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/world/train.py +0 -0
  201. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/world/train_world.py +0 -0
  202. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  203. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  204. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/yoloe/train.py +0 -0
  205. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  206. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/models/yolo/yoloe/val.py +0 -0
  207. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/nn/__init__.py +0 -0
  208. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/nn/autobackend.py +0 -0
  209. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/nn/modules/__init__.py +0 -0
  210. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/nn/modules/activation.py +0 -0
  211. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/nn/modules/block.py +0 -0
  212. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/nn/modules/conv.py +0 -0
  213. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/nn/modules/head.py +0 -0
  214. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/nn/modules/transformer.py +0 -0
  215. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/nn/modules/utils.py +0 -0
  216. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/nn/tasks.py +0 -0
  217. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/nn/text_model.py +0 -0
  218. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/__init__.py +0 -0
  219. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/ai_gym.py +0 -0
  220. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/analytics.py +0 -0
  221. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/config.py +0 -0
  222. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/distance_calculation.py +0 -0
  223. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/heatmap.py +0 -0
  224. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/instance_segmentation.py +0 -0
  225. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/object_blurrer.py +0 -0
  226. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/object_counter.py +0 -0
  227. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/object_cropper.py +0 -0
  228. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/queue_management.py +0 -0
  229. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/region_counter.py +0 -0
  230. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/security_alarm.py +0 -0
  231. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/similarity_search.py +0 -0
  232. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/solutions.py +0 -0
  233. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/speed_estimation.py +0 -0
  234. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/streamlit_inference.py +0 -0
  235. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/templates/similarity-search.html +0 -0
  236. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/solutions/vision_eye.py +0 -0
  237. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/trackers/__init__.py +0 -0
  238. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/trackers/basetrack.py +0 -0
  239. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/trackers/bot_sort.py +0 -0
  240. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/trackers/byte_tracker.py +0 -0
  241. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/trackers/utils/__init__.py +0 -0
  242. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/trackers/utils/gmc.py +0 -0
  243. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  244. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/trackers/utils/matching.py +0 -0
  245. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/__init__.py +0 -0
  246. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/autobatch.py +0 -0
  247. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/autodevice.py +0 -0
  248. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/callbacks/__init__.py +0 -0
  249. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/callbacks/base.py +0 -0
  250. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/callbacks/clearml.py +0 -0
  251. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/callbacks/comet.py +0 -0
  252. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/callbacks/dvc.py +0 -0
  253. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/callbacks/hub.py +0 -0
  254. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/callbacks/mlflow.py +0 -0
  255. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/callbacks/neptune.py +0 -0
  256. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/callbacks/raytune.py +0 -0
  257. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  258. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/callbacks/wb.py +0 -0
  259. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/checks.py +0 -0
  260. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/dist.py +0 -0
  261. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/downloads.py +0 -0
  262. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/errors.py +0 -0
  263. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/export.py +0 -0
  264. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/files.py +0 -0
  265. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/instance.py +0 -0
  266. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/loss.py +0 -0
  267. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/ops.py +0 -0
  268. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/patches.py +0 -0
  269. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/plotting.py +0 -0
  270. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/tal.py +0 -0
  271. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/torch_utils.py +0 -0
  272. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/triton.py +0 -0
  273. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics/utils/tuner.py +0 -0
  274. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics.egg-info/SOURCES.txt +0 -0
  275. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics.egg-info/dependency_links.txt +0 -0
  276. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics.egg-info/entry_points.txt +0 -0
  277. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics.egg-info/requires.txt +0 -0
  278. {ultralytics-8.3.149 → ultralytics-8.3.151}/ultralytics.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics
3
- Version: 8.3.149
3
+ Version: 8.3.151
4
4
  Summary: Ultralytics YOLO 🚀 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
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
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.149"
3
+ __version__ = "8.3.151"
4
4
 
5
5
  import os
6
6
 
@@ -49,7 +49,6 @@ class BaseValidator:
49
49
  Attributes:
50
50
  args (SimpleNamespace): Configuration for the validator.
51
51
  dataloader (DataLoader): Dataloader to use for validation.
52
- pbar (tqdm): Progress bar to update during validation.
53
52
  model (nn.Module): Model to validate.
54
53
  data (dict): Data dictionary containing dataset information.
55
54
  device (torch.device): Device to use for validation.
@@ -93,20 +92,18 @@ class BaseValidator:
93
92
  eval_json: Evaluate and return JSON format of prediction statistics.
94
93
  """
95
94
 
96
- def __init__(self, dataloader=None, save_dir=None, pbar=None, args=None, _callbacks=None):
95
+ def __init__(self, dataloader=None, save_dir=None, args=None, _callbacks=None):
97
96
  """
98
97
  Initialize a BaseValidator instance.
99
98
 
100
99
  Args:
101
100
  dataloader (torch.utils.data.DataLoader, optional): Dataloader to be used for validation.
102
101
  save_dir (Path, optional): Directory to save results.
103
- pbar (tqdm.tqdm, optional): Progress bar for displaying progress.
104
102
  args (SimpleNamespace, optional): Configuration for the validator.
105
103
  _callbacks (dict, optional): Dictionary to store various callback functions.
106
104
  """
107
105
  self.args = get_cfg(overrides=args)
108
106
  self.dataloader = dataloader
109
- self.pbar = pbar
110
107
  self.stride = None
111
108
  self.data = None
112
109
  self.device = None
@@ -124,7 +121,7 @@ class BaseValidator:
124
121
  self.save_dir = save_dir or get_save_dir(self.args)
125
122
  (self.save_dir / "labels" if self.args.save_txt else self.save_dir).mkdir(parents=True, exist_ok=True)
126
123
  if self.args.conf is None:
127
- self.args.conf = 0.001 # default conf=0.001
124
+ self.args.conf = 0.01 if self.args.task == "obb" else 0.001 # reduce OBB val memory usage
128
125
  self.args.imgsz = check_imgsz(self.args.imgsz, max_dim=1)
129
126
 
130
127
  self.plots = {}
@@ -15,7 +15,6 @@ class FastSAMValidator(SegmentationValidator):
15
15
  Attributes:
16
16
  dataloader (torch.utils.data.DataLoader): The data loader object used for validation.
17
17
  save_dir (Path): The directory where validation results will be saved.
18
- pbar (tqdm.tqdm): A progress bar object for displaying validation progress.
19
18
  args (SimpleNamespace): Additional arguments for customization of the validation process.
20
19
  _callbacks (list): List of callback functions to be invoked during validation.
21
20
  metrics (SegmentMetrics): Segmentation metrics calculator for evaluation.
@@ -24,21 +23,20 @@ class FastSAMValidator(SegmentationValidator):
24
23
  __init__: Initialize the FastSAMValidator with custom settings for Fast SAM.
25
24
  """
26
25
 
27
- def __init__(self, dataloader=None, save_dir=None, pbar=None, args=None, _callbacks=None):
26
+ def __init__(self, dataloader=None, save_dir=None, args=None, _callbacks=None):
28
27
  """
29
28
  Initialize the FastSAMValidator class, setting the task to 'segment' and metrics to SegmentMetrics.
30
29
 
31
30
  Args:
32
31
  dataloader (torch.utils.data.DataLoader, optional): Dataloader to be used for validation.
33
32
  save_dir (Path, optional): Directory to save results.
34
- pbar (tqdm.tqdm, optional): Progress bar for displaying progress.
35
33
  args (SimpleNamespace, optional): Configuration for the validator.
36
34
  _callbacks (list, optional): List of callback functions to be invoked during validation.
37
35
 
38
36
  Notes:
39
37
  Plots for ConfusionMatrix and other related metrics are disabled in this class to avoid errors.
40
38
  """
41
- super().__init__(dataloader, save_dir, pbar, args, _callbacks)
39
+ super().__init__(dataloader, save_dir, args, _callbacks)
42
40
  self.args.task = "segment"
43
41
  self.args.plots = False # disable ConfusionMatrix and other plots to avoid errors
44
42
  self.metrics = SegmentMetrics(save_dir=self.save_dir)
@@ -48,14 +48,13 @@ class ClassificationValidator(BaseValidator):
48
48
  Torchvision classification models can also be passed to the 'model' argument, i.e. model='resnet18'.
49
49
  """
50
50
 
51
- def __init__(self, dataloader=None, save_dir=None, pbar=None, args=None, _callbacks=None):
51
+ def __init__(self, dataloader=None, save_dir=None, args=None, _callbacks=None):
52
52
  """
53
53
  Initialize ClassificationValidator with dataloader, save directory, and other parameters.
54
54
 
55
55
  Args:
56
56
  dataloader (torch.utils.data.DataLoader, optional): Dataloader to use for validation.
57
57
  save_dir (str | Path, optional): Directory to save results.
58
- pbar (bool, optional): Display a progress bar.
59
58
  args (dict, optional): Arguments containing model and validation configuration.
60
59
  _callbacks (list, optional): List of callback functions to be called during validation.
61
60
 
@@ -65,7 +64,7 @@ class ClassificationValidator(BaseValidator):
65
64
  >>> validator = ClassificationValidator(args=args)
66
65
  >>> validator()
67
66
  """
68
- super().__init__(dataloader, save_dir, pbar, args, _callbacks)
67
+ super().__init__(dataloader, save_dir, args, _callbacks)
69
68
  self.targets = None
70
69
  self.pred = None
71
70
  self.args.task = "classify"
@@ -42,18 +42,17 @@ class DetectionValidator(BaseValidator):
42
42
  >>> validator()
43
43
  """
44
44
 
45
- def __init__(self, dataloader=None, save_dir=None, pbar=None, args=None, _callbacks=None) -> None:
45
+ def __init__(self, dataloader=None, save_dir=None, args=None, _callbacks=None) -> None:
46
46
  """
47
47
  Initialize detection validator with necessary variables and settings.
48
48
 
49
49
  Args:
50
50
  dataloader (torch.utils.data.DataLoader, optional): Dataloader to use for validation.
51
51
  save_dir (Path, optional): Directory to save results.
52
- pbar (Any, optional): Progress bar for displaying progress.
53
52
  args (Dict[str, Any], optional): Arguments for the validator.
54
53
  _callbacks (List[Any], optional): List of callback functions.
55
54
  """
56
- super().__init__(dataloader, save_dir, pbar, args, _callbacks)
55
+ super().__init__(dataloader, save_dir, args, _callbacks)
57
56
  self.nt_per_class = None
58
57
  self.nt_per_image = None
59
58
  self.is_coco = False
@@ -40,7 +40,7 @@ class OBBValidator(DetectionValidator):
40
40
  >>> validator(model=args["model"])
41
41
  """
42
42
 
43
- def __init__(self, dataloader=None, save_dir=None, pbar=None, args=None, _callbacks=None) -> None:
43
+ def __init__(self, dataloader=None, save_dir=None, args=None, _callbacks=None) -> None:
44
44
  """
45
45
  Initialize OBBValidator and set task to 'obb', metrics to OBBMetrics.
46
46
 
@@ -50,11 +50,10 @@ class OBBValidator(DetectionValidator):
50
50
  Args:
51
51
  dataloader (torch.utils.data.DataLoader, optional): Dataloader to be used for validation.
52
52
  save_dir (str | Path, optional): Directory to save results.
53
- pbar (bool, optional): Display progress bar during validation.
54
- args (dict, optional): Arguments containing validation parameters.
53
+ args (dict | SimpleNamespace, optional): Arguments containing validation parameters.
55
54
  _callbacks (list, optional): List of callback functions to be called during validation.
56
55
  """
57
- super().__init__(dataloader, save_dir, pbar, args, _callbacks)
56
+ super().__init__(dataloader, save_dir, args, _callbacks)
58
57
  self.args.task = "obb"
59
58
  self.metrics = OBBMetrics(save_dir=self.save_dir, plot=True)
60
59
 
@@ -49,7 +49,7 @@ class PoseValidator(DetectionValidator):
49
49
  >>> validator()
50
50
  """
51
51
 
52
- def __init__(self, dataloader=None, save_dir=None, pbar=None, args=None, _callbacks=None) -> None:
52
+ def __init__(self, dataloader=None, save_dir=None, args=None, _callbacks=None) -> None:
53
53
  """
54
54
  Initialize a PoseValidator object for pose estimation validation.
55
55
 
@@ -59,7 +59,6 @@ class PoseValidator(DetectionValidator):
59
59
  Args:
60
60
  dataloader (torch.utils.data.DataLoader, optional): Dataloader to be used for validation.
61
61
  save_dir (Path | str, optional): Directory to save results.
62
- pbar (Any, optional): Progress bar for displaying progress.
63
62
  args (dict, optional): Arguments for the validator including task set to "pose".
64
63
  _callbacks (list, optional): List of callback functions to be executed during validation.
65
64
 
@@ -74,7 +73,7 @@ class PoseValidator(DetectionValidator):
74
73
  for OKS calculation and sets up PoseMetrics for evaluation. A warning is displayed when using Apple MPS
75
74
  due to a known bug with pose models.
76
75
  """
77
- super().__init__(dataloader, save_dir, pbar, args, _callbacks)
76
+ super().__init__(dataloader, save_dir, args, _callbacks)
78
77
  self.sigma = None
79
78
  self.kpt_shape = None
80
79
  self.args.task = "pose"
@@ -36,18 +36,17 @@ class SegmentationValidator(DetectionValidator):
36
36
  >>> validator()
37
37
  """
38
38
 
39
- def __init__(self, dataloader=None, save_dir=None, pbar=None, args=None, _callbacks=None) -> None:
39
+ def __init__(self, dataloader=None, save_dir=None, args=None, _callbacks=None) -> None:
40
40
  """
41
41
  Initialize SegmentationValidator and set task to 'segment', metrics to SegmentMetrics.
42
42
 
43
43
  Args:
44
44
  dataloader (torch.utils.data.DataLoader, optional): Dataloader to use for validation.
45
45
  save_dir (Path, optional): Directory to save results.
46
- pbar (Any, optional): Progress bar for displaying progress.
47
46
  args (namespace, optional): Arguments for the validator.
48
47
  _callbacks (list, optional): List of callback functions.
49
48
  """
50
- super().__init__(dataloader, save_dir, pbar, args, _callbacks)
49
+ super().__init__(dataloader, save_dir, args, _callbacks)
51
50
  self.plot_masks = None
52
51
  self.process = None
53
52
  self.args.task = "segment"
@@ -110,10 +110,12 @@ class ParkingPtsSelection:
110
110
  """Upload and display an image on the canvas, resizing it to fit within specified dimensions."""
111
111
  from PIL import Image, ImageTk # Scoped import because ImageTk requires tkinter package
112
112
 
113
- self.image = Image.open(self.filedialog.askopenfilename(filetypes=[("Image Files", "*.png *.jpg *.jpeg")]))
114
- if not self.image:
113
+ file = self.filedialog.askopenfilename(filetypes=[("Image Files", "*.png *.jpg *.jpeg")])
114
+ if not file:
115
+ LOGGER.info("No image selected.")
115
116
  return
116
117
 
118
+ self.image = Image.open(file)
117
119
  self.imgw, self.imgh = self.image.size
118
120
  aspect_ratio = self.imgw / self.imgh
119
121
  canvas_width = (
@@ -44,6 +44,7 @@ class TrackZone(BaseSolution):
44
44
  super().__init__(**kwargs)
45
45
  default_region = [(75, 75), (565, 75), (565, 285), (75, 285)]
46
46
  self.region = cv2.convexHull(np.array(self.region or default_region, dtype=np.int32))
47
+ self.mask = None
47
48
 
48
49
  def process(self, im0):
49
50
  """
@@ -66,10 +67,10 @@ class TrackZone(BaseSolution):
66
67
  """
67
68
  annotator = SolutionAnnotator(im0, line_width=self.line_width) # Initialize annotator
68
69
 
69
- # Create a mask for the region and extract tracks from the masked image
70
- mask = np.zeros_like(im0[:, :, 0])
71
- mask = cv2.fillPoly(mask, [self.region], 255)
72
- masked_frame = cv2.bitwise_and(im0, im0, mask=mask)
70
+ if self.mask is None: # Create a mask for the region
71
+ self.mask = np.zeros_like(im0[:, :, 0])
72
+ cv2.fillPoly(self.mask, [self.region], 255)
73
+ masked_frame = cv2.bitwise_and(im0, im0, mask=self.mask)
73
74
  self.extract_tracks(masked_frame)
74
75
 
75
76
  # Draw the region boundary
@@ -92,8 +92,6 @@ def on_predict_postprocess_end(predictor: object, persist: bool = False) -> None
92
92
  predictor.vid_path[i if is_stream else 0] = vid_path
93
93
 
94
94
  det = (result.obb if is_obb else result.boxes).cpu().numpy()
95
- if len(det) == 0:
96
- continue
97
95
  tracks = tracker.update(det, result.orig_img, getattr(result, "feats", None))
98
96
  if len(tracks) == 0:
99
97
  continue
@@ -172,7 +172,15 @@ def benchmark(
172
172
 
173
173
  # Validate
174
174
  results = exported_model.val(
175
- data=data, batch=1, imgsz=imgsz, plots=False, device=device, half=half, int8=int8, verbose=False
175
+ data=data,
176
+ batch=1,
177
+ imgsz=imgsz,
178
+ plots=False,
179
+ device=device,
180
+ half=half,
181
+ int8=int8,
182
+ verbose=False,
183
+ conf=0.001, # all the pre-set benchmark mAP values are based on conf=0.001
176
184
  )
177
185
  metric, speed = results.results_dict[key], results.speed["inference"]
178
186
  fps = round(1000 / (speed + eps), 2) # frames per second
@@ -515,7 +515,7 @@ class ConfusionMatrix(DataExportMixin):
515
515
  decimals (int): Number of decimal places to round the output values to.
516
516
 
517
517
  Returns:
518
- List[Dict[str, float]]: A list of dictionaries, each representing one predicted class with corresponding values for all actual classes.
518
+ (List[Dict[str, float]]): A list of dictionaries, each representing one predicted class with corresponding values for all actual classes.
519
519
 
520
520
  Examples:
521
521
  >>> results = model.val(data="coco8.yaml", plots=True)
@@ -1039,12 +1039,27 @@ class DetMetrics(SimpleClass, DataExportMixin):
1039
1039
  """Return dictionary of computed performance metrics and statistics."""
1040
1040
  return self.box.curves_results
1041
1041
 
1042
- def summary(self, **kwargs) -> List[Dict[str, Union[str, float]]]:
1043
- """Return per-class detection metrics with shared scalar values included."""
1042
+ def summary(self, normalize: bool = True, decimals: int = 5) -> List[Dict[str, Union[str, float]]]:
1043
+ """
1044
+ Generate a summarized representation of per-class detection metrics as a list of dictionaries. Includes shared
1045
+ scalar metrics (mAP, mAP50, mAP75) alongside precision, recall, and F1-score for each class.
1046
+
1047
+ Args:
1048
+ normalize (bool): For Detect metrics, everything is normalized by default [0-1].
1049
+ decimals (int): Number of decimal places to round the metrics values to.
1050
+
1051
+ Returns:
1052
+ (List[Dict[str, Union[str, float]]]): A list of dictionaries, each representing one class with corresponding metric values.
1053
+
1054
+ Examples:
1055
+ >>> results = model.val(data="coco8.yaml")
1056
+ >>> detection_summary = results.summary()
1057
+ >>> print(detection_summary)
1058
+ """
1044
1059
  scalars = {
1045
- "box-map": self.box.map,
1046
- "box-map50": self.box.map50,
1047
- "box-map75": self.box.map75,
1060
+ "box-map": round(self.box.map, decimals),
1061
+ "box-map50": round(self.box.map50, decimals),
1062
+ "box-map75": round(self.box.map75, decimals),
1048
1063
  }
1049
1064
  per_class = {
1050
1065
  "box-p": self.box.p,
@@ -1052,11 +1067,7 @@ class DetMetrics(SimpleClass, DataExportMixin):
1052
1067
  "box-f1": self.box.f1,
1053
1068
  }
1054
1069
  return [
1055
- {
1056
- "class_name": self.names[i] if hasattr(self, "names") and i in self.names else str(i),
1057
- **{k: v[i] for k, v in per_class.items()},
1058
- **scalars,
1059
- }
1070
+ {"class_name": self.names[i], **{k: round(v[i], decimals) for k, v in per_class.items()}, **scalars}
1060
1071
  for i in range(len(next(iter(per_class.values()), [])))
1061
1072
  ]
1062
1073
 
@@ -1200,15 +1211,30 @@ class SegmentMetrics(SimpleClass, DataExportMixin):
1200
1211
  """Return dictionary of computed performance metrics and statistics."""
1201
1212
  return self.box.curves_results + self.seg.curves_results
1202
1213
 
1203
- def summary(self, **kwargs) -> List[Dict[str, Union[str, float]]]:
1204
- """Return per-class segmentation metrics with shared scalar values included (box + mask)."""
1214
+ def summary(self, normalize: bool = True, decimals: int = 5) -> List[Dict[str, Union[str, float]]]:
1215
+ """
1216
+ Generate a summarized representation of per-class segmentation metrics as a list of dictionaries. Includes both
1217
+ box and mask scalar metrics (mAP, mAP50, mAP75) alongside precision, recall, and F1-score for each class.
1218
+
1219
+ Args:
1220
+ normalize (bool): For Segment metrics, everything is normalized by default [0-1].
1221
+ decimals (int): Number of decimal places to round the metrics values to.
1222
+
1223
+ Returns:
1224
+ (List[Dict[str, Union[str, float]]]): A list of dictionaries, each representing one class with corresponding metric values.
1225
+
1226
+ Examples:
1227
+ >>> results = model.val(data="coco8-seg.yaml")
1228
+ >>> seg_summary = results.summary(decimals=4)
1229
+ >>> print(seg_summary)
1230
+ """
1205
1231
  scalars = {
1206
- "box-map": self.box.map,
1207
- "box-map50": self.box.map50,
1208
- "box-map75": self.box.map75,
1209
- "mask-map": self.seg.map,
1210
- "mask-map50": self.seg.map50,
1211
- "mask-map75": self.seg.map75,
1232
+ "box-map": round(self.box.map, decimals),
1233
+ "box-map50": round(self.box.map50, decimals),
1234
+ "box-map75": round(self.box.map75, decimals),
1235
+ "mask-map": round(self.seg.map, decimals),
1236
+ "mask-map50": round(self.seg.map50, decimals),
1237
+ "mask-map75": round(self.seg.map75, decimals),
1212
1238
  }
1213
1239
  per_class = {
1214
1240
  "box-p": self.box.p,
@@ -1219,7 +1245,7 @@ class SegmentMetrics(SimpleClass, DataExportMixin):
1219
1245
  "mask-f1": self.seg.f1,
1220
1246
  }
1221
1247
  return [
1222
- {"class_name": self.names[i], **{k: v[i] for k, v in per_class.items()}, **scalars}
1248
+ {"class_name": self.names[i], **{k: round(v[i], decimals) for k, v in per_class.items()}, **scalars}
1223
1249
  for i in range(len(next(iter(per_class.values()), [])))
1224
1250
  ]
1225
1251
 
@@ -1363,15 +1389,30 @@ class PoseMetrics(SegmentMetrics):
1363
1389
  """Return dictionary of computed performance metrics and statistics."""
1364
1390
  return self.box.curves_results + self.pose.curves_results
1365
1391
 
1366
- def summary(self, **kwargs) -> List[Dict[str, Union[str, float]]]:
1367
- """Return per-class pose metrics with shared scalar values included (box + pose)."""
1392
+ def summary(self, normalize: bool = True, decimals: int = 5) -> List[Dict[str, Union[str, float]]]:
1393
+ """
1394
+ Generate a summarized representation of per-class pose metrics as a list of dictionaries. Includes both box and
1395
+ pose scalar metrics (mAP, mAP50, mAP75) alongside precision, recall, and F1-score for each class.
1396
+
1397
+ Args:
1398
+ normalize (bool): For Pose metrics, everything is normalized by default [0-1].
1399
+ decimals (int): Number of decimal places to round the metrics values to.
1400
+
1401
+ Returns:
1402
+ (List[Dict[str, Union[str, float]]]): A list of dictionaries, each representing one class with corresponding metric values.
1403
+
1404
+ Examples:
1405
+ >>> results = model.val(data="coco8-pose.yaml")
1406
+ >>> pose_summary = results.summary(decimals=4)
1407
+ >>> print(pose_summary)
1408
+ """
1368
1409
  scalars = {
1369
- "box-map": self.box.map,
1370
- "box-map50": self.box.map50,
1371
- "box-map75": self.box.map75,
1372
- "pose-map": self.pose.map,
1373
- "pose-map50": self.pose.map50,
1374
- "pose-map75": self.pose.map75,
1410
+ "box-map": round(self.box.map, decimals),
1411
+ "box-map50": round(self.box.map50, decimals),
1412
+ "box-map75": round(self.box.map75, decimals),
1413
+ "pose-map": round(self.pose.map, decimals),
1414
+ "pose-map50": round(self.pose.map50, decimals),
1415
+ "pose-map75": round(self.pose.map75, decimals),
1375
1416
  }
1376
1417
  per_class = {
1377
1418
  "box-p": self.box.p,
@@ -1382,7 +1423,7 @@ class PoseMetrics(SegmentMetrics):
1382
1423
  "pose-f1": self.pose.f1,
1383
1424
  }
1384
1425
  return [
1385
- {"class_name": self.names[i], **{k: v[i] for k, v in per_class.items()}, **scalars}
1426
+ {"class_name": self.names[i], **{k: round(v[i], decimals) for k, v in per_class.items()}, **scalars}
1386
1427
  for i in range(len(next(iter(per_class.values()), [])))
1387
1428
  ]
1388
1429
 
@@ -1443,9 +1484,23 @@ class ClassifyMetrics(SimpleClass, DataExportMixin):
1443
1484
  """Return a list of curves for accessing specific metrics curves."""
1444
1485
  return []
1445
1486
 
1446
- def summary(self, **kwargs) -> List[Dict[str, float]]:
1447
- """Return a single-row summary for classification metrics (top1/top5)."""
1448
- return [{"classify-top1": self.top1, "classify-top5": self.top5}]
1487
+ def summary(self, normalize: bool = True, decimals: int = 5) -> List[Dict[str, float]]:
1488
+ """
1489
+ Generate a single-row summary of classification metrics (Top-1 and Top-5 accuracy).
1490
+
1491
+ Args:
1492
+ normalize (bool): For Classify metrics, everything is normalized by default [0-1].
1493
+ decimals (int): Number of decimal places to round the metrics values to.
1494
+
1495
+ Returns:
1496
+ (List[Dict[str, float]]): A list with one dictionary containing Top-1 and Top-5 classification accuracy.
1497
+
1498
+ Examples:
1499
+ >>> results = model.val(data="imagenet10")
1500
+ >>> classify_summary = results.summary(decimals=4)
1501
+ >>> print(classify_summary)
1502
+ """
1503
+ return [{"classify-top1": round(self.top1, decimals), "classify-top5": round(self.top5, decimals)}]
1449
1504
 
1450
1505
 
1451
1506
  class OBBMetrics(SimpleClass, DataExportMixin):
@@ -1547,15 +1602,30 @@ class OBBMetrics(SimpleClass, DataExportMixin):
1547
1602
  """Return a list of curves for accessing specific metrics curves."""
1548
1603
  return []
1549
1604
 
1550
- def summary(self, **kwargs) -> List[Dict[str, Union[str, float]]]:
1551
- """Return per-class detection metrics with shared scalar values included."""
1605
+ def summary(self, normalize: bool = True, decimals: int = 5) -> List[Dict[str, Union[str, float]]]:
1606
+ """
1607
+ Generate a summarized representation of per-class detection metrics as a list of dictionaries. Includes shared
1608
+ scalar metrics (mAP, mAP50, mAP75) along with precision, recall, and F1-score for each class.
1609
+
1610
+ Args:
1611
+ normalize (bool): For OBB metrics, everything is normalized by default [0-1].
1612
+ decimals (int): Number of decimal places to round the metrics values to.
1613
+
1614
+ Returns:
1615
+ (List[Dict[str, Union[str, float]]]): A list of dictionaries, each representing one class with detection metrics.
1616
+
1617
+ Examples:
1618
+ >>> results = model.val(data="dota8.yaml")
1619
+ >>> detection_summary = results.summary(decimals=4)
1620
+ >>> print(detection_summary)
1621
+ """
1552
1622
  scalars = {
1553
- "box-map": self.box.map,
1554
- "box-map50": self.box.map50,
1555
- "box-map75": self.box.map75,
1623
+ "box-map": round(self.box.map, decimals),
1624
+ "box-map50": round(self.box.map50, decimals),
1625
+ "box-map75": round(self.box.map75, decimals),
1556
1626
  }
1557
1627
  per_class = {"box-p": self.box.p, "box-r": self.box.r, "box-f1": self.box.f1}
1558
1628
  return [
1559
- {"class_name": self.names[i], **{k: v[i] for k, v in per_class.items()}, **scalars}
1629
+ {"class_name": self.names[i], **{k: round(v[i], decimals) for k, v in per_class.items()}, **scalars}
1560
1630
  for i in range(len(next(iter(per_class.values()), [])))
1561
1631
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics
3
- Version: 8.3.149
3
+ Version: 8.3.151
4
4
  Summary: Ultralytics YOLO 🚀 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
6
6
  Maintainer-email: Ultralytics <hello@ultralytics.com>
File without changes
File without changes
File without changes