ultralytics 8.1.29__py3-none-any.whl → 8.3.63__py3-none-any.whl

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 (247) hide show
  1. tests/__init__.py +22 -0
  2. tests/conftest.py +83 -0
  3. tests/test_cli.py +122 -0
  4. tests/test_cuda.py +155 -0
  5. tests/test_engine.py +131 -0
  6. tests/test_exports.py +216 -0
  7. tests/test_integrations.py +150 -0
  8. tests/test_python.py +615 -0
  9. tests/test_solutions.py +94 -0
  10. ultralytics/__init__.py +11 -8
  11. ultralytics/cfg/__init__.py +569 -131
  12. ultralytics/cfg/datasets/Argoverse.yaml +2 -1
  13. ultralytics/cfg/datasets/DOTAv1.5.yaml +3 -2
  14. ultralytics/cfg/datasets/DOTAv1.yaml +3 -2
  15. ultralytics/cfg/datasets/GlobalWheat2020.yaml +3 -2
  16. ultralytics/cfg/datasets/ImageNet.yaml +2 -1
  17. ultralytics/cfg/datasets/Objects365.yaml +5 -4
  18. ultralytics/cfg/datasets/SKU-110K.yaml +2 -1
  19. ultralytics/cfg/datasets/VOC.yaml +3 -2
  20. ultralytics/cfg/datasets/VisDrone.yaml +6 -5
  21. ultralytics/cfg/datasets/african-wildlife.yaml +25 -0
  22. ultralytics/cfg/datasets/brain-tumor.yaml +23 -0
  23. ultralytics/cfg/datasets/carparts-seg.yaml +3 -2
  24. ultralytics/cfg/datasets/coco-pose.yaml +7 -6
  25. ultralytics/cfg/datasets/coco.yaml +3 -2
  26. ultralytics/cfg/datasets/coco128-seg.yaml +4 -3
  27. ultralytics/cfg/datasets/coco128.yaml +4 -3
  28. ultralytics/cfg/datasets/coco8-pose.yaml +3 -2
  29. ultralytics/cfg/datasets/coco8-seg.yaml +3 -2
  30. ultralytics/cfg/datasets/coco8.yaml +3 -2
  31. ultralytics/cfg/datasets/crack-seg.yaml +3 -2
  32. ultralytics/cfg/datasets/dog-pose.yaml +24 -0
  33. ultralytics/cfg/datasets/dota8.yaml +3 -2
  34. ultralytics/cfg/datasets/hand-keypoints.yaml +26 -0
  35. ultralytics/cfg/datasets/lvis.yaml +1236 -0
  36. ultralytics/cfg/datasets/medical-pills.yaml +22 -0
  37. ultralytics/cfg/datasets/open-images-v7.yaml +2 -1
  38. ultralytics/cfg/datasets/package-seg.yaml +5 -4
  39. ultralytics/cfg/datasets/signature.yaml +21 -0
  40. ultralytics/cfg/datasets/tiger-pose.yaml +3 -2
  41. ultralytics/cfg/datasets/xView.yaml +2 -1
  42. ultralytics/cfg/default.yaml +14 -11
  43. ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +24 -0
  44. ultralytics/cfg/models/11/yolo11-cls.yaml +33 -0
  45. ultralytics/cfg/models/11/yolo11-obb.yaml +50 -0
  46. ultralytics/cfg/models/11/yolo11-pose.yaml +51 -0
  47. ultralytics/cfg/models/11/yolo11-seg.yaml +50 -0
  48. ultralytics/cfg/models/11/yolo11.yaml +50 -0
  49. ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +5 -2
  50. ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +5 -2
  51. ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +5 -2
  52. ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +5 -2
  53. ultralytics/cfg/models/v10/yolov10b.yaml +45 -0
  54. ultralytics/cfg/models/v10/yolov10l.yaml +45 -0
  55. ultralytics/cfg/models/v10/yolov10m.yaml +45 -0
  56. ultralytics/cfg/models/v10/yolov10n.yaml +45 -0
  57. ultralytics/cfg/models/v10/yolov10s.yaml +45 -0
  58. ultralytics/cfg/models/v10/yolov10x.yaml +45 -0
  59. ultralytics/cfg/models/v3/yolov3-spp.yaml +5 -2
  60. ultralytics/cfg/models/v3/yolov3-tiny.yaml +5 -2
  61. ultralytics/cfg/models/v3/yolov3.yaml +5 -2
  62. ultralytics/cfg/models/v5/yolov5-p6.yaml +5 -2
  63. ultralytics/cfg/models/v5/yolov5.yaml +5 -2
  64. ultralytics/cfg/models/v6/yolov6.yaml +5 -2
  65. ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +5 -2
  66. ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +5 -2
  67. ultralytics/cfg/models/v8/yolov8-cls.yaml +5 -2
  68. ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +6 -2
  69. ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +6 -2
  70. ultralytics/cfg/models/v8/yolov8-ghost.yaml +5 -2
  71. ultralytics/cfg/models/v8/yolov8-obb.yaml +5 -2
  72. ultralytics/cfg/models/v8/yolov8-p2.yaml +5 -2
  73. ultralytics/cfg/models/v8/yolov8-p6.yaml +10 -7
  74. ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +5 -2
  75. ultralytics/cfg/models/v8/yolov8-pose.yaml +5 -2
  76. ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +5 -2
  77. ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +5 -2
  78. ultralytics/cfg/models/v8/yolov8-seg.yaml +5 -2
  79. ultralytics/cfg/models/v8/yolov8-world.yaml +5 -2
  80. ultralytics/cfg/models/v8/yolov8-worldv2.yaml +5 -2
  81. ultralytics/cfg/models/v8/yolov8.yaml +5 -2
  82. ultralytics/cfg/models/v9/yolov9c-seg.yaml +41 -0
  83. ultralytics/cfg/models/v9/yolov9c.yaml +30 -25
  84. ultralytics/cfg/models/v9/yolov9e-seg.yaml +64 -0
  85. ultralytics/cfg/models/v9/yolov9e.yaml +46 -42
  86. ultralytics/cfg/models/v9/yolov9m.yaml +41 -0
  87. ultralytics/cfg/models/v9/yolov9s.yaml +41 -0
  88. ultralytics/cfg/models/v9/yolov9t.yaml +41 -0
  89. ultralytics/cfg/solutions/default.yaml +24 -0
  90. ultralytics/cfg/trackers/botsort.yaml +8 -5
  91. ultralytics/cfg/trackers/bytetrack.yaml +8 -5
  92. ultralytics/data/__init__.py +14 -3
  93. ultralytics/data/annotator.py +37 -15
  94. ultralytics/data/augment.py +1783 -289
  95. ultralytics/data/base.py +62 -27
  96. ultralytics/data/build.py +37 -8
  97. ultralytics/data/converter.py +196 -36
  98. ultralytics/data/dataset.py +233 -94
  99. ultralytics/data/loaders.py +199 -96
  100. ultralytics/data/split_dota.py +39 -29
  101. ultralytics/data/utils.py +111 -41
  102. ultralytics/engine/__init__.py +1 -1
  103. ultralytics/engine/exporter.py +579 -244
  104. ultralytics/engine/model.py +604 -252
  105. ultralytics/engine/predictor.py +22 -11
  106. ultralytics/engine/results.py +1228 -218
  107. ultralytics/engine/trainer.py +191 -129
  108. ultralytics/engine/tuner.py +18 -18
  109. ultralytics/engine/validator.py +18 -15
  110. ultralytics/hub/__init__.py +31 -13
  111. ultralytics/hub/auth.py +11 -7
  112. ultralytics/hub/google/__init__.py +159 -0
  113. ultralytics/hub/session.py +128 -94
  114. ultralytics/hub/utils.py +20 -21
  115. ultralytics/models/__init__.py +4 -2
  116. ultralytics/models/fastsam/__init__.py +2 -3
  117. ultralytics/models/fastsam/model.py +26 -4
  118. ultralytics/models/fastsam/predict.py +127 -63
  119. ultralytics/models/fastsam/utils.py +1 -44
  120. ultralytics/models/fastsam/val.py +1 -1
  121. ultralytics/models/nas/__init__.py +1 -1
  122. ultralytics/models/nas/model.py +21 -10
  123. ultralytics/models/nas/predict.py +3 -6
  124. ultralytics/models/nas/val.py +4 -4
  125. ultralytics/models/rtdetr/__init__.py +1 -1
  126. ultralytics/models/rtdetr/model.py +1 -1
  127. ultralytics/models/rtdetr/predict.py +6 -8
  128. ultralytics/models/rtdetr/train.py +6 -2
  129. ultralytics/models/rtdetr/val.py +3 -3
  130. ultralytics/models/sam/__init__.py +3 -3
  131. ultralytics/models/sam/amg.py +29 -23
  132. ultralytics/models/sam/build.py +211 -13
  133. ultralytics/models/sam/model.py +91 -30
  134. ultralytics/models/sam/modules/__init__.py +1 -1
  135. ultralytics/models/sam/modules/blocks.py +1129 -0
  136. ultralytics/models/sam/modules/decoders.py +381 -53
  137. ultralytics/models/sam/modules/encoders.py +515 -324
  138. ultralytics/models/sam/modules/memory_attention.py +237 -0
  139. ultralytics/models/sam/modules/sam.py +969 -21
  140. ultralytics/models/sam/modules/tiny_encoder.py +425 -154
  141. ultralytics/models/sam/modules/transformer.py +159 -60
  142. ultralytics/models/sam/modules/utils.py +293 -0
  143. ultralytics/models/sam/predict.py +1263 -132
  144. ultralytics/models/utils/__init__.py +1 -1
  145. ultralytics/models/utils/loss.py +36 -24
  146. ultralytics/models/utils/ops.py +3 -7
  147. ultralytics/models/yolo/__init__.py +3 -3
  148. ultralytics/models/yolo/classify/__init__.py +1 -1
  149. ultralytics/models/yolo/classify/predict.py +7 -8
  150. ultralytics/models/yolo/classify/train.py +17 -22
  151. ultralytics/models/yolo/classify/val.py +8 -4
  152. ultralytics/models/yolo/detect/__init__.py +1 -1
  153. ultralytics/models/yolo/detect/predict.py +3 -5
  154. ultralytics/models/yolo/detect/train.py +11 -4
  155. ultralytics/models/yolo/detect/val.py +90 -52
  156. ultralytics/models/yolo/model.py +14 -9
  157. ultralytics/models/yolo/obb/__init__.py +1 -1
  158. ultralytics/models/yolo/obb/predict.py +2 -2
  159. ultralytics/models/yolo/obb/train.py +5 -3
  160. ultralytics/models/yolo/obb/val.py +41 -23
  161. ultralytics/models/yolo/pose/__init__.py +1 -1
  162. ultralytics/models/yolo/pose/predict.py +3 -5
  163. ultralytics/models/yolo/pose/train.py +2 -2
  164. ultralytics/models/yolo/pose/val.py +51 -17
  165. ultralytics/models/yolo/segment/__init__.py +1 -1
  166. ultralytics/models/yolo/segment/predict.py +3 -5
  167. ultralytics/models/yolo/segment/train.py +2 -2
  168. ultralytics/models/yolo/segment/val.py +60 -19
  169. ultralytics/models/yolo/world/__init__.py +5 -0
  170. ultralytics/models/yolo/world/train.py +92 -0
  171. ultralytics/models/yolo/world/train_world.py +109 -0
  172. ultralytics/nn/__init__.py +1 -1
  173. ultralytics/nn/autobackend.py +228 -93
  174. ultralytics/nn/modules/__init__.py +39 -14
  175. ultralytics/nn/modules/activation.py +21 -0
  176. ultralytics/nn/modules/block.py +526 -66
  177. ultralytics/nn/modules/conv.py +24 -7
  178. ultralytics/nn/modules/head.py +177 -34
  179. ultralytics/nn/modules/transformer.py +6 -5
  180. ultralytics/nn/modules/utils.py +1 -2
  181. ultralytics/nn/tasks.py +226 -82
  182. ultralytics/solutions/__init__.py +30 -1
  183. ultralytics/solutions/ai_gym.py +96 -143
  184. ultralytics/solutions/analytics.py +247 -0
  185. ultralytics/solutions/distance_calculation.py +78 -135
  186. ultralytics/solutions/heatmap.py +93 -247
  187. ultralytics/solutions/object_counter.py +184 -259
  188. ultralytics/solutions/parking_management.py +246 -0
  189. ultralytics/solutions/queue_management.py +112 -0
  190. ultralytics/solutions/region_counter.py +116 -0
  191. ultralytics/solutions/security_alarm.py +144 -0
  192. ultralytics/solutions/solutions.py +178 -0
  193. ultralytics/solutions/speed_estimation.py +86 -174
  194. ultralytics/solutions/streamlit_inference.py +190 -0
  195. ultralytics/solutions/trackzone.py +68 -0
  196. ultralytics/trackers/__init__.py +1 -1
  197. ultralytics/trackers/basetrack.py +32 -13
  198. ultralytics/trackers/bot_sort.py +61 -28
  199. ultralytics/trackers/byte_tracker.py +83 -51
  200. ultralytics/trackers/track.py +21 -6
  201. ultralytics/trackers/utils/__init__.py +1 -1
  202. ultralytics/trackers/utils/gmc.py +62 -48
  203. ultralytics/trackers/utils/kalman_filter.py +166 -35
  204. ultralytics/trackers/utils/matching.py +40 -21
  205. ultralytics/utils/__init__.py +511 -239
  206. ultralytics/utils/autobatch.py +40 -22
  207. ultralytics/utils/benchmarks.py +266 -85
  208. ultralytics/utils/callbacks/__init__.py +1 -1
  209. ultralytics/utils/callbacks/base.py +1 -3
  210. ultralytics/utils/callbacks/clearml.py +7 -6
  211. ultralytics/utils/callbacks/comet.py +39 -17
  212. ultralytics/utils/callbacks/dvc.py +1 -1
  213. ultralytics/utils/callbacks/hub.py +16 -16
  214. ultralytics/utils/callbacks/mlflow.py +28 -24
  215. ultralytics/utils/callbacks/neptune.py +6 -2
  216. ultralytics/utils/callbacks/raytune.py +3 -4
  217. ultralytics/utils/callbacks/tensorboard.py +18 -18
  218. ultralytics/utils/callbacks/wb.py +27 -20
  219. ultralytics/utils/checks.py +172 -100
  220. ultralytics/utils/dist.py +2 -1
  221. ultralytics/utils/downloads.py +40 -34
  222. ultralytics/utils/errors.py +1 -1
  223. ultralytics/utils/files.py +72 -38
  224. ultralytics/utils/instance.py +41 -19
  225. ultralytics/utils/loss.py +83 -55
  226. ultralytics/utils/metrics.py +61 -56
  227. ultralytics/utils/ops.py +94 -89
  228. ultralytics/utils/patches.py +30 -14
  229. ultralytics/utils/plotting.py +600 -269
  230. ultralytics/utils/tal.py +67 -26
  231. ultralytics/utils/torch_utils.py +305 -112
  232. ultralytics/utils/triton.py +2 -1
  233. ultralytics/utils/tuner.py +21 -12
  234. ultralytics-8.3.63.dist-info/METADATA +370 -0
  235. ultralytics-8.3.63.dist-info/RECORD +241 -0
  236. {ultralytics-8.1.29.dist-info → ultralytics-8.3.63.dist-info}/WHEEL +1 -1
  237. ultralytics/data/explorer/__init__.py +0 -5
  238. ultralytics/data/explorer/explorer.py +0 -472
  239. ultralytics/data/explorer/gui/__init__.py +0 -1
  240. ultralytics/data/explorer/gui/dash.py +0 -268
  241. ultralytics/data/explorer/utils.py +0 -166
  242. ultralytics/models/fastsam/prompt.py +0 -357
  243. ultralytics-8.1.29.dist-info/METADATA +0 -373
  244. ultralytics-8.1.29.dist-info/RECORD +0 -197
  245. {ultralytics-8.1.29.dist-info → ultralytics-8.3.63.dist-info}/LICENSE +0 -0
  246. {ultralytics-8.1.29.dist-info → ultralytics-8.3.63.dist-info}/entry_points.txt +0 -0
  247. {ultralytics-8.1.29.dist-info → ultralytics-8.3.63.dist-info}/top_level.txt +0 -0
