ultralytics 8.2.21__tar.gz → 8.2.22__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 (223) hide show
  1. {ultralytics-8.2.21 → ultralytics-8.2.22}/PKG-INFO +1 -1
  2. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/__init__.py +1 -1
  3. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/data/augment.py +67 -10
  4. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/solutions/__init__.py +1 -1
  5. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/solutions/analytics.py +2 -0
  6. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/solutions/parking_management.py +24 -20
  7. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics.egg-info/PKG-INFO +1 -1
  8. {ultralytics-8.2.21 → ultralytics-8.2.22}/LICENSE +0 -0
  9. {ultralytics-8.2.21 → ultralytics-8.2.22}/README.md +0 -0
  10. {ultralytics-8.2.21 → ultralytics-8.2.22}/pyproject.toml +0 -0
  11. {ultralytics-8.2.21 → ultralytics-8.2.22}/setup.cfg +0 -0
  12. {ultralytics-8.2.21 → ultralytics-8.2.22}/tests/__init__.py +0 -0
  13. {ultralytics-8.2.21 → ultralytics-8.2.22}/tests/conftest.py +0 -0
  14. {ultralytics-8.2.21 → ultralytics-8.2.22}/tests/test_cli.py +0 -0
  15. {ultralytics-8.2.21 → ultralytics-8.2.22}/tests/test_cuda.py +0 -0
  16. {ultralytics-8.2.21 → ultralytics-8.2.22}/tests/test_engine.py +0 -0
  17. {ultralytics-8.2.21 → ultralytics-8.2.22}/tests/test_explorer.py +0 -0
  18. {ultralytics-8.2.21 → ultralytics-8.2.22}/tests/test_exports.py +0 -0
  19. {ultralytics-8.2.21 → ultralytics-8.2.22}/tests/test_integrations.py +0 -0
  20. {ultralytics-8.2.21 → ultralytics-8.2.22}/tests/test_python.py +0 -0
  21. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/assets/bus.jpg +0 -0
  22. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/assets/zidane.jpg +0 -0
  23. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/__init__.py +0 -0
  24. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  25. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  26. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  27. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  28. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  29. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  30. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  31. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  32. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  33. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  34. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  35. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  36. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  37. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/coco.yaml +0 -0
  38. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  39. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  40. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  41. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  42. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  43. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  44. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  45. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  46. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  47. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  48. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/signature.yaml +0 -0
  49. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  50. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/datasets/xView.yaml +0 -0
  51. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/default.yaml +0 -0
  52. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  53. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  54. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  55. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  56. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  57. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  58. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  59. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  60. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  61. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  62. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  63. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  64. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  65. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  66. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  67. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  68. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  69. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  70. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  71. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  72. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  73. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  74. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  75. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  76. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  77. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  78. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  79. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  80. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  81. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  82. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  83. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  84. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  85. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/data/__init__.py +0 -0
  86. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/data/annotator.py +0 -0
  87. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/data/base.py +0 -0
  88. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/data/build.py +0 -0
  89. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/data/converter.py +0 -0
  90. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/data/dataset.py +0 -0
  91. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/data/explorer/__init__.py +0 -0
  92. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/data/explorer/explorer.py +0 -0
  93. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/data/explorer/gui/__init__.py +0 -0
  94. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/data/explorer/gui/dash.py +0 -0
  95. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/data/explorer/utils.py +0 -0
  96. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/data/loaders.py +0 -0
  97. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/data/split_dota.py +0 -0
  98. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/data/utils.py +0 -0
  99. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/engine/__init__.py +0 -0
  100. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/engine/exporter.py +0 -0
  101. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/engine/model.py +0 -0
  102. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/engine/predictor.py +0 -0
  103. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/engine/results.py +0 -0
  104. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/engine/trainer.py +0 -0
  105. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/engine/tuner.py +0 -0
  106. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/engine/validator.py +0 -0
  107. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/hub/__init__.py +0 -0
  108. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/hub/auth.py +0 -0
  109. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/hub/session.py +0 -0
  110. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/hub/utils.py +0 -0
  111. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/__init__.py +0 -0
  112. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/fastsam/__init__.py +0 -0
  113. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/fastsam/model.py +0 -0
  114. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/fastsam/predict.py +0 -0
  115. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/fastsam/prompt.py +0 -0
  116. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/fastsam/utils.py +0 -0
  117. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/fastsam/val.py +0 -0
  118. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/nas/__init__.py +0 -0
  119. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/nas/model.py +0 -0
  120. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/nas/predict.py +0 -0
  121. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/nas/val.py +0 -0
  122. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/rtdetr/__init__.py +0 -0
  123. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/rtdetr/model.py +0 -0
  124. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/rtdetr/predict.py +0 -0
  125. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/rtdetr/train.py +0 -0
  126. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/rtdetr/val.py +0 -0
  127. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/sam/__init__.py +0 -0
  128. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/sam/amg.py +0 -0
  129. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/sam/build.py +0 -0
  130. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/sam/model.py +0 -0
  131. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/sam/modules/__init__.py +0 -0
  132. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/sam/modules/decoders.py +0 -0
  133. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/sam/modules/encoders.py +0 -0
  134. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/sam/modules/sam.py +0 -0
  135. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  136. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/sam/modules/transformer.py +0 -0
  137. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/sam/predict.py +0 -0
  138. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/utils/__init__.py +0 -0
  139. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/utils/loss.py +0 -0
  140. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/utils/ops.py +0 -0
  141. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/__init__.py +0 -0
  142. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/classify/__init__.py +0 -0
  143. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/classify/predict.py +0 -0
  144. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/classify/train.py +0 -0
  145. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/classify/val.py +0 -0
  146. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/detect/__init__.py +0 -0
  147. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/detect/predict.py +0 -0
  148. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/detect/train.py +0 -0
  149. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/detect/val.py +0 -0
  150. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/model.py +0 -0
  151. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/obb/__init__.py +0 -0
  152. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/obb/predict.py +0 -0
  153. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/obb/train.py +0 -0
  154. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/obb/val.py +0 -0
  155. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/pose/__init__.py +0 -0
  156. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/pose/predict.py +0 -0
  157. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/pose/train.py +0 -0
  158. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/pose/val.py +0 -0
  159. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/segment/__init__.py +0 -0
  160. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/segment/predict.py +0 -0
  161. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/segment/train.py +0 -0
  162. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/segment/val.py +0 -0
  163. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/world/__init__.py +0 -0
  164. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/world/train.py +0 -0
  165. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/models/yolo/world/train_world.py +0 -0
  166. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/nn/__init__.py +0 -0
  167. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/nn/autobackend.py +0 -0
  168. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/nn/modules/__init__.py +0 -0
  169. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/nn/modules/block.py +0 -0
  170. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/nn/modules/conv.py +0 -0
  171. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/nn/modules/head.py +0 -0
  172. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/nn/modules/transformer.py +0 -0
  173. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/nn/modules/utils.py +0 -0
  174. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/nn/tasks.py +0 -0
  175. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/solutions/ai_gym.py +0 -0
  176. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/solutions/distance_calculation.py +0 -0
  177. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/solutions/heatmap.py +0 -0
  178. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/solutions/object_counter.py +0 -0
  179. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/solutions/queue_management.py +0 -0
  180. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/solutions/speed_estimation.py +0 -0
  181. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/trackers/__init__.py +0 -0
  182. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/trackers/basetrack.py +0 -0
  183. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/trackers/bot_sort.py +0 -0
  184. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/trackers/byte_tracker.py +0 -0
  185. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/trackers/track.py +0 -0
  186. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/trackers/utils/__init__.py +0 -0
  187. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/trackers/utils/gmc.py +0 -0
  188. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  189. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/trackers/utils/matching.py +0 -0
  190. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/__init__.py +0 -0
  191. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/autobatch.py +0 -0
  192. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/benchmarks.py +0 -0
  193. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/callbacks/__init__.py +0 -0
  194. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/callbacks/base.py +0 -0
  195. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/callbacks/clearml.py +0 -0
  196. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/callbacks/comet.py +0 -0
  197. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/callbacks/dvc.py +0 -0
  198. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/callbacks/hub.py +0 -0
  199. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/callbacks/mlflow.py +0 -0
  200. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/callbacks/neptune.py +0 -0
  201. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/callbacks/raytune.py +0 -0
  202. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  203. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/callbacks/wb.py +0 -0
  204. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/checks.py +0 -0
  205. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/dist.py +0 -0
  206. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/downloads.py +0 -0
  207. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/errors.py +0 -0
  208. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/files.py +0 -0
  209. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/instance.py +0 -0
  210. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/loss.py +0 -0
  211. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/metrics.py +0 -0
  212. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/ops.py +0 -0
  213. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/patches.py +0 -0
  214. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/plotting.py +0 -0
  215. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/tal.py +0 -0
  216. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/torch_utils.py +0 -0
  217. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/triton.py +0 -0
  218. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics/utils/tuner.py +0 -0
  219. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics.egg-info/SOURCES.txt +0 -0
  220. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics.egg-info/dependency_links.txt +0 -0
  221. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics.egg-info/entry_points.txt +0 -0
  222. {ultralytics-8.2.21 → ultralytics-8.2.22}/ultralytics.egg-info/requires.txt +0 -0
  223. {ultralytics-8.2.21 → ultralytics-8.2.22}/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.21
