ultralytics 8.2.56__tar.gz → 8.2.57__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.

Potentially problematic release.


This version of ultralytics might be problematic. Click here for more details.

Files changed (234) hide show
  1. {ultralytics-8.2.56/ultralytics.egg-info → ultralytics-8.2.57}/PKG-INFO +1 -1
  2. ultralytics-8.2.57/tests/test_solutions.py +90 -0
  3. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/__init__.py +1 -1
  4. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/data/dataset.py +2 -2
  5. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/engine/model.py +2 -0
  6. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/solutions/distance_calculation.py +1 -1
  7. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/solutions/heatmap.py +2 -2
  8. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/solutions/object_counter.py +3 -3
  9. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/solutions/queue_management.py +4 -4
  10. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/plotting.py +8 -9
  11. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/torch_utils.py +1 -0
  12. {ultralytics-8.2.56 → ultralytics-8.2.57/ultralytics.egg-info}/PKG-INFO +1 -1
  13. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics.egg-info/SOURCES.txt +2 -0
  14. {ultralytics-8.2.56 → ultralytics-8.2.57}/LICENSE +0 -0
  15. {ultralytics-8.2.56 → ultralytics-8.2.57}/README.md +0 -0
  16. {ultralytics-8.2.56 → ultralytics-8.2.57}/pyproject.toml +0 -0
  17. {ultralytics-8.2.56 → ultralytics-8.2.57}/setup.cfg +0 -0
  18. {ultralytics-8.2.56 → ultralytics-8.2.57}/tests/__init__.py +0 -0
  19. {ultralytics-8.2.56 → ultralytics-8.2.57}/tests/conftest.py +0 -0
  20. {ultralytics-8.2.56 → ultralytics-8.2.57}/tests/test_cli.py +0 -0
  21. {ultralytics-8.2.56 → ultralytics-8.2.57}/tests/test_cuda.py +0 -0
  22. {ultralytics-8.2.56 → ultralytics-8.2.57}/tests/test_engine.py +0 -0
  23. {ultralytics-8.2.56 → ultralytics-8.2.57}/tests/test_explorer.py +0 -0
  24. {ultralytics-8.2.56 → ultralytics-8.2.57}/tests/test_exports.py +0 -0
  25. {ultralytics-8.2.56 → ultralytics-8.2.57}/tests/test_integrations.py +0 -0
  26. {ultralytics-8.2.56 → ultralytics-8.2.57}/tests/test_python.py +0 -0
  27. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/assets/bus.jpg +0 -0
  28. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/assets/zidane.jpg +0 -0
  29. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/__init__.py +0 -0
  30. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  31. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  32. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  33. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  34. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  35. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  36. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  37. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  38. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  39. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  40. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  41. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  42. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  43. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/coco.yaml +0 -0
  44. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  45. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  46. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  47. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  48. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  49. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  50. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  51. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  52. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  53. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  54. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/signature.yaml +0 -0
  55. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  56. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/datasets/xView.yaml +0 -0
  57. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/default.yaml +0 -0
  58. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  59. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  60. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  61. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  62. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  63. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  64. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  65. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  66. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  67. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  68. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  69. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  70. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  71. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  72. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  73. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  74. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  75. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  76. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  77. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  78. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  79. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  80. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  81. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  82. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  83. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  84. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  85. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  86. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  87. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  88. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  89. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  90. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  91. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  92. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  93. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  94. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  95. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  96. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  97. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  98. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  99. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  100. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/data/__init__.py +0 -0
  101. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/data/annotator.py +0 -0
  102. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/data/augment.py +0 -0
  103. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/data/base.py +0 -0
  104. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/data/build.py +0 -0
  105. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/data/converter.py +0 -0
  106. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/data/explorer/__init__.py +0 -0
  107. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/data/explorer/explorer.py +0 -0
  108. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/data/explorer/gui/__init__.py +0 -0
  109. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/data/explorer/gui/dash.py +0 -0
  110. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/data/explorer/utils.py +0 -0
  111. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/data/loaders.py +0 -0
  112. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/data/split_dota.py +0 -0
  113. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/data/utils.py +0 -0
  114. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/engine/__init__.py +0 -0
  115. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/engine/exporter.py +0 -0
  116. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/engine/predictor.py +0 -0
  117. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/engine/results.py +0 -0
  118. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/engine/trainer.py +0 -0
  119. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/engine/tuner.py +0 -0
  120. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/engine/validator.py +0 -0
  121. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/hub/__init__.py +0 -0
  122. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/hub/auth.py +0 -0
  123. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/hub/session.py +0 -0
  124. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/hub/utils.py +0 -0
  125. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/__init__.py +0 -0
  126. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/fastsam/__init__.py +0 -0
  127. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/fastsam/model.py +0 -0
  128. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/fastsam/predict.py +0 -0
  129. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/fastsam/prompt.py +0 -0
  130. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/fastsam/utils.py +0 -0
  131. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/fastsam/val.py +0 -0
  132. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/nas/__init__.py +0 -0
  133. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/nas/model.py +0 -0
  134. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/nas/predict.py +0 -0
  135. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/nas/val.py +0 -0
  136. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/rtdetr/__init__.py +0 -0
  137. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/rtdetr/model.py +0 -0
  138. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/rtdetr/predict.py +0 -0
  139. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/rtdetr/train.py +0 -0
  140. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/rtdetr/val.py +0 -0
  141. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/sam/__init__.py +0 -0
  142. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/sam/amg.py +0 -0
  143. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/sam/build.py +0 -0
  144. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/sam/model.py +0 -0
  145. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/sam/modules/__init__.py +0 -0
  146. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/sam/modules/decoders.py +0 -0
  147. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/sam/modules/encoders.py +0 -0
  148. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/sam/modules/sam.py +0 -0
  149. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  150. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/sam/modules/transformer.py +0 -0
  151. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/sam/predict.py +0 -0
  152. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/utils/__init__.py +0 -0
  153. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/utils/loss.py +0 -0
  154. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/utils/ops.py +0 -0
  155. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/__init__.py +0 -0
  156. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/classify/__init__.py +0 -0
  157. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/classify/predict.py +0 -0
  158. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/classify/train.py +0 -0
  159. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/classify/val.py +0 -0
  160. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/detect/__init__.py +0 -0
  161. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/detect/predict.py +0 -0
  162. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/detect/train.py +0 -0
  163. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/detect/val.py +0 -0
  164. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/model.py +0 -0
  165. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/obb/__init__.py +0 -0
  166. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/obb/predict.py +0 -0
  167. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/obb/train.py +0 -0
  168. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/obb/val.py +0 -0
  169. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/pose/__init__.py +0 -0
  170. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/pose/predict.py +0 -0
  171. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/pose/train.py +0 -0
  172. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/pose/val.py +0 -0
  173. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/segment/__init__.py +0 -0
  174. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/segment/predict.py +0 -0
  175. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/segment/train.py +0 -0
  176. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/segment/val.py +0 -0
  177. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/world/__init__.py +0 -0
  178. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/world/train.py +0 -0
  179. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/models/yolo/world/train_world.py +0 -0
  180. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/nn/__init__.py +0 -0
  181. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/nn/autobackend.py +0 -0
  182. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/nn/modules/__init__.py +0 -0
  183. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/nn/modules/block.py +0 -0
  184. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/nn/modules/conv.py +0 -0
  185. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/nn/modules/head.py +0 -0
  186. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/nn/modules/transformer.py +0 -0
  187. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/nn/modules/utils.py +0 -0
  188. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/nn/tasks.py +0 -0
  189. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/solutions/__init__.py +0 -0
  190. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/solutions/ai_gym.py +0 -0
  191. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/solutions/analytics.py +0 -0
  192. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/solutions/parking_management.py +0 -0
  193. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/solutions/speed_estimation.py +0 -0
  194. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/solutions/streamlit_inference.py +0 -0
  195. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/trackers/__init__.py +0 -0
  196. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/trackers/basetrack.py +0 -0
  197. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/trackers/bot_sort.py +0 -0
  198. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/trackers/byte_tracker.py +0 -0
  199. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/trackers/track.py +0 -0
  200. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/trackers/utils/__init__.py +0 -0
  201. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/trackers/utils/gmc.py +0 -0
  202. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  203. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/trackers/utils/matching.py +0 -0
  204. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/__init__.py +0 -0
  205. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/autobatch.py +0 -0
  206. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/benchmarks.py +0 -0
  207. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/callbacks/__init__.py +0 -0
  208. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/callbacks/base.py +0 -0
  209. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/callbacks/clearml.py +0 -0
  210. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/callbacks/comet.py +0 -0
  211. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/callbacks/dvc.py +0 -0
  212. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/callbacks/hub.py +0 -0
  213. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/callbacks/mlflow.py +0 -0
  214. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/callbacks/neptune.py +0 -0
  215. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/callbacks/raytune.py +0 -0
  216. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  217. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/callbacks/wb.py +0 -0
  218. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/checks.py +0 -0
  219. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/dist.py +0 -0
  220. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/downloads.py +0 -0
  221. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/errors.py +0 -0
  222. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/files.py +0 -0
  223. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/instance.py +0 -0
  224. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/loss.py +0 -0
  225. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/metrics.py +0 -0
  226. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/ops.py +0 -0
  227. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/patches.py +0 -0
  228. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/tal.py +0 -0
  229. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/triton.py +0 -0
  230. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics/utils/tuner.py +0 -0
  231. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics.egg-info/dependency_links.txt +0 -0
  232. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics.egg-info/entry_points.txt +0 -0
  233. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics.egg-info/requires.txt +0 -0
  234. {ultralytics-8.2.56 → ultralytics-8.2.57}/ultralytics.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.2.56