@@ -1,60 +1,64 @@
1
- # YOLOv9
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- # parameters
4
- nc: 80 # number of classes
3
+ # YOLOv9e object detection model with P3/8 - P5/32 outputs
4
+ # Model docs: https://docs.ultralytics.com/models/yolov9
5
+ # Task docs: https://docs.ultralytics.com/tasks/detect
6
+ # 1225 layers, 58206592 parameters, 193.0 GFLOPs
5
7
 
6
- # gelan backbone
8
+ # Parameters
9
+ nc: 80 # number of classes
10
+
11
+ # GELAN backbone
7
12
  backbone:
8
- - [-1, 1, Silence, []]
9
- - [-1, 1, Conv, [64, 3, 2]] # 1-P1/2
10
- - [-1, 1, Conv, [128, 3, 2]] # 2-P2/4
11
- - [-1, 1, RepNCSPELAN4, [256, 128, 64, 2]] # 3
12
- - [-1, 1, ADown, [256]] # 4-P3/8
13
- - [-1, 1, RepNCSPELAN4, [512, 256, 128, 2]] # 5
14
- - [-1, 1, ADown, [512]] # 6-P4/16
15
- - [-1, 1, RepNCSPELAN4, [1024, 512, 256, 2]] # 7
16
- - [-1, 1, ADown, [1024]] # 8-P5/32
17
- - [-1, 1, RepNCSPELAN4, [1024, 512, 256, 2]] # 9
18
-
13
+ - [-1, 1, nn.Identity, []]
14
+ - [-1, 1, Conv, [64, 3, 2]] # 1-P1/2
15
+ - [-1, 1, Conv, [128, 3, 2]] # 2-P2/4
16
+ - [-1, 1, RepNCSPELAN4, [256, 128, 64, 2]] # 3
17
+ - [-1, 1, ADown, [256]] # 4-P3/8
18
+ - [-1, 1, RepNCSPELAN4, [512, 256, 128, 2]] # 5
19
+ - [-1, 1, ADown, [512]] # 6-P4/16
20
+ - [-1, 1, RepNCSPELAN4, [1024, 512, 256, 2]] # 7
21
+ - [-1, 1, ADown, [1024]] # 8-P5/32
22
+ - [-1, 1, RepNCSPELAN4, [1024, 512, 256, 2]] # 9
23
+
19
24
  - [1, 1, CBLinear, [[64]]] # 10