3
+ Version: 8.2.22
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
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.2.21"
3
+ __version__ = "8.2.22"
4
4
 
5
5
  from ultralytics.data.explorer.explorer import Explorer
6
6
  from ultralytics.models import RTDETR, SAM, YOLO, YOLOWorld
@@ -874,11 +874,56 @@ class Albumentations:
874
874
  self.p = p
875
875
  self.transform = None
876
876
  prefix = colorstr("albumentations: ")
877
+
877
878
  try:
878
879
  import albumentations as A
879
880
 
880
881
  check_version(A.__version__, "1.0.3", hard=True) # version requirement
881
882
 
883
+ # List of possible spatial transforms
884
+ spatial_transforms = {
885
+ "Affine",
886
+ "BBoxSafeRandomCrop",
887
+ "CenterCrop",
888
+ "CoarseDropout",
889
+ "Crop",
890
+ "CropAndPad",
891
+ "CropNonEmptyMaskIfExists",
892
+ "D4",
893
+ "ElasticTransform",
894
+ "Flip",
895
+ "GridDistortion",
896
+ "GridDropout",
897
+ "HorizontalFlip",
898
+ "Lambda",
899
+ "LongestMaxSize",
900
+ "MaskDropout",
901
+ "MixUp",
902
+ "Morphological",
903
+ "NoOp",
904
+ "OpticalDistortion",
905
+ "PadIfNeeded",
906
+ "Perspective",
907
+ "PiecewiseAffine",
908
+ "PixelDropout",
909
+ "RandomCrop",
910
+ "RandomCropFromBorders",
911
+ "RandomGridShuffle",
912
+ "RandomResizedCrop",
913
+ "RandomRotate90",
914
+ "RandomScale",
915
+ "RandomSizedBBoxSafeCrop",
916
+ "RandomSizedCrop",
917
+ "Resize",
918
+ "Rotate",
919
+ "SafeRotate",
920
+ "ShiftScaleRotate",
921
+ "SmallestMaxSize",
922
+ "Transpose",
923
+ "VerticalFlip",
924
+ "XYMasking",
925
+ } # from https://albumentations.ai/docs/getting_started/transforms_and_targets/#spatial-level-transforms
926
+
882
927
  # Transforms