3
+ Version: 8.2.57
4
4
  Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author: Glenn Jocher, Ayush Chaurasia, Jing Qiu
6
6
  Maintainer: Glenn Jocher, Ayush Chaurasia, Jing Qiu
@@ -0,0 +1,90 @@
1
+ # Ultralytics YOLO 🚀, AGPL-3.0 license
2
+
3
+ import cv2
4
+ import pytest
5
+
6
+ from ultralytics import YOLO, solutions
7
+ from ultralytics.utils.downloads import safe_download
8
+
9
+ MAJOR_SOLUTIONS_DEMO = "https://github.com/ultralytics/assets/releases/download/v0.0.0/solutions_ci_demo.mp4"
10
+ WORKOUTS_SOLUTION_DEMO = "https://github.com/ultralytics/assets/releases/download/v0.0.0/solution_ci_pose_demo.mp4"
11
+
12
+
13
+ @pytest.mark.slow
14
+ def test_major_solutions():
15
+ """Test the object counting, heatmap, speed estimation and queue management solution."""
16
+
17
+ safe_download(url=MAJOR_SOLUTIONS_DEMO)
18
+ model = YOLO("yolov8n.pt")
19
+ names = model.names
20
+ cap = cv2.VideoCapture("solutions_ci_demo.mp4")
21
+ assert cap.isOpened(), "Error reading video file"
22
+ region_points = [(20, 400), (1080, 404), (1080, 360), (20, 360)]
23
+ counter = solutions.ObjectCounter(reg_pts=region_points, names=names, view_img=False)
24
+ heatmap = solutions.Heatmap(colormap=cv2.COLORMAP_PARULA, names=names, view_img=False)
25
+ speed = solutions.SpeedEstimator(reg_pts=region_points, names=names, view_img=False)
26
+ queue = solutions.QueueManager(names=names, reg_pts=region_points, view_img=False)
27
+ while cap.isOpened():
28
+ success, im0 = cap.read()
29
+ if not success:
30
+ break
31
+ original_im0 = im0.copy()
32
+ tracks = model.track(im0, persist=True, show=False)
33
+ _ = counter.start_counting(original_im0.copy(), tracks)
34
+ _ = heatmap.generate_heatmap(original_im0.copy(), tracks)
35
+ _ = speed.estimate_speed(original_im0.copy(), tracks)
36
+ _ = queue.process_queue(original_im0.copy(), tracks)
37
+ cap.release()
38
+ cv2.destroyAllWindows()
39
+
40
+
41
+ @pytest.mark.slow
42
+ def test_aigym():
43
+ """Test the workouts monitoring solution."""
44
+
45
+ safe_download(url=WORKOUTS_SOLUTION_DEMO)
46
+ model = YOLO("yolov8n-pose.pt")
47
+ cap = cv2.VideoCapture("solution_ci_pose_demo.mp4")
48
+ assert cap.isOpened(), "Error reading video file"
49
+ gym_object = solutions.AIGym(line_thickness=2, pose_type="squat", kpts_to_check=[5, 11, 13])
50
+ while cap.isOpened():
51
+ success, im0 = cap.read()
52
+ if not success:
53
+ break
54
+ results = model.track(im0, verbose=False)
55
+ _ = gym_object.start_counting(im0, results)
56
+ cap.release()
57
+ cv2.destroyAllWindows()
58
+
59
+
60
+ @pytest.mark.slow
61
+ def test_instance_segmentation():
62
+ """Test the instance segmentation solution."""
63
+
64
+ from ultralytics.utils.plotting import Annotator, colors
65
+
66
+ model = YOLO("yolov8n-seg.pt")
67
+ names = model.names
68
+ cap = cv2.VideoCapture("solutions_ci_demo.mp4")
69
+ assert cap.isOpened(), "Error reading video file"
70
+ while cap.isOpened():
71
+ success, im0 = cap.read()
72
+ if not success:
73
+ break
74
+ results = model.predict(im0)
75
+ annotator = Annotator(im0, line_width=2)
76
+ if results[0].masks is not None:
77
+ clss = results[0].boxes.cls.cpu().tolist()
78
+ masks = results[0].masks.xy
79
+ for mask, cls in zip(masks, clss):
80
+ color = colors(int(cls), True)
81
+ annotator.seg_bbox(mask=mask, mask_color=color, label=names[int(cls)])
82
+ cap.release()
83
+ cv2.destroyAllWindows()
84
+
85
+
86
+ @pytest.mark.slow
87
+ def test_streamlit_predict():
88
+ """Test streamlit predict live inference solution."""
89
+
90
+ solutions.inference()
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.2.56"
3
+ __version__ = "8.2.57"
4
4
 