20
25
  - [3, 1, CBLinear, [[64, 128]]] # 11
21
26
  - [5, 1, CBLinear, [[64, 128, 256]]] # 12
22
27
  - [7, 1, CBLinear, [[64, 128, 256, 512]]] # 13
23
28
  - [9, 1, CBLinear, [[64, 128, 256, 512, 1024]]] # 14
24
-
25
- - [0, 1, Conv, [64, 3, 2]] # 15-P1/2
29
+
30
+ - [0, 1, Conv, [64, 3, 2]] # 15-P1/2
26
31
  - [[10, 11, 12, 13, 14, -1], 1, CBFuse, [[0, 0, 0, 0, 0]]] # 16
27
- - [-1, 1, Conv, [128, 3, 2]] # 17-P2/4
28
- - [[11, 12, 13, 14, -1], 1, CBFuse, [[1, 1, 1, 1]]] # 18
29
- - [-1, 1, RepNCSPELAN4, [256, 128, 64, 2]] # 19
30
- - [-1, 1, ADown, [256]] # 20-P3/8
31
- - [[12, 13, 14, -1], 1, CBFuse, [[2, 2, 2]]] # 21
32
- - [-1, 1, RepNCSPELAN4, [512, 256, 128, 2]] # 22
33
- - [-1, 1, ADown, [512]] # 23-P4/16
34
- - [[13, 14, -1], 1, CBFuse, [[3, 3]]] # 24
35
- - [-1, 1, RepNCSPELAN4, [1024, 512, 256, 2]] # 25
36
- - [-1, 1, ADown, [1024]] # 26-P5/32
32
+ - [-1, 1, Conv, [128, 3, 2]] # 17-P2/4
33
+ - [[11, 12, 13, 14, -1], 1, CBFuse, [[1, 1, 1, 1]]] # 18
34
+ - [-1, 1, RepNCSPELAN4, [256, 128, 64, 2]] # 19
35
+ - [-1, 1, ADown, [256]] # 20-P3/8
36
+ - [[12, 13, 14, -1], 1, CBFuse, [[2, 2, 2]]] # 21
37
+ - [-1, 1, RepNCSPELAN4, [512, 256, 128, 2]] # 22
38
+ - [-1, 1, ADown, [512]] # 23-P4/16
39
+ - [[13, 14, -1], 1, CBFuse, [[3, 3]]] # 24
40
+ - [-1, 1, RepNCSPELAN4, [1024, 512, 256, 2]] # 25
41
+ - [-1, 1, ADown, [1024]] # 26-P5/32
37
42
  - [[14, -1], 1, CBFuse, [[4]]] # 27
38
- - [-1, 1, RepNCSPELAN4, [1024, 512, 256, 2]] # 28
39
- - [-1, 1, SPPELAN, [512, 256]] # 29
43
+ - [-1, 1, RepNCSPELAN4, [1024, 512, 256, 2]] # 28
44
+ - [-1, 1, SPPELAN, [512, 256]] # 29
40
45
 
41
- # gelan head
46
+ # GELAN head
42
47
  head:
43
- - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
44
- - [[-1, 25], 1, Concat, [1]] # cat backbone P4
45
- - [-1, 1, RepNCSPELAN4, [512, 512, 256, 2]] # 32
48
+ - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
49
+ - [[-1, 25], 1, Concat, [1]] # cat backbone P4
50
+ - [-1, 1, RepNCSPELAN4, [512, 512, 256, 2]] # 32
46
51
 
47
- - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
48
- - [[-1, 22], 1, Concat, [1]] # cat backbone P3
49
- - [-1, 1, RepNCSPELAN4, [256, 256, 128, 2]] # 35 (P3/8-small)
52
+ - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
53
+ - [[-1, 22], 1, Concat, [1]] # cat backbone P3
54
+ - [-1, 1, RepNCSPELAN4, [256, 256, 128, 2]] # 35 (P3/8-small)
50
55
 
51
56
  - [-1, 1, ADown, [256]]
52
- - [[-1, 32], 1, Concat, [1]] # cat head P4
53
- - [-1, 1, RepNCSPELAN4, [512, 512, 256, 2]] # 38 (P4/16-medium)
57
+ - [[-1, 32], 1, Concat, [1]] # cat head P4
58
+ - [-1, 1, RepNCSPELAN4, [512, 512, 256, 2]] # 38 (P4/16-medium)
54
59
 
55
60
  - [-1, 1, ADown, [512]]
56
- - [[-1, 29], 1, Concat, [1]] # cat head P5
57
- - [-1, 1, RepNCSPELAN4, [512, 1024, 512, 2]] # 41 (P5/32-large)
61
+ - [[-1, 29], 1, Concat, [1]] # cat head P5
62
+ - [-1, 1, RepNCSPELAN4, [512, 1024, 512, 2]] # 41 (P5/32-large)
58
63
 
59
- # detect
60
- - [[35, 38, 41], 1, Detect, [nc]] # Detect(P3, P4, P5)
64
+ - [[35, 38, 41], 1, Detect, [nc]] # Detect(P3, P4, P5)
@@ -0,0 +1,41 @@
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
+
3
+ # YOLOv9m object detection model with P3/8 - P5/32 outputs
4
+ # Model docs: https://docs.ultralytics.com/models/yolov9
5
+ # Task docs: https://docs.ultralytics.com/tasks/detect
6
+ # 603 layers, 20216160 parameters, 77.9 GFLOPs
7
+
8
+ # Parameters
9
+ nc: 80 # number of classes
10
+
11
+ # GELAN backbone
12
+ backbone:
13
+ - [-1, 1, Conv, [32, 3, 2]] # 0-P1/2
14
+ - [-1, 1, Conv, [64, 3, 2]] # 1-P2/4
15
+ - [-1, 1, RepNCSPELAN4, [128, 128, 64, 1]] # 2
16
+ - [-1, 1, AConv, [240]] # 3-P3/8
17
+ - [-1, 1, RepNCSPELAN4, [240, 240, 120, 1]] # 4
18
+ - [-1, 1, AConv, [360]] # 5-P4/16
19
+ - [-1, 1, RepNCSPELAN4, [360, 360, 180, 1]] # 6
20
+ - [-1, 1, AConv, [480]] # 7-P5/32
21
+ - [-1, 1, RepNCSPELAN4, [480, 480, 240, 1]] # 8
22
+ - [-1, 1, SPPELAN, [480, 240]] # 9
23
+
24
+ head:
25
+ - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
26
+ - [[-1, 6], 1, Concat, [1]] # cat backbone P4
27
+ - [-1, 1, RepNCSPELAN4, [360, 360, 180, 1]] # 12
28
+
29
+ - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
30
+ - [[-1, 4], 1, Concat, [1]] # cat backbone P3
31
+ - [-1, 1, RepNCSPELAN4, [240, 240, 120, 1]] # 15
32
+
33
+ - [-1, 1, AConv, [180]]
34
+ - [[-1, 12], 1, Concat, [1]] # cat head P4
35
+ - [-1, 1, RepNCSPELAN4, [360, 360, 180, 1]] # 18 (P4/16-medium)
36
+
37
+ - [-1, 1, AConv, [240]]
38
+ - [[-1, 9], 1, Concat, [1]] # cat head P5
39
+ - [-1, 1, RepNCSPELAN4, [480, 480, 240, 1]] # 21 (P5/32-large)
40
+
41
+ - [[15, 18, 21], 1, Detect, [nc]] # Detect(P3, P4, P5)
@@ -0,0 +1,41 @@
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
+
3
+ # YOLOv9s object detection model with P3/8 - P5/32 outputs
4
+ # Model docs: https://docs.ultralytics.com/models/yolov9
5
+ # Task docs: https://docs.ultralytics.com/tasks/detect
6
+ # 917 layers, 7318368 parameters, 27.6 GFLOPs
7
+
8
+ # Parameters
9
+ nc: 80 # number of classes
10
+
11
+ # GELAN backbone
12
+ backbone:
13
+ - [-1, 1, Conv, [32, 3, 2]] # 0-P1/2
14
+ - [-1, 1, Conv, [64, 3, 2]] # 1-P2/4
15
+ - [-1, 1, ELAN1, [64, 64, 32]] # 2
16
+ - [-1, 1, AConv, [128]] # 3-P3/8
17
+ - [-1, 1, RepNCSPELAN4, [128, 128, 64, 3]] # 4
18
+ - [-1, 1, AConv, [192]] # 5-P4/16
19
+ - [-1, 1, RepNCSPELAN4, [192, 192, 96, 3]] # 6
20
+ - [-1, 1, AConv, [256]] # 7-P5/32
21
+ - [-1, 1, RepNCSPELAN4, [256, 256, 128, 3]] # 8
22
+ - [-1, 1, SPPELAN, [256, 128]] # 9
23
+
24
+ head:
25
+ - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
26
+ - [[-1, 6], 1, Concat, [1]] # cat backbone P4
27
+ - [-1, 1, RepNCSPELAN4, [192, 192, 96, 3]] # 12
28
+
29
+ - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
30
+ - [[-1, 4], 1, Concat, [1]] # cat backbone P3
31
+ - [-1, 1, RepNCSPELAN4, [128, 128, 64, 3]] # 15
32
+
33
+ - [-1, 1, AConv, [96]]
34
+ - [[-1, 12], 1, Concat, [1]] # cat head P4
35
+ - [-1, 1, RepNCSPELAN4, [192, 192, 96, 3]] # 18 (P4/16-medium)
36
+
37
+ - [-1, 1, AConv, [128]]
38
+ - [[-1, 9], 1, Concat, [1]] # cat head P5
39
+ - [-1, 1, RepNCSPELAN4, [256, 256, 128, 3]] # 21 (P5/32-large)
40
+
41
+ - [[15, 18, 21], 1, Detect, [nc]] # Detect(P3, P4 P5)
@@ -0,0 +1,41 @@
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
+
3
+ # YOLOv9t object detection model with P3/8 - P5/32 outputs
4
+ # Model docs: https://docs.ultralytics.com/models/yolov9
5
+ # Task docs: https://docs.ultralytics.com/tasks/detect
6
+ # 917 layers, 2128720 parameters, 8.5 GFLOPs
7
+
8
+ # Parameters
9
+ nc: 80 # number of classes
10
+
11
+ # GELAN backbone
12
+ backbone:
13
+ - [-1, 1, Conv, [16, 3, 2]] # 0-P1/2
14
+ - [-1, 1, Conv, [32, 3, 2]] # 1-P2/4
15
+ - [-1, 1, ELAN1, [32, 32, 16]] # 2
16
+ - [-1, 1, AConv, [64]] # 3-P3/8
17
+ - [-1, 1, RepNCSPELAN4, [64, 64, 32, 3]] # 4
18
+ - [-1, 1, AConv, [96]] # 5-P4/16
19
+ - [-1, 1, RepNCSPELAN4, [96, 96, 48, 3]] # 6
20
+ - [-1, 1, AConv, [128]] # 7-P5/32
21
+ - [-1, 1, RepNCSPELAN4, [128, 128, 64, 3]] # 8
22
+ - [-1, 1, SPPELAN, [128, 64]] # 9
23
+
24
+ head:
25
+ - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
26
+ - [[-1, 6], 1, Concat, [1]] # cat backbone P4
27
+ - [-1, 1, RepNCSPELAN4, [96, 96, 48, 3]] # 12
28
+
29
+ - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
30
+ - [[-1, 4], 1, Concat, [1]] # cat backbone P3
31
+ - [-1, 1, RepNCSPELAN4, [64, 64, 32, 3]] # 15
32
+
33
+ - [-1, 1, AConv, [48]]
34
+ - [[-1, 12], 1, Concat, [1]] # cat head P4
35
+ - [-1, 1, RepNCSPELAN4, [96, 96, 48, 3]] # 18 (P4/16-medium)
36
+
37
+ - [-1, 1, AConv, [64]]
38
+ - [[-1, 9], 1, Concat, [1]] # cat head P5
39
+ - [-1, 1, RepNCSPELAN4, [128, 128, 64, 3]] # 21 (P5/32-large)
40
+
41
+ - [[15, 18, 21], 1, Detect, [nc]] # Detect(P3, P4, P5)
@@ -0,0 +1,24 @@
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
+
3
+ # Global configuration YAML with settings and arguments for Ultralytics Solutions
4
+ # For documentation see https://docs.ultralytics.com/solutions/
5
+
6
+ # Object counting settings --------------------------------------------------------------------------------------------
7
+ region: # list[tuple[int, int]] object counting, queue or speed estimation region points.
8
+ show_in: True # (bool) flag to display objects moving *into* the defined region
9
+ show_out: True # (bool) flag to display objects moving *out of* the defined region
10
+
11
+ # Heatmaps settings ----------------------------------------------------------------------------------------------------
12
+ colormap: # (int | str) colormap for heatmap, Only OPENCV supported colormaps can be used.
13
+
14
+ # Workouts monitoring settings -----------------------------------------------------------------------------------------
15
+ up_angle: 145.0 # (float) Workouts up_angle for counts, 145.0 is default value.
16
+ down_angle: 90 # (float) Workouts down_angle for counts, 90 is default value. Y
17
+ kpts: [6, 8, 10] # (list[int]) keypoints for workouts monitoring, i.e. for push-ups kpts have values of [6, 8, 10].
18
+
19
+ # Analytics settings ---------------------------------------------------------------------------------------------------
20
+ analytics_type: "line" # (str) analytics type i.e "line", "pie", "bar" or "area" charts.
21
+ json_file: # (str) parking system regions file path.
22
+
23
+ # Security alarm system settings ---------------------------------------------------------------------------------------
24
+ records: 5 # (int) Total detections count to send an email about security
@@ -1,14 +1,17 @@
1
- # Ultralytics YOLO 🚀, AGPL-3.0 license
2
- # Default YOLO tracker settings for BoT-SORT tracker https://github.com/NirAharon/BoT-SORT
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
+
3
+ # Default Ultralytics settings for BoT-SORT tracker when using mode="track"
4
+ # For documentation and examples see https://docs.ultralytics.com/modes/track/
5
+ # For BoT-SORT source code see https://github.com/NirAharon/BoT-SORT
3
6
 
4
7
  tracker_type: botsort # tracker type, ['botsort', 'bytetrack']
5
- track_high_thresh: 0.5 # threshold for the first association
8
+ track_high_thresh: 0.25 # threshold for the first association
6
9
  track_low_thresh: 0.1 # threshold for the second association
7
- new_track_thresh: 0.6 # threshold for init new track if the detection does not match any tracks
10
+ new_track_thresh: 0.25 # threshold for init new track if the detection does not match any tracks
8
11
  track_buffer: 30 # buffer to calculate the time when to remove tracks
9
12
  match_thresh: 0.8 # threshold for matching tracks
13
+ fuse_score: True # Whether to fuse confidence scores with the iou distances before matching
10
14
  # min_box_area: 10 # threshold for min box areas(for tracker evaluation, not used for now)
11
- # mot20: False # for tracker evaluation(not used for now)
12
15
 
13
16
  # BoT-SORT settings
14
17
  gmc_method: sparseOptFlow # method of global motion compensation
@@ -1,11 +1,14 @@
1
- # Ultralytics YOLO 🚀, AGPL-3.0 license
2
- # Default YOLO tracker settings for ByteTrack tracker https://github.com/ifzhang/ByteTrack
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
+
3
+ # Default Ultralytics settings for ByteTrack tracker when using mode="track"
4
+ # For documentation and examples see https://docs.ultralytics.com/modes/track/
5
+ # For ByteTrack source code see https://github.com/ifzhang/ByteTrack
3
6
 
4
7
  tracker_type: bytetrack # tracker type, ['botsort', 'bytetrack']
5
- track_high_thresh: 0.5 # threshold for the first association
8
+ track_high_thresh: 0.25 # threshold for the first association
6
9
  track_low_thresh: 0.1 # threshold for the second association
7
- new_track_thresh: 0.6 # threshold for init new track if the detection does not match any tracks
10
+ new_track_thresh: 0.25 # threshold for init new track if the detection does not match any tracks
8
11
  track_buffer: 30 # buffer to calculate the time when to remove tracks
9
12
  match_thresh: 0.8 # threshold for matching tracks
13
+ fuse_score: True # Whether to fuse confidence scores with the iou distances before matching
10
14
  # min_box_area: 10 # threshold for min box areas(for tracker evaluation, not used for now)
11
- # mot20: False # for tracker evaluation(not used for now)
@@ -1,15 +1,26 @@
1
- # Ultralytics YOLO 🚀, AGPL-3.0 license
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
3
  from .base import BaseDataset
4
- from .build import build_dataloader, build_yolo_dataset, load_inference_source
5
- from .dataset import ClassificationDataset, SemanticDataset, YOLODataset
4
+ from .build import build_dataloader, build_grounding, build_yolo_dataset, load_inference_source
5
+ from .dataset import (
6
+ ClassificationDataset,
7
+ GroundingDataset,
8
+ SemanticDataset,
9
+ YOLOConcatDataset,
10
+ YOLODataset,
11
+ YOLOMultiModalDataset,
12
+ )
6
13
 
7
14
  __all__ = (
8
15
  "BaseDataset",
9
16
  "ClassificationDataset",
10
17
  "SemanticDataset",
11
18
  "YOLODataset",
19
+ "YOLOMultiModalDataset",
20
+ "YOLOConcatDataset",
21
+ "GroundingDataset",
12
22
  "build_yolo_dataset",
23
+ "build_grounding",
13
24
  "build_dataloader",
14
25
  "load_inference_source",
15
26
  )
@@ -1,28 +1,48 @@
1
- # Ultralytics YOLO 🚀, AGPL-3.0 license
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
3
  from pathlib import Path
4
4
 
5
5
  from ultralytics import SAM, YOLO
6
6
 
7
7
 
8
- def auto_annotate(data, det_model="yolov8x.pt", sam_model="sam_b.pt", device="", output_dir=None):
8
+ def auto_annotate(
9
+ data,
10
+ det_model="yolo11x.pt",
11
+ sam_model="sam_b.pt",
12
+ device="",
13
+ conf=0.25,
14
+ iou=0.45,
15
+ imgsz=640,
16
+ max_det=300,
17
+ classes=None,
18
+ output_dir=None,
19
+ ):
9
20
  """
10
21
  Automatically annotates images using a YOLO object detection model and a SAM segmentation model.
11
22
 
23
+ This function processes images in a specified directory, detects objects using a YOLO model, and then generates
24
+ segmentation masks using a SAM model. The resulting annotations are saved as text files.
25
+
12
26
  Args:
13
27
  data (str): Path to a folder containing images to be annotated.
14
- det_model (str, optional): Pre-trained YOLO detection model. Defaults to 'yolov8x.pt'.
15
- sam_model (str, optional): Pre-trained SAM segmentation model. Defaults to 'sam_b.pt'.
16
- device (str, optional): Device to run the models on. Defaults to an empty string (CPU or GPU, if available).
17
- output_dir (str | None | optional): Directory to save the annotated results.
18
- Defaults to a 'labels' folder in the same directory as 'data'.
19
-
20
- Example:
21
- ```python
22
- from ultralytics.data.annotator import auto_annotate
23
-
24
- auto_annotate(data='ultralytics/assets', det_model='yolov8n.pt', sam_model='mobile_sam.pt')
25
- ```
28
+ det_model (str): Path or name of the pre-trained YOLO detection model.
29
+ sam_model (str): Path or name of the pre-trained SAM segmentation model.
30
+ device (str): Device to run the models on (e.g., 'cpu', 'cuda', '0').
31
+ conf (float): Confidence threshold for detection model; default is 0.25.
32
+ iou (float): IoU threshold for filtering overlapping boxes in detection results; default is 0.45.
33
+ imgsz (int): Input image resize dimension; default is 640.
34
+ max_det (int): Limits detections per image to control outputs in dense scenes.
35
+ classes (list): Filters predictions to specified class IDs, returning only relevant detections.
36
+ output_dir (str | None): Directory to save the annotated results. If None, a default directory is created.
37
+
38
+ Examples:
39
+ >>> from ultralytics.data.annotator import auto_annotate
40
+ >>> auto_annotate(data="ultralytics/assets", det_model="yolo11n.pt", sam_model="mobile_sam.pt")
41
+
42
+ Notes:
43
+ - The function creates a new directory for output if not specified.
44
+ - Annotation results are saved as text files with the same names as the input images.
45
+ - Each line in the output text file represents a detected object with its class ID and segmentation points.
26
46
  """
27
47
  det_model = YOLO(det_model)
28
48
  sam_model = SAM(sam_model)
@@ -32,7 +52,9 @@ def auto_annotate(data, det_model="yolov8x.pt", sam_model="sam_b.pt", device="",
32
52
  output_dir = data.parent / f"{data.stem}_auto_annotate_labels"
33
53
  Path(output_dir).mkdir(exist_ok=True, parents=True)
34
54
 
35
- det_results = det_model(data, stream=True, device=device)
55
+ det_results = det_model(
56
+ data, stream=True, device=device, conf=conf, iou=iou, imgsz=imgsz, max_det=max_det, classes=classes
57
+ )
36
58
 
37
59
  for result in det_results:
38
60
  class_ids = result.boxes.cls.int().tolist() # noqa