883
928
  T = [
884
929
  A.Blur(p=0.01),
@@ -889,8 +934,14 @@ class Albumentations:
889
934
  A.RandomGamma(p=0.0),
890
935
  A.ImageCompression(quality_lower=75, p=0.0),
891
936
  ]
892
- self.transform = A.Compose(T, bbox_params=A.BboxParams(format="yolo", label_fields=["class_labels"]))
893
937
 
938
+ # Compose transforms
939
+ self.contains_spatial = any(transform.__class__.__name__ in spatial_transforms for transform in T)
940
+ self.transform = (
941
+ A.Compose(T, bbox_params=A.BboxParams(format="yolo", label_fields=["class_labels"]))
942
+ if self.contains_spatial
943
+ else A.Compose(T)
944
+ )
894
945
  LOGGER.info(prefix + ", ".join(f"{x}".replace("always_apply=False, ", "") for x in T if x.p))
895
946
  except ImportError: # package not installed, skip
896
947
  pass
@@ -899,20 +950,26 @@ class Albumentations:
899
950
 
900
951
  def __call__(self, labels):
901
952
  """Generates object detections and returns a dictionary with detection results."""
902
- im = labels["img"]
903
- cls = labels["cls"]
904
- if len(cls):
905
- labels["instances"].convert_bbox("xywh")
906
- labels["instances"].normalize(*im.shape[:2][::-1])
907
- bboxes = labels["instances"].bboxes
908
- # TODO: add supports of segments and keypoints
909
- if self.transform and random.random() < self.p:
953
+ if self.transform is None or random.random() > self.p:
954
+ return labels
955
+
956
+ if self.contains_spatial:
957
+ cls = labels["cls"]
958
+ if len(cls):
959
+ im = labels["img"]
960
+ labels["instances"].convert_bbox("xywh")
961
+ labels["instances"].normalize(*im.shape[:2][::-1])
962
+ bboxes = labels["instances"].bboxes
963
+ # TODO: add supports of segments and keypoints
910
964
  new = self.transform(image=im, bboxes=bboxes, class_labels=cls) # transformed