5
5
  import os
6
6
 
@@ -15,7 +15,7 @@ from torch.utils.data import ConcatDataset
15
15
 
16
16
  from ultralytics.utils import LOCAL_RANK, NUM_THREADS, TQDM, colorstr
17
17
  from ultralytics.utils.ops import resample_segments
18
- from ultralytics.utils.torch_utils import TORCH_1_13
18
+ from ultralytics.utils.torch_utils import TORCHVISION_0_18
19
19
 
20
20
  from .augment import (
21
21
  Compose,
@@ -417,7 +417,7 @@ class ClassificationDataset:
417
417
  import torchvision # scope for faster 'import ultralytics'
418
418
 
419
419
  # Base class assigned as attribute rather than used as base class to allow for scoping slow torchvision import
420
- if TORCH_1_13: # 'allow_empty' argument first introduced in torch 1.13
420
+ if TORCHVISION_0_18: # 'allow_empty' argument first introduced in torchvision 0.18
421
421
  self.base = torchvision.datasets.ImageFolder(root=root, allow_empty=True)
422
422
  else:
423
423
  self.base = torchvision.datasets.ImageFolder(root=root)
@@ -311,11 +311,13 @@ class Model(nn.Module):
311
311
  AssertionError: If the model is not a PyTorch model.
312
312
  """
313
313
  self._check_is_pytorch_model()
314
+ from copy import deepcopy
314
315
  from datetime import datetime
315
316
 
316
317
  from ultralytics import __version__
317
318
 
318
319
  updates = {
320
+ "model": deepcopy(self.model).half() if isinstance(self.model, nn.Module) else self.model,
319
321
  "date": datetime.now().isoformat(),
320
322
  "version": __version__,
321
323
  "license": "AGPL-3.0 License (https://ultralytics.com/license)",
@@ -24,7 +24,7 @@ class DistanceCalculation:
24
24
  Initializes the DistanceCalculation class with the given parameters.
25
25
 
26
26
  Args:
27
- names (dict): Dictionary mapping class indices to class names.
27
+ names (dict): Dictionary of classes names.
28
28
  pixels_per_meter (int, optional): Conversion factor from pixels to meters. Defaults to 10.
29
29
  view_img (bool, optional): Flag to indicate if the video stream should be displayed. Defaults to False.
30
30
  line_thickness (int, optional): Thickness of the lines drawn on the image. Defaults to 2.
@@ -18,7 +18,7 @@ class Heatmap:
18
18
 
19
19
  def __init__(
20
20
  self,
21
- classes_names,
21
+ names,
22
22
  imw=0,
23
23
  imh=0,
24
24
  colormap=cv2.COLORMAP_JET,
@@ -44,7 +44,7 @@ class Heatmap:
44
44
  self.shape = shape
45
45
 
46
46
  self.initialized = False
47
- self.names = classes_names # Classes names
47
+ self.names = names # Classes names
48
48
 
49
49
  # Image information
50
50
  self.imw = imw
@@ -17,7 +17,7 @@ class ObjectCounter:
17
17
 
18
18
  def __init__(
19
19
  self,
20
- classes_names,
20
+ names,
21
21
  reg_pts=None,
22
22
  count_reg_color=(255, 0, 255),
23
23
  count_txt_color=(0, 0, 0),
@@ -37,7 +37,7 @@ class ObjectCounter:
37
37
  Initializes the ObjectCounter with various tracking and counting parameters.
38
38
 
39
39
  Args:
40
- classes_names (dict): Dictionary of class names.
40
+ names (dict): Dictionary of class names.
41
41
  reg_pts (list): List of points defining the counting region.
42
42
  count_reg_color (tuple): RGB color of the counting region.
43
43
  count_txt_color (tuple): RGB color of the count text.
@@ -72,7 +72,7 @@ class ObjectCounter:
72
72
  self.view_in_counts = view_in_counts
73
73
  self.view_out_counts = view_out_counts
74
74
 
75
- self.names = classes_names # Classes names
75
+ self.names = names # Classes names
76
76
  self.annotator = None # Annotator
77
77
  self.window_name = "Ultralytics YOLOv8 Object Counter"
78
78
 
@@ -17,7 +17,7 @@ class QueueManager:
17
17
 
18
18
  def __init__(
19
19
  self,
20
- classes_names,
20
+ names,
21
21
  reg_pts=None,
22
22
  line_thickness=2,
23
23
  track_thickness=2,
@@ -34,7 +34,7 @@ class QueueManager:
34
34
  Initializes the QueueManager with specified parameters for tracking and counting objects.
35
35
 
36
36
  Args:
37
- classes_names (dict): A dictionary mapping class IDs to class names.
37
+ names (dict): A dictionary mapping class IDs to class names.
38
38
  reg_pts (list of tuples, optional): Points defining the counting region polygon. Defaults to a predefined
39
39
  rectangle.
40
40
  line_thickness (int, optional): Thickness of the annotation lines. Defaults to 2.
@@ -69,7 +69,7 @@ class QueueManager:
69
69
  self.view_queue_counts = view_queue_counts
70
70
  self.fontsize = fontsize
71
71
 
72
- self.names = classes_names # Class names
72
+ self.names = names # Class names
73
73
  self.annotator = None # Annotator
74
74
  self.window_name = "Ultralytics YOLOv8 Queue Manager"
75
75
 
@@ -139,7 +139,7 @@ class QueueManager:
139
139
 
140
140
  def display_frames(self):
141
141
  """Displays the current frame with annotations."""
142
- if self.env_check:
142
+ if self.env_check and self.view_img:
143
143
  self.annotator.draw_region(reg_pts=self.reg_pts, thickness=self.region_thickness, color=self.region_color)
144
144
  cv2.namedWindow(self.window_name)
145
145
  cv2.imshow(self.window_name, self.im0)
@@ -726,20 +726,18 @@ class Annotator:
726
726
  )
727
727
  cv2.putText(self.im, stage_text, stage_text_position, 0, self.sf, txt_color, self.tf)
728
728
 
729
- def seg_bbox(self, mask, mask_color=(255, 0, 255), det_label=None, track_label=None):
729
+ def seg_bbox(self, mask, mask_color=(255, 0, 255), label=None, txt_color=(255, 255, 255)):
730
730
  """
731
731
  Function for drawing segmented object in bounding box shape.
732
732
 
733
733
  Args:
734
734
  mask (list): masks data list for instance segmentation area plotting
735
- mask_color (tuple): mask foreground color
736
- det_label (str): Detection label text
737
- track_label (str): Tracking label text
735
+ mask_color (RGB): mask foreground color
736
+ label (str): Detection label text
737
+ txt_color (RGB): text color
738
738
  """
739
739
 
740
740
  cv2.polylines(self.im, [np.int32([mask])], isClosed=True, color=mask_color, thickness=2)
741
-
742
- label = f"Track ID: {track_label}" if track_label else det_label
743
741
  text_size, _ = cv2.getTextSize(label, 0, self.sf, self.tf)
744
742
 
745
743
  cv2.rectangle(
@@ -750,9 +748,10 @@ class Annotator:
750
748
  -1,
751
749
  )
752
750
 
753
- cv2.putText(
754
- self.im, label, (int(mask[0][0]) - text_size[0] // 2, int(mask[0][1])), 0, self.sf, (255, 255, 255), self.tf
755
- )
751
+ if label:
752
+ cv2.putText(
753
+ self.im, label, (int(mask[0][0]) - text_size[0] // 2, int(mask[0][1])), 0, self.sf, txt_color, self.tf
754
+ )
756
755
 
757
756
  def plot_distance_and_line(self, distance_m, distance_mm, centroids, line_color, centroid_color):
758
757
  """
@@ -40,6 +40,7 @@ TORCH_2_0 = check_version(torch.__version__, "2.0.0")
40
40
  TORCHVISION_0_10 = check_version(TORCHVISION_VERSION, "0.10.0")
41
41
  TORCHVISION_0_11 = check_version(TORCHVISION_VERSION, "0.11.0")
42
42
  TORCHVISION_0_13 = check_version(TORCHVISION_VERSION, "0.13.0")
43
+ TORCHVISION_0_18 = check_version(TORCHVISION_VERSION, "0.18.0")
43
44
 
44
45
 
45
46
  @contextmanager
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.2.56
3
+ Version: 8.2.57
4
4
  Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author: Glenn Jocher, Ayush Chaurasia, Jing Qiu
6
6
  Maintainer: Glenn Jocher, Ayush Chaurasia, Jing Qiu
@@ -8,6 +8,7 @@ tests/test_explorer.py
8
8
  tests/test_exports.py
9
9
  tests/test_integrations.py
10
10
  tests/test_python.py
11
+ tests/test_solutions.py
11
12
  ultralytics/__init__.py
12
13
  ultralytics.egg-info/PKG-INFO
13
14
  ultralytics.egg-info/SOURCES.txt
@@ -24,6 +25,7 @@ ultralytics/../tests/test_explorer.py
24
25
  ultralytics/../tests/test_exports.py
25
26
  ultralytics/../tests/test_integrations.py
26
27
  ultralytics/../tests/test_python.py
28
+ ultralytics/../tests/test_solutions.py
27
29
  ultralytics/assets/bus.jpg
28
30
  ultralytics/assets/zidane.jpg
29
31
  ultralytics/cfg/__init__.py
File without changes
File without changes
File without changes