ultralytics 8.3.50__tar.gz → 8.3.52__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 (245) hide show
  1. {ultralytics-8.3.50/ultralytics.egg-info → ultralytics-8.3.52}/PKG-INFO +1 -1
  2. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/__init__.py +1 -1
  3. ultralytics-8.3.52/ultralytics/cfg/solutions/default.yaml +22 -0
  4. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/engine/tuner.py +1 -1
  5. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/solutions/__init__.py +2 -0
  6. ultralytics-8.3.52/ultralytics/solutions/security_alarm.py +141 -0
  7. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/autobatch.py +13 -5
  8. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/ops.py +7 -2
  9. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/torch_utils.py +47 -17
  10. {ultralytics-8.3.50 → ultralytics-8.3.52/ultralytics.egg-info}/PKG-INFO +1 -1
  11. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics.egg-info/SOURCES.txt +1 -0
  12. ultralytics-8.3.50/ultralytics/cfg/solutions/default.yaml +0 -19
  13. {ultralytics-8.3.50 → ultralytics-8.3.52}/LICENSE +0 -0
  14. {ultralytics-8.3.50 → ultralytics-8.3.52}/README.md +0 -0
  15. {ultralytics-8.3.50 → ultralytics-8.3.52}/pyproject.toml +0 -0
  16. {ultralytics-8.3.50 → ultralytics-8.3.52}/setup.cfg +0 -0
  17. {ultralytics-8.3.50 → ultralytics-8.3.52}/tests/__init__.py +0 -0
  18. {ultralytics-8.3.50 → ultralytics-8.3.52}/tests/conftest.py +0 -0
  19. {ultralytics-8.3.50 → ultralytics-8.3.52}/tests/test_cli.py +0 -0
  20. {ultralytics-8.3.50 → ultralytics-8.3.52}/tests/test_cuda.py +0 -0
  21. {ultralytics-8.3.50 → ultralytics-8.3.52}/tests/test_engine.py +0 -0
  22. {ultralytics-8.3.50 → ultralytics-8.3.52}/tests/test_exports.py +0 -0
  23. {ultralytics-8.3.50 → ultralytics-8.3.52}/tests/test_integrations.py +0 -0
  24. {ultralytics-8.3.50 → ultralytics-8.3.52}/tests/test_python.py +0 -0
  25. {ultralytics-8.3.50 → ultralytics-8.3.52}/tests/test_solutions.py +0 -0
  26. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/assets/bus.jpg +0 -0
  27. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/assets/zidane.jpg +0 -0
  28. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/__init__.py +0 -0
  29. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  30. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  31. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  32. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  33. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  34. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  35. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  36. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  37. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  38. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  39. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  40. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  41. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  42. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/coco.yaml +0 -0
  43. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  44. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  45. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  46. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  47. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  48. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  49. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  50. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  51. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  52. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  53. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  54. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  55. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/signature.yaml +0 -0
  56. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  57. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/datasets/xView.yaml +0 -0
  58. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/default.yaml +0 -0
  59. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  60. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  61. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  62. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  63. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  64. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  65. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  66. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  67. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  68. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  69. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  70. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  71. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  72. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  73. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  74. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  75. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  76. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  77. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  78. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  79. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  80. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  81. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  82. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  83. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  84. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  85. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  86. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  87. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  88. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  89. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  90. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  91. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  92. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  93. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  94. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  95. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  96. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  97. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  98. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  99. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  100. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  101. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  102. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  103. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  104. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  105. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  106. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/data/__init__.py +0 -0
  107. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/data/annotator.py +0 -0
  108. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/data/augment.py +0 -0
  109. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/data/base.py +0 -0
  110. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/data/build.py +0 -0
  111. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/data/converter.py +0 -0
  112. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/data/dataset.py +0 -0
  113. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/data/loaders.py +0 -0
  114. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/data/split_dota.py +0 -0
  115. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/data/utils.py +0 -0
  116. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/engine/__init__.py +0 -0
  117. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/engine/exporter.py +0 -0
  118. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/engine/model.py +0 -0
  119. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/engine/predictor.py +0 -0
  120. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/engine/results.py +0 -0
  121. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/engine/trainer.py +0 -0
  122. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/engine/validator.py +0 -0
  123. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/hub/__init__.py +0 -0
  124. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/hub/auth.py +0 -0
  125. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/hub/google/__init__.py +0 -0
  126. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/hub/session.py +0 -0
  127. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/hub/utils.py +0 -0
  128. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/__init__.py +0 -0
  129. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/fastsam/__init__.py +0 -0
  130. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/fastsam/model.py +0 -0
  131. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/fastsam/predict.py +0 -0
  132. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/fastsam/utils.py +0 -0
  133. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/fastsam/val.py +0 -0
  134. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/nas/__init__.py +0 -0
  135. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/nas/model.py +0 -0
  136. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/nas/predict.py +0 -0
  137. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/nas/val.py +0 -0
  138. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/rtdetr/__init__.py +0 -0
  139. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/rtdetr/model.py +0 -0
  140. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/rtdetr/predict.py +0 -0
  141. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/rtdetr/train.py +0 -0
  142. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/rtdetr/val.py +0 -0
  143. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/sam/__init__.py +0 -0
  144. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/sam/amg.py +0 -0
  145. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/sam/build.py +0 -0
  146. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/sam/model.py +0 -0
  147. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/sam/modules/__init__.py +0 -0
  148. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/sam/modules/blocks.py +0 -0
  149. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/sam/modules/decoders.py +0 -0
  150. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/sam/modules/encoders.py +0 -0
  151. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  152. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/sam/modules/sam.py +0 -0
  153. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  154. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/sam/modules/transformer.py +0 -0
  155. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/sam/modules/utils.py +0 -0
  156. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/sam/predict.py +0 -0
  157. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/utils/__init__.py +0 -0
  158. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/utils/loss.py +0 -0
  159. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/utils/ops.py +0 -0
  160. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/__init__.py +0 -0
  161. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/classify/__init__.py +0 -0
  162. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/classify/predict.py +0 -0
  163. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/classify/train.py +0 -0
  164. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/classify/val.py +0 -0
  165. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/detect/__init__.py +0 -0
  166. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/detect/predict.py +0 -0
  167. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/detect/train.py +0 -0
  168. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/detect/val.py +0 -0
  169. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/model.py +0 -0
  170. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/obb/__init__.py +0 -0
  171. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/obb/predict.py +0 -0
  172. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/obb/train.py +0 -0
  173. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/obb/val.py +0 -0
  174. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/pose/__init__.py +0 -0
  175. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/pose/predict.py +0 -0
  176. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/pose/train.py +0 -0
  177. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/pose/val.py +0 -0
  178. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/segment/__init__.py +0 -0
  179. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/segment/predict.py +0 -0
  180. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/segment/train.py +0 -0
  181. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/segment/val.py +0 -0
  182. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/world/__init__.py +0 -0
  183. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/world/train.py +0 -0
  184. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/models/yolo/world/train_world.py +0 -0
  185. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/nn/__init__.py +0 -0
  186. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/nn/autobackend.py +0 -0
  187. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/nn/modules/__init__.py +0 -0
  188. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/nn/modules/activation.py +0 -0
  189. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/nn/modules/block.py +0 -0
  190. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/nn/modules/conv.py +0 -0
  191. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/nn/modules/head.py +0 -0
  192. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/nn/modules/transformer.py +0 -0
  193. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/nn/modules/utils.py +0 -0
  194. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/nn/tasks.py +0 -0
  195. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/solutions/ai_gym.py +0 -0
  196. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/solutions/analytics.py +0 -0
  197. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/solutions/distance_calculation.py +0 -0
  198. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/solutions/heatmap.py +0 -0
  199. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/solutions/object_counter.py +0 -0
  200. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/solutions/parking_management.py +0 -0
  201. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/solutions/queue_management.py +0 -0
  202. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/solutions/region_counter.py +0 -0
  203. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/solutions/solutions.py +0 -0
  204. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/solutions/speed_estimation.py +0 -0
  205. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/solutions/streamlit_inference.py +0 -0
  206. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/solutions/trackzone.py +0 -0
  207. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/trackers/__init__.py +0 -0
  208. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/trackers/basetrack.py +0 -0
  209. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/trackers/bot_sort.py +0 -0
  210. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/trackers/byte_tracker.py +0 -0
  211. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/trackers/track.py +0 -0
  212. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/trackers/utils/__init__.py +0 -0
  213. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/trackers/utils/gmc.py +0 -0
  214. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  215. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/trackers/utils/matching.py +0 -0
  216. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/__init__.py +0 -0
  217. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/benchmarks.py +0 -0
  218. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/callbacks/__init__.py +0 -0
  219. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/callbacks/base.py +0 -0
  220. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/callbacks/clearml.py +0 -0
  221. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/callbacks/comet.py +0 -0
  222. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/callbacks/dvc.py +0 -0
  223. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/callbacks/hub.py +0 -0
  224. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/callbacks/mlflow.py +0 -0
  225. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/callbacks/neptune.py +0 -0
  226. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/callbacks/raytune.py +0 -0
  227. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  228. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/callbacks/wb.py +0 -0
  229. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/checks.py +0 -0
  230. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/dist.py +0 -0
  231. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/downloads.py +0 -0
  232. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/errors.py +0 -0
  233. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/files.py +0 -0
  234. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/instance.py +0 -0
  235. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/loss.py +0 -0
  236. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/metrics.py +0 -0
  237. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/patches.py +0 -0
  238. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/plotting.py +0 -0
  239. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/tal.py +0 -0
  240. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/triton.py +0 -0
  241. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics/utils/tuner.py +0 -0
  242. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics.egg-info/dependency_links.txt +0 -0
  243. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics.egg-info/entry_points.txt +0 -0
  244. {ultralytics-8.3.50 → ultralytics-8.3.52}/ultralytics.egg-info/requires.txt +0 -0
  245. {ultralytics-8.3.50 → ultralytics-8.3.52}/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.3.50
3
+ Version: 8.3.52
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 YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.3.50"
3
+ __version__ = "8.3.52"
4
4
 
5
5
  import os
6
6
 
@@ -0,0 +1,22 @@
1
+ # Ultralytics YOLO 🚀, AGPL-3.0 license
2
+ # Configuration for Ultralytics Solutions: https://docs.ultralytics.com/solutions/
3
+
4
+ # Object counting settings --------------------------------------------------------------------------------------------
5
+ region: # list[tuple[int, int]] object counting, queue or speed estimation region points.
6
+ show_in: True # (bool) flag to display objects moving *into* the defined region
7
+ show_out: True # (bool) flag to display objects moving *out of* the defined region
8
+
9
+ # Heatmaps settings ----------------------------------------------------------------------------------------------------
10
+ colormap: # (int | str) colormap for heatmap, Only OPENCV supported colormaps can be used.
11
+
12
+ # Workouts monitoring settings -----------------------------------------------------------------------------------------
13
+ up_angle: 145.0 # (float) Workouts up_angle for counts, 145.0 is default value.
14
+ down_angle: 90 # (float) Workouts down_angle for counts, 90 is default value. Y
15
+ kpts: [6, 8, 10] # (list[int]) keypoints for workouts monitoring, i.e. for pushups kpts have values of [6, 8, 10].
16
+
17
+ # Analytics settings ---------------------------------------------------------------------------------------------------
18
+ analytics_type: "line" # (str) analytics type i.e "line", "pie", "bar" or "area" charts.
19
+ json_file: # (str) parking system regions file path.
20
+
21
+ # Security alarm system settings ---------------------------------------------------------------------------------------
22
+ records: 5 # (int) Total detections count to send an email about security
@@ -191,7 +191,7 @@ class Tuner:
191
191
  try:
192
192
  # Train YOLO model with mutated hyperparameters (run in subprocess to avoid dataloader hang)
193
193
  cmd = ["yolo", "train", *(f"{k}={v}" for k, v in train_args.items())]
194
- return_code = subprocess.run(cmd, check=True).returncode
194
+ return_code = subprocess.run(" ".join(cmd), check=True, shell=True).returncode
195
195
  ckpt_file = weights_dir / ("best.pt" if (weights_dir / "best.pt").exists() else "last.pt")
196
196
  metrics = torch.load(ckpt_file)["train_metrics"]
197
197
  assert return_code == 0, "training failed"
@@ -8,6 +8,7 @@ from .object_counter import ObjectCounter
8
8
  from .parking_management import ParkingManagement, ParkingPtsSelection
9
9
  from .queue_management import QueueManager
10
10
  from .region_counter import RegionCounter
11
+ from .security_alarm import SecurityAlarm
11
12
  from .speed_estimation import SpeedEstimator
12
13
  from .streamlit_inference import inference
13
14
  from .trackzone import TrackZone
@@ -25,4 +26,5 @@ __all__ = (
25
26
  "inference",
26
27
  "RegionCounter",
27
28
  "TrackZone",
29
+ "SecurityAlarm",
28
30
  )
@@ -0,0 +1,141 @@
1
+ # Ultralytics YOLO 🚀, AGPL-3.0 license
2
+
3
+ from ultralytics.solutions.solutions import LOGGER, BaseSolution
4
+ from ultralytics.utils.plotting import Annotator, colors
5
+
6
+
7
+ class SecurityAlarm(BaseSolution):
8
+ """
9
+ A class to manage security alarm functionalities for real-time monitoring.
10
+
11
+ This class extends the BaseSolution class and provides features to monitor
12
+ objects in a frame, send email notifications when specific thresholds are
13
+ exceeded for total detections, and annotate the output frame for visualization.
14
+
15
+ Attributes:
16
+ email_sent (bool): Flag to track if an email has already been sent for the current event.
17
+ records (int): Threshold for the number of detected objects to trigger an alert.
18
+
19
+ Methods:
20
+ authenticate: Sets up email server authentication for sending alerts.
21
+ send_email: Sends an email notification with details and an image attachment.
22
+ monitor: Monitors the frame, processes detections, and triggers alerts if thresholds are crossed.
23
+
24
+ Examples:
25
+ >>> security = SecurityAlarm()
26
+ >>> security.authenticate("abc@gmail.com", "1111222233334444", "xyz@gmail.com")
27
+ >>> frame = cv2.imread("frame.jpg")
28
+ >>> processed_frame = security.monitor(frame)
29
+ """
30
+
31
+ def __init__(self, **kwargs):
32
+ """Initializes the SecurityAlarm class with parameters for real-time object monitoring."""
33
+ super().__init__(**kwargs)
34
+ self.email_sent = False
35
+ self.records = self.CFG["records"]
36
+
37
+ def authenticate(self, from_email, password, to_email):
38
+ """
39
+ Authenticates the email server for sending alert notifications.
40
+
41
+ Args:
42
+ from_email (str): Sender's email address.
43
+ password (str): Password for the sender's email account.
44
+ to_email (str): Recipient's email address.
45
+
46
+ This method initializes a secure connection with the SMTP server
47
+ and logs in using the provided credentials.
48
+
49
+ Examples:
50
+ >>> alarm = SecurityAlarm()
51
+ >>> alarm.authenticate("sender@example.com", "password123", "recipient@example.com")
52
+ """
53
+ import smtplib
54
+
55
+ self.server = smtplib.SMTP("smtp.gmail.com: 587")
56
+ self.server.starttls()
57
+ self.server.login(from_email, password)
58
+ self.to_email = to_email
59
+ self.from_email = from_email
60
+
61
+ def send_email(self, im0, records=5):
62
+ """
63
+ Sends an email notification with an image attachment indicating the number of objects detected.
64
+
65
+ Args:
66
+ im0 (numpy.ndarray): The input image or frame to be attached to the email.
67
+ records (int): The number of detected objects to be included in the email message.
68
+
69
+ This method encodes the input image, composes the email message with
70
+ details about the detection, and sends it to the specified recipient.
71
+
72
+ Examples:
73
+ >>> alarm = SecurityAlarm()
74
+ >>> frame = cv2.imread("path/to/image.jpg")
75
+ >>> alarm.send_email(frame, records=10)
76
+ """
77
+ from email.mime.image import MIMEImage
78
+ from email.mime.multipart import MIMEMultipart
79
+ from email.mime.text import MIMEText
80
+
81
+ import cv2
82
+
83
+ img_bytes = cv2.imencode(".jpg", im0)[1].tobytes() # Encode the image as JPEG
84
+
85
+ # Create the email
86
+ message = MIMEMultipart()
87
+ message["From"] = self.from_email
88
+ message["To"] = self.to_email
89
+ message["Subject"] = "Security Alert"
90
+
91
+ # Add the text message body
92
+ message_body = f"Ultralytics ALERT!!! " f"{records} objects have been detected!!"
93
+ message.attach(MIMEText(message_body, "plain"))
94
+
95
+ # Attach the image
96
+ image_attachment = MIMEImage(img_bytes, name="ultralytics.jpg")
97
+ message.attach(image_attachment)
98
+
99
+ # Send the email
100
+ try:
101
+ self.server.send_message(message)
102
+ LOGGER.info("✅ Email sent successfully!")
103
+ except Exception as e:
104
+ print(f"❌ Failed to send email: {e}")
105
+
106
+ def monitor(self, im0):
107
+ """
108
+ Monitors the frame, processes object detections, and triggers alerts if thresholds are exceeded.
109
+
110
+ Args:
111
+ im0 (numpy.ndarray): The input image or frame to be processed and annotated.
112
+
113
+ This method processes the input frame, extracts detections, annotates the frame
114
+ with bounding boxes, and sends an email notification if the number of detected objects
115
+ surpasses the specified threshold and an alert has not already been sent.
116
+
117
+ Returns:
118
+ (numpy.ndarray): The processed frame with annotations.
119
+
120
+ Examples:
121
+ >>> alarm = SecurityAlarm()
122
+ >>> frame = cv2.imread("path/to/image.jpg")
123
+ >>> processed_frame = alarm.monitor(frame)
124
+ """
125
+ self.annotator = Annotator(im0, line_width=self.line_width) # Initialize annotator
126
+ self.extract_tracks(im0) # Extract tracks
127
+
128
+ # Iterate over bounding boxes, track ids and classes index
129
+ for box, cls in zip(self.boxes, self.clss):
130
+ # Draw bounding box
131
+ self.annotator.box_label(box, label=self.names[cls], color=colors(cls, True))
132
+
133
+ total_det = len(self.clss)
134
+ if total_det > self.records: # Only send email If not sent before
135
+ if not self.email_sent:
136
+ self.send_email(im0, total_det)
137
+ self.email_sent = True
138
+
139
+ self.display_output(im0) # display output with base class function
140
+
141
+ return im0 # return output image for more usage
@@ -77,18 +77,26 @@ def autobatch(model, imgsz=640, fraction=0.60, batch_size=DEFAULT_CFG.batch, max
77
77
  results = profile(img, model, n=1, device=device, max_num_obj=max_num_obj)
78
78
 
79
79
  # Fit a solution
80
- y = [x[2] for x in results if x] # memory [2]
81
- p = np.polyfit(batch_sizes[: len(y)], y, deg=1) # first degree polynomial fit
82
- b = int((f * fraction - p[1]) / p[0]) # y intercept (optimal batch size)
80
+ xy = [
81
+ [x, y[2]]
82
+ for i, (x, y) in enumerate(zip(batch_sizes, results))
83
+ if y # valid result
84
+ and isinstance(y[2], (int, float)) # is numeric
85
+ and 0 < y[2] < t # between 0 and GPU limit
86
+ and (i == 0 or not results[i - 1] or y[2] > results[i - 1][2]) # first item or increasing memory
87
+ ]
88
+ fit_x, fit_y = zip(*xy) if xy else ([], [])
89
+ p = np.polyfit(np.log(fit_x), np.log(fit_y), deg=1) # first-degree polynomial fit in log space
90
+ b = int(round(np.exp((np.log(f * fraction) - p[1]) / p[0]))) # y intercept (optimal batch size)
83
91
  if None in results: # some sizes failed
84
92
  i = results.index(None) # first fail index
85
93
  if b >= batch_sizes[i]: # y intercept above failure point
86
94
  b = batch_sizes[max(i - 1, 0)] # select prior safe point
87
95
  if b < 1 or b > 1024: # b outside of safe range
96
+ LOGGER.info(f"{prefix}WARNING ⚠️ batch={b} outside safe range, using default batch-size {batch_size}.")
88
97
  b = batch_size
89
- LOGGER.info(f"{prefix}WARNING ⚠️ CUDA anomaly detected, using default batch-size {batch_size}.")
90
98
 
91
- fraction = (np.polyval(p, b) + r + a) / t # actual fraction predicted
99
+ fraction = (np.exp(np.polyval(p, np.log(b))) + r + a) / t # predicted fraction
92
100
  LOGGER.info(f"{prefix}Using batch-size {b} for {d} {t * fraction:.2f}G/{t:.2f}G ({fraction * 100:.0f}%) ✅")
93
101
  return b
94
102
  except Exception as e:
@@ -75,8 +75,13 @@ def segment2box(segment, width=640, height=640):
75
75
  (np.ndarray): the minimum and maximum x and y values of the segment.
76
76
  """
77
77
  x, y = segment.T # segment xy
78
- x = x.clip(0, width)
79
- y = y.clip(0, height)
78
+ # any 3 out of 4 sides are outside the image, clip coordinates first, https://github.com/ultralytics/ultralytics/pull/18294
79
+ if np.array([x.min() < 0, y.min() < 0, x.max() > width, y.max() > height]).sum() >= 3:
80
+ x = x.clip(0, width)
81
+ y = y.clip(0, height)
82
+ inside = (x >= 0) & (y >= 0) & (x <= width) & (y <= height)
83
+ x = x[inside]
84
+ y = y[inside]
80
85
  return (
81
86
  np.array([x.min(), y.min(), x.max(), y.max()], dtype=segment.dtype)
82
87
  if any(x)
@@ -617,6 +617,32 @@ def convert_optimizer_state_dict_to_fp16(state_dict):
617
617
  return state_dict
618
618
 
619
619
 
620
+ @contextmanager
621
+ def cuda_memory_usage(device=None):
622
+ """
623
+ Monitor and manage CUDA memory usage.
624
+
625
+ This function checks if CUDA is available and, if so, empties the CUDA cache to free up unused memory.
626
+ It then yields a dictionary containing memory usage information, which can be updated by the caller.
627
+ Finally, it updates the dictionary with the amount of memory reserved by CUDA on the specified device.
628
+
629
+ Args:
630
+ device (torch.device, optional): The CUDA device to query memory usage for. Defaults to None.
631
+
632
+ Yields:
633
+ (dict): A dictionary with a key 'memory' initialized to 0, which will be updated with the reserved memory.
634
+ """
635
+ cuda_info = dict(memory=0)
636
+ if torch.cuda.is_available():
637
+ torch.cuda.empty_cache()
638
+ try:
639
+ yield cuda_info
640
+ finally:
641
+ cuda_info["memory"] = torch.cuda.memory_reserved(device)
642
+ else:
643
+ yield cuda_info
644
+
645
+
620
646
  def profile(input, ops, n=10, device=None, max_num_obj=0):
621
647
  """
622
648
  Ultralytics speed, memory and FLOPs profiler.
@@ -653,27 +679,31 @@ def profile(input, ops, n=10, device=None, max_num_obj=0):
653
679
  flops = 0
654
680
 
655
681
  try:
682
+ mem = 0
656
683
  for _ in range(n):
657
- t[0] = time_sync()
658
- y = m(x)
659
- t[1] = time_sync()
660
- try:
661
- (sum(yi.sum() for yi in y) if isinstance(y, list) else y).sum().backward()
662
- t[2] = time_sync()
663
- except Exception: # no backward method
664
- # print(e) # for debug
665
- t[2] = float("nan")
684
+ with cuda_memory_usage(device) as cuda_info:
685
+ t[0] = time_sync()
686
+ y = m(x)
687
+ t[1] = time_sync()
688
+ try:
689
+ (sum(yi.sum() for yi in y) if isinstance(y, list) else y).sum().backward()
690
+ t[2] = time_sync()
691
+ except Exception: # no backward method
692
+ # print(e) # for debug
693
+ t[2] = float("nan")
694
+ mem += cuda_info["memory"] / 1e9 # (GB)
666
695
  tf += (t[1] - t[0]) * 1000 / n # ms per op forward
667
696
  tb += (t[2] - t[1]) * 1000 / n # ms per op backward
668
697
  if max_num_obj: # simulate training with predictions per image grid (for AutoBatch)
669
- torch.randn(
670
- x.shape[0],
671
- max_num_obj,
672
- int(sum((x.shape[-1] / s) * (x.shape[-2] / s) for s in m.stride.tolist())),
673
- device=device,
674
- dtype=torch.float32,
675
- )
676
- mem = torch.cuda.memory_reserved() / 1e9 if torch.cuda.is_available() else 0 # (GB)
698
+ with cuda_memory_usage(device) as cuda_info:
699
+ torch.randn(
700
+ x.shape[0],
701
+ max_num_obj,
702
+ int(sum((x.shape[-1] / s) * (x.shape[-2] / s) for s in m.stride.tolist())),
703
+ device=device,
704
+ dtype=torch.float32,
705
+ )
706
+ mem += cuda_info["memory"] / 1e9 # (GB)
677
707
  s_in, s_out = (tuple(x.shape) if isinstance(x, torch.Tensor) else "list" for x in (x, y)) # shapes
678
708
  p = sum(x.numel() for x in m.parameters()) if isinstance(m, nn.Module) else 0 # parameters
679
709
  LOGGER.info(f"{p:12}{flops:12.4g}{mem:>14.3f}{tf:14.4g}{tb:14.4g}{str(s_in):>24s}{str(s_out):>24s}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.3.50
3
+ Version: 8.3.52
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>
@@ -204,6 +204,7 @@ ultralytics/solutions/object_counter.py
204
204
  ultralytics/solutions/parking_management.py
205
205
  ultralytics/solutions/queue_management.py
206
206
  ultralytics/solutions/region_counter.py
207
+ ultralytics/solutions/security_alarm.py
207
208
  ultralytics/solutions/solutions.py
208
209
  ultralytics/solutions/speed_estimation.py
209
210
  ultralytics/solutions/streamlit_inference.py
@@ -1,19 +0,0 @@
1
- # Ultralytics YOLO 🚀, AGPL-3.0 license
2
- # Configuration for Ultralytics Solutions
3
-
4
- # Object counting settings
5
- region: # Object counting, queue or speed estimation region points. Default region points are [(20, 400), (1080, 400), (1080, 360), (20, 360)]
6
- show_in: True # Flag to display objects moving *into* the defined region
7
- show_out: True # Flag to display objects moving *out of* the defined region
8
-
9
- # Heatmaps settings
10
- colormap: # Colormap for heatmap, Only OPENCV supported colormaps can be used. By default COLORMAP_PARULA will be used for visualization.
11
-
12
- # Workouts monitoring settings
13
- up_angle: 145.0 # Workouts up_angle for counts, 145.0 is default value. You can adjust it for different workouts, based on position of keypoints.
14
- down_angle: 90 # Workouts down_angle for counts, 90 is default value. You can change it for different workouts, based on position of keypoints.
15
- kpts: [6, 8, 10] # Keypoints for workouts monitoring, i.e. If you want to consider keypoints for pushups that have mostly values of [6, 8, 10].
16
-
17
- # Analytics settings
18
- analytics_type: "line" # Analytics type i.e "line", "pie", "bar" or "area" charts. By default, "line" analytics will be used for processing.
19
- json_file: # parking system regions file path.
File without changes
File without changes
File without changes