911
965
  if len(new["class_labels"]) > 0: # skip update if no bbox in new im
912
966
  labels["img"] = new["image"]
913
967
  labels["cls"] = np.array(new["class_labels"])
914
968
  bboxes = np.array(new["bboxes"], dtype=np.float32)
915
- labels["instances"].update(bboxes=bboxes)
969
+ labels["instances"].update(bboxes=bboxes)
970
+ else:
971
+ labels["img"] = self.transform(image=labels["img"])["image"] # transformed
972
+
916
973
  return labels
917
974
 
918
975
 
@@ -5,7 +5,7 @@ from .analytics import Analytics
5
5
  from .distance_calculation import DistanceCalculation
6
6
  from .heatmap import Heatmap
7
7
  from .object_counter import ObjectCounter
8
- from .parking_management import ParkingManagement
8
+ from .parking_management import ParkingManagement, ParkingPtsSelection
9
9
  from .queue_management import QueueManager
10
10
  from .speed_estimation import SpeedEstimator
11
11
 
@@ -1,3 +1,5 @@
1
+ # Ultralytics YOLO 🚀, AGPL-3.0 license
2
+
1
3
  from itertools import cycle
2
4
 
3
5
  import cv2
@@ -1,3 +1,5 @@
1
+ # Ultralytics YOLO 🚀, AGPL-3.0 license
2
+
1
3
  import json
2
4
  from tkinter import filedialog, messagebox
3
5
 
@@ -10,32 +12,31 @@ from ultralytics.utils.plotting import Annotator
10
12
 
11
13
 
12
14
  class ParkingPtsSelection:
13
- def __init__(self, master):
14
- """
15
- Initializes the UI for selecting parking zone points in a tkinter window.
16
-
17
- Args:
18
- master (tk.Tk): The main tkinter window object.
19
- """
15
+ def __init__(self):
16
+ """Initializes the UI for selecting parking zone points in a tkinter window."""
20
17
  check_requirements("tkinter")
18
+
21
19
  import tkinter as tk
22
20
 
23
- self.master = master
24
- master.title("Ultralytics Parking Zones Points Selector")
21
+ self.tk = tk
22
+ self.master = tk.Tk()
23
+ self.master.title("Ultralytics Parking Zones Points Selector")
25
24
 
26
25
  # Disable window resizing
27
- master.resizable(False, False)
26
+ self.master.resizable(False, False)
28
27
 
29
28
  # Setup canvas for image display
30
- self.canvas = tk.Canvas(master, bg="white")
29
+ self.canvas = self.tk.Canvas(self.master, bg="white")
31
30
 
32
31
  # Setup buttons
33
- button_frame = tk.Frame(master)
34
- button_frame.pack(side=tk.TOP)
32
+ button_frame = self.tk.Frame(self.master)
33
+ button_frame.pack(side=self.tk.TOP)
35
34
 
36
- tk.Button(button_frame, text="Upload Image", command=self.upload_image).grid(row=0, column=0)
37
- tk.Button(button_frame, text="Remove Last BBox", command=self.remove_last_bounding_box).grid(row=0, column=1)
38
- tk.Button(button_frame, text="Save", command=self.save_to_json).grid(row=0, column=2)
35
+ self.tk.Button(button_frame, text="Upload Image", command=self.upload_image).grid(row=0, column=0)
36
+ self.tk.Button(button_frame, text="Remove Last BBox", command=self.remove_last_bounding_box).grid(
37
+ row=0, column=1
38
+ )
39
+ self.tk.Button(button_frame, text="Save", command=self.save_to_json).grid(row=0, column=2)
39
40
 
40
41
  # Initialize properties
41
42
  self.image_path = None
@@ -50,6 +51,8 @@ class ParkingPtsSelection:
50
51
  self.canvas_max_width = 1280
51
52
  self.canvas_max_height = 720
52
53
 
54
+ self.master.mainloop()
55
+
53
56
  def upload_image(self):
54
57
  """Upload an image and resize it to fit canvas."""
55
58
  self.image_path = filedialog.askopenfilename(filetypes=[("Image Files", "*.png;*.jpg;*.jpeg")])
@@ -74,12 +77,12 @@ class ParkingPtsSelection:
74
77
  if self.canvas:
75
78
  self.canvas.destroy() # Destroy previous canvas
76
79
 
77
- self.canvas = tk.Canvas(self.master, bg="white", width=canvas_width, height=canvas_height)
80
+ self.canvas = self.tk.Canvas(self.master, bg="white", width=canvas_width, height=canvas_height)
78
81
  resized_image = self.image.resize((canvas_width, canvas_height), Image.LANCZOS)
79
82
  self.canvas_image = ImageTk.PhotoImage(resized_image)
80
- self.canvas.create_image(0, 0, anchor=tk.NW, image=self.canvas_image)
83
+ self.canvas.create_image(0, 0, anchor=self.tk.NW, image=self.canvas_image)
81
84
 
82
- self.canvas.pack(side=tk.BOTTOM)
85
+ self.canvas.pack(side=self.tk.BOTTOM)
83
86
  self.canvas.bind("<Button-1>", self.on_canvas_click)
84
87
 
85
88
  # Reset bounding boxes and current box
@@ -115,7 +118,7 @@ class ParkingPtsSelection:
115
118
  if self.bounding_boxes:
116
119
  self.bounding_boxes.pop() # Remove the last bounding box
117
120
  self.canvas.delete("all") # Clear the canvas
118
- self.canvas.create_image(0, 0, anchor=tk.NW, image=self.canvas_image) # Redraw the image
121
+ self.canvas.create_image(0, 0, anchor=self.tk.NW, image=self.canvas_image) # Redraw the image
119
122
 
120
123
  # Redraw all bounding boxes
121
124
  for box in self.bounding_boxes:
@@ -210,6 +213,7 @@ class ParkingManagement:
210
213
  im0 (ndarray): inference image
211
214
  boxes (list): bounding boxes data
212
215
  clss (list): bounding boxes classes list
216
+
213
217
  Returns:
214
218
  filled_slots (int): total slots that are filled in parking lot
215
219
  empty_slots (int): total slots that are available in parking lot
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.2.21
3
+ Version: 8.2.22
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
File without changes
File without changes
File without changes