diff --git a/README.md b/README.md
index c71c721..5501c66 100644
--- a/README.md
+++ b/README.md
@@ -183,11 +183,11 @@ ______________________________________________________________________
### 技术交流
-|FightingCV公众号(论文分享)|YOLOAir目标检测交流群( 答案: yoloair )|
+|FightingCV公众号|YOLOAir目标检测交流群( 答案: yoloair )|
:-------------------------:|:-------------------------:
|
-- FightingCV公众号每天分享最新论文和科技前沿动态
+- FightingCV每天分享前沿论文动态(公众号回复加群, 添加小助手, 加入微信交流群)
- YOLOAir目标检测交流群
______________________________________________________________________
@@ -234,23 +234,23 @@ $ python wbf.py
______________________________________________________________________
### Performance
-| Model | size
(pixels) | mAPval
0.5:0.95 | mAPval
0.5 | Speed
CPU b1
(ms) | Speed
V100 b1
(ms) | Speed
V100 b32
(ms) | params
(M) | FLOPs
@640 (B) |
-|------------------------------------------------------------------------------------------------------|-----------------------|-------------------------|--------------------|------------------------------|-------------------------------|--------------------------------|--------------------|------------------------|
-| YOLOv5n | 640 | 28.0 | 45.7 | **45** | **6.3** | **0.6** | **1.9** | **4.5** |
-| YOLOv5s | 640 | 37.4 | 56.8 | 98 | 6.4 | 0.9 | 7.2 | 16.5 |
-| YOLOv5m | 640 | 45.4 | 64.1 | 224 | 8.2 | 1.7 | 21.2 | 49.0 |
-| YOLOv5l | 640 | 49.0 | 67.3 | 430 | 10.1 | 2.7 | 46.5 | 109.1 |
-| YOLOv5x | 640 | 50.7 | 68.9 | 766 | 12.1 | 4.8 | 86.7 | 205.7 |
+| Model | size
(pixels) | mAPval
0.5:0.95 | mAPval
0.5 | Speed
CPU b1
(ms) | Speed
V100 b1
(ms) | Speed
V100 b32
(ms) | params
(M) | FLOPs
@640 (B) | Weights
+|------------------------------------------------------------------------------------------------------|-----------------------|-------------------------|--------------------|------------------------------|-------------------------------|--------------------------------|--------------------|------------------------|------------------------|
+| YOLOv5n | 640 | 28.0 | 45.7 | **45** | **6.3** | **0.6** | **1.9** | **4.5** | [YOLOv5n](https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5n.pt)
+| YOLOv5s | 640 | 37.4 | 56.8 | 98 | 6.4 | 0.9 | 7.2 | 16.5 | [YOLOv5s](https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5s.pt)
+| YOLOv5m | 640 | 45.4 | 64.1 | 224 | 8.2 | 1.7 | 21.2 | 49.0 | [YOLOv5m](https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5m.pt)
+| YOLOv5l | 640 | 49.0 | 67.3 | 430 | 10.1 | 2.7 | 46.5 | 109.1 | [YOLOv5l](https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5l.pt)
+| YOLOv5x | 640 | 50.7 | 68.9 | 766 | 12.1 | 4.8 | 86.7 | 205.7 | [YOLOv5x](https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5x.pt)
| | | | | | | | | |
-| YOLOv5n6 | 1280 | 36.0 | 54.4 | 153 | 8.1 | 2.1 | 3.2 | 4.6 |
-| YOLOv5s6 | 1280 | 44.8 | 63.7 | 385 | 8.2 | 3.6 | 12.6 | 16.8 |
-| YOLOv5m6 | 1280 | 51.3 | 69.3 | 887 | 11.1 | 6.8 | 35.7 | 50.0 |
-| YOLOv5l6 | 1280 | 53.7 | 71.3 | 1784 | 15.8 | 10.5 | 76.8 | 111.4 |
-| YOLOv5x6
+ TTA | 1280
1536 | 55.0
**55.8** | 72.7
**72.7** | 3136
- | 26.2
- | 19.4
- | 140.7
- | 209.8
- |
+| YOLOv5n6 | 1280 | 36.0 | 54.4 | 153 | 8.1 | 2.1 | 3.2 | 4.6 |[YOLOv5n6](https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5n6.pt)
+| YOLOv5s6 | 1280 | 44.8 | 63.7 | 385 | 8.2 | 3.6 | 12.6 | 16.8 |[YOLOv5s6](https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5s6.pt)
+| YOLOv5m6 | 1280 | 51.3 | 69.3 | 887 | 11.1 | 6.8 | 35.7 | 50.0 |[YOLOv5m6](https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5m6.pt)
+| YOLOv5l6 | 1280 | 53.7 | 71.3 | 1784 | 15.8 | 10.5 | 76.8 | 111.4 |[YOLOv5l6](https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5l6.pt)
+| YOLOv5x6
+ TTA | 1280
1536 | 55.0
**55.8** | 72.7
**72.7** | 3136
- | 26.2
- | 19.4
- | 140.7
- | 209.8
- |[YOLOv5x6](https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5x6.pt)
Expand
-* The original version was created based on YOLOv5
+* The original version was created based on YOLOv5(6.1)
diff --git a/configs/attention/yolov5_SOCA.yaml b/configs/attention/yolov5_SOCA.yaml
index 1d0343f..f9e8928 100644
--- a/configs/attention/yolov5_SOCA.yaml
+++ b/configs/attention/yolov5_SOCA.yaml
@@ -1,4 +1,4 @@
-# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
+# YOLOv5 🚀 by YOLOAir, GPL-3.0 license
# Parameters
nc: 80 # number of classes
@@ -43,7 +43,7 @@ head:
[-1, 1, Conv, [512, 3, 2]],
[[-1, 10], 1, Concat, [1]], # cat head P5
[-1, 3, C3, [1024, False]], # 23 (P5/32-large)
- [-1, 1, SOCA, [512]],
+ [-1, 1, SOCA, [1024]],
[[17, 20, 24], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
]
diff --git a/configs/attention/yolov5_ShuffleAttention.yaml b/configs/attention/yolov5_ShuffleAttention.yaml
index 75f6e7c..8f84377 100644
--- a/configs/attention/yolov5_ShuffleAttention.yaml
+++ b/configs/attention/yolov5_ShuffleAttention.yaml
@@ -1,4 +1,4 @@
-# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
+# YOLOv5 🚀 by YOLOAir, GPL-3.0 license
# Parameters
nc: 80 # number of classes
@@ -43,7 +43,7 @@ head:
[-1, 1, Conv, [512, 3, 2]],
[[-1, 10], 1, Concat, [1]], # cat head P5
[-1, 3, C3, [1024, False]], # 23 (P5/32-large)
- [-1, 1, ShuffleAttention, [512]],
+ [-1, 1, ShuffleAttention, [1024]],
[[17, 20, 24], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
]
diff --git a/configs/attention/yolov5s_CA.yaml b/configs/attention/yolov5s_CA.yaml
index aaf7c14..c8951f1 100644
--- a/configs/attention/yolov5s_CA.yaml
+++ b/configs/attention/yolov5s_CA.yaml
@@ -1,55 +1,49 @@
-# parameters
-nc: 20 # number of classes
+# YOLOv5 🚀 by YOLOAir, GPL-3.0 license
+
+# Parameters
+nc: 80 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
-
-# anchors
anchors:
- #- [5,6, 7,9, 12,10] # P2/4
- [10,13, 16,30, 33,23] # P3/8
- [30,61, 62,45, 59,119] # P4/16
- [116,90, 156,198, 373,326] # P5/32
-# YOLOv5 backbone
+# YOLOv5 v6.0 backbone
backbone:
- # [from, number, module, args] # [c=channels,module,kernlsize,strides]
- [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 [c=3,64*0.5=32,3]
- [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
- [-1, 3, C3, [128]], #2
- [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
- [-1, 6, C3, [256]], #4
- [-1, 3, CA, [256]] , #5
- [-1, 1, Conv, [512, 3, 2]], # 6-P4/16
- [-1, 9, C3, [512]], #7
- [-1, 3, CA, [512]],
- [-1, 1, Conv, [1024, 3, 2]], # 9-P5/32
- [-1, 3, C3, [1024]], # 10
- [-1, 3, CA, [1024]], #11
- [-1, 1, SPPF, [1024, 5]], #12
+ # [from, number, module, args]
+ [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
+ [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
+ [-1, 3, C3, [128]],
+ [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
+ [-1, 6, C3, [256]],
+ [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
+ [-1, 9, C3, [512]],
+ [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
+ [-1, 3, C3, [1024]],
+ [-1, 1, SPPF, [1024, 5]], # 9
]
-# YOLOv5 head
+# YOLOv5 v6.0 head
head:
- [[-1, 1, Conv, [512, 1, 1]], #13
+ [[-1, 1, Conv, [512, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
- [[-1, 8], 1, Concat, [1]], # cat backbone P4
- [-1, 3, C3, [512, False]], # 16
+ [[-1, 6], 1, Concat, [1]], # cat backbone P4
+ [-1, 3, C3, [512, False]], # 13
[-1, 1, Conv, [256, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
- [[-1, 5], 1, Concat, [1]], # cat backbone P3
- [-1, 3, C3, [256, False]], # 20 (P3/8-small)
-
+ [[-1, 4], 1, Concat, [1]], # cat backbone P3
+ [-1, 3, C3, [256, False]], # 17 (P3/8-small)
- [-1, 1, Conv, [256, 3, 2]],
- [[-1, 17], 1, Concat, [1]], # cat head P4
- [-1, 3, C3, [512, False]], # 23 (P4/16-medium) [256, 256, 1, False]
- #[-1, 3, CBAM, [512]], #26
-
+ [-1, 1, Conv, [256, 3, 2]],
+ [[-1, 14], 1, Concat, [1]], # cat head P4
+ [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
- [-1, 1, Conv, [512, 3, 2]], #24 #[256, 256, 3, 2]
- [[-1, 13], 1, Concat, [1]], # cat head P5
- [-1, 3, C3, [1024, False]], # 26 (P5/32-large) [512, 512, 1, False]
+ [-1, 1, Conv, [512, 3, 2]],
+ [[-1, 10], 1, Concat, [1]], # cat head P5
+ [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
+ [-1, 1, CA, [1024]],
- [[20, 23, 26], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
+ [[17, 20, 24], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
]
diff --git a/configs/attention/yolov5s_CrissCrossAttention.yaml b/configs/attention/yolov5s_CrissCrossAttention.yaml
index 947854f..95f042d 100644
--- a/configs/attention/yolov5s_CrissCrossAttention.yaml
+++ b/configs/attention/yolov5s_CrissCrossAttention.yaml
@@ -1,4 +1,4 @@
-# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
+# YOLOv5 🚀 by YOLOAir, GPL-3.0 license
# Parameters
nc: 80 # number of classes
@@ -39,12 +39,11 @@ head:
[-1, 1, Conv, [256, 3, 2]],
[[-1, 14], 1, Concat, [1]], # cat head P4
[-1, 3, C3, [512, False]], # 20 (P4/16-medium)
- # [-1, 1, SKAttention, [256]],
[-1, 1, Conv, [512, 3, 2]],
[[-1, 10], 1, Concat, [1]], # cat head P5
[-1, 3, C3, [1024, False]], # 23 (P5/32-large)
- [-1, 1, CrissCrossAttention, [512]],
+ [-1, 1, CrissCrossAttention, [1024]],
[[17, 20, 24], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
]
diff --git a/configs/attention/yolov5s_GAMAttention.yaml b/configs/attention/yolov5s_GAMAttention.yaml
index e8104ff..ff78cd6 100644
--- a/configs/attention/yolov5s_GAMAttention.yaml
+++ b/configs/attention/yolov5s_GAMAttention.yaml
@@ -1,3 +1,5 @@
+# YOLOv5 🚀 by YOLOAir, GPL-3.0 license
+
# parameters
nc: 10 # number of classes
depth_multiple: 0.33 # model depth multiple
@@ -22,7 +24,7 @@ backbone:
[-1, 9, C3, [512]],
[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
[-1, 3, C3, [1024]],
- [-1, 1, GAMAttention, [512,512]], #9
+ [-1, 1, GAMAttention, [1024,1024]], #9
[-1, 1, SPPF, [1024,5]], #10
]
diff --git a/configs/attention/yolov5s_NAMAttention.yaml b/configs/attention/yolov5s_NAMAttention.yaml
index 8de96ba..6b70356 100644
--- a/configs/attention/yolov5s_NAMAttention.yaml
+++ b/configs/attention/yolov5s_NAMAttention.yaml
@@ -1,4 +1,4 @@
-# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
+# YOLOv5 🚀 by YOLOAir, GPL-3.0 license
# Parameters
nc: 80 # number of classes
@@ -39,12 +39,11 @@ head:
[-1, 1, Conv, [256, 3, 2]],
[[-1, 14], 1, Concat, [1]], # cat head P4
[-1, 3, C3, [512, False]], # 20 (P4/16-medium)
- # [-1, 1, SKAttention, [256]],
[-1, 1, Conv, [512, 3, 2]],
[[-1, 10], 1, Concat, [1]], # cat head P5
[-1, 3, C3, [1024, False]], # 23 (P5/32-large)
- [-1, 1, NAMAttention, [512]],
+ [-1, 1, NAMAttention, [1024]],
[[17, 20, 24], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
]
diff --git a/configs/attention/yolov5s_S2Attention.yaml b/configs/attention/yolov5s_S2Attention.yaml
index bdb514c..7c0db08 100644
--- a/configs/attention/yolov5s_S2Attention.yaml
+++ b/configs/attention/yolov5s_S2Attention.yaml
@@ -1,4 +1,4 @@
-# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
+# YOLOv5 🚀 by YOLOAir, GPL-3.0 license
# Parameters
nc: 80 # number of classes
@@ -43,7 +43,7 @@ head:
[-1, 1, Conv, [512, 3, 2]],
[[-1, 10], 1, Concat, [1]], # cat head P5
[-1, 3, C3, [1024, False]], # 23 (P5/32-large)
- [-1, 1, S2Attention, [512]],
+ [-1, 1, S2Attention, [1024]],
[[17, 20, 24], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
]
diff --git a/configs/attention/yolov5s_SEAttention.yaml b/configs/attention/yolov5s_SEAttention.yaml
index e12832e..f86561d 100644
--- a/configs/attention/yolov5s_SEAttention.yaml
+++ b/configs/attention/yolov5s_SEAttention.yaml
@@ -1,4 +1,4 @@
-# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
+# YOLOv5 🚀 by YOLOAir, GPL-3.0 license
# Parameters
nc: 80 # number of classes
@@ -43,7 +43,7 @@ head:
[-1, 1, Conv, [512, 3, 2]],
[[-1, 10], 1, Concat, [1]], # cat head P5
[-1, 3, C3, [1024, False]], # 23 (P5/32-large)
- [-1, 1, SEAttention, [512]],
+ [-1, 1, SEAttention, [1024]],
[[17, 20, 24], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
]
diff --git a/configs/attention/yolov5s_SKAttention.yaml b/configs/attention/yolov5s_SKAttention.yaml
index 339ae75..be088c3 100644
--- a/configs/attention/yolov5s_SKAttention.yaml
+++ b/configs/attention/yolov5s_SKAttention.yaml
@@ -1,4 +1,4 @@
-# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
+# YOLOv5 🚀 by YOLOAir, GPL-3.0 license
# Parameters
nc: 80 # number of classes
@@ -39,12 +39,11 @@ head:
[-1, 1, Conv, [256, 3, 2]],
[[-1, 14], 1, Concat, [1]], # cat head P4
[-1, 3, C3, [512, False]], # 20 (P4/16-medium)
- # [-1, 1, SKAttention, [256]],
[-1, 1, Conv, [512, 3, 2]],
[[-1, 10], 1, Concat, [1]], # cat head P5
[-1, 3, C3, [1024, False]], # 23 (P5/32-large)
- [-1, 1, SKAttention, [512]],
+ [-1, 1, SKAttention, [1024]],
[[17, 20, 24], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
]
diff --git a/configs/attention/yolov5s_SimAM.yaml b/configs/attention/yolov5s_SimAM.yaml
index 11731cd..6b7f412 100644
--- a/configs/attention/yolov5s_SimAM.yaml
+++ b/configs/attention/yolov5s_SimAM.yaml
@@ -1,4 +1,4 @@
-# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
+# YOLOv5 🚀 by YOLOAir, GPL-3.0 license
# Parameters
nc: 80 # number of classes
@@ -39,12 +39,11 @@ head:
[-1, 1, Conv, [256, 3, 2]],
[[-1, 14], 1, Concat, [1]], # cat head P4
[-1, 3, C3, [512, False]], # 20 (P4/16-medium)
- # [-1, 1, SKAttention, [256]],
[-1, 1, Conv, [512, 3, 2]],
[[-1, 10], 1, Concat, [1]], # cat head P5
[-1, 3, C3, [1024, False]], # 23 (P5/32-large)
- [-1, 1, SimAM, [512]],
+ [-1, 1, SimAM, [1024]],
[[17, 20, 24], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
]
diff --git a/configs/attention/yolov5s_acmix.yaml b/configs/attention/yolov5s_acmix.yaml
index 2a88339..5484cf0 100644
--- a/configs/attention/yolov5s_acmix.yaml
+++ b/configs/attention/yolov5s_acmix.yaml
@@ -1,3 +1,5 @@
+# YOLOv5 🚀 by YOLOAir, GPL-3.0 license
+
# parameters
nc: 10 # number of classes
depth_multiple: 0.33 # model depth multiple
@@ -22,7 +24,7 @@ backbone:
[-1, 9, C3, [512]],
[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
[-1, 3, C3, [1024]],
- [-1, 1, ACmix, [512, 512]], #9
+ [-1, 1, ACmix, [1024, 1024]], #9
[-1, 1, SPPF, [1024,5]], #10
]
diff --git a/configs/attention/yolov5s_cbam.yaml b/configs/attention/yolov5s_cbam.yaml
index a8eb9b2..8ab71df 100644
--- a/configs/attention/yolov5s_cbam.yaml
+++ b/configs/attention/yolov5s_cbam.yaml
@@ -1,56 +1,49 @@
-# parameters
-nc: 10 # number of classes
+# YOLOv5 🚀 by YOLOAir, GPL-3.0 license
+
+# Parameters
+nc: 80 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
-
-# anchors
anchors:
- #- [5,6, 7,9, 12,10] # P2/4
- [10,13, 16,30, 33,23] # P3/8
- [30,61, 62,45, 59,119] # P4/16
- [116,90, 156,198, 373,326] # P5/32
-# YOLOv5 backbone
+# YOLOv5 v6.0 backbone
backbone:
- # [from, number, module, args] # [c=channels,module,kernlsize,strides]
- [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 [c=3,64*0.5=32,3]
- [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
- [-1, 3, C3, [128]],
- [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
- [-1, 6, C3, [256]],
- [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
- [-1, 9, C3, [512]],
+ # [from, number, module, args]
+ [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
+ [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
+ [-1, 3, C3, [128]],
+ [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
+ [-1, 6, C3, [256]],
+ [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
+ [-1, 9, C3, [512]],
[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
- [-1, 3, C3, [1024]],
- [-1, 1, CBAM, [1024]], #9
- [-1, 1, SPPF, [1024,5]], #10
+ [-1, 3, C3, [1024]],
+ [-1, 1, SPPF, [1024, 5]], # 9
]
-# YOLOv5 head
+# YOLOv5 v6.0 head
head:
- [[-1, 1, Conv, [512, 1, 1]],
+ [[-1, 1, Conv, [512, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[[-1, 6], 1, Concat, [1]], # cat backbone P4
- [-1, 3, C3, [512, False]], # 14
+ [-1, 3, C3, [512, False]], # 13
[-1, 1, Conv, [256, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[[-1, 4], 1, Concat, [1]], # cat backbone P3
- [-1, 3, C3, [256, False]], # 18 (P3/8-small)
- [-1, 1, CBAM, [256]], #19
-
+ [-1, 3, C3, [256, False]], # 17 (P3/8-small)
[-1, 1, Conv, [256, 3, 2]],
- [[-1, 15], 1, Concat, [1]], # cat head P4
- [-1, 3, C3, [512, False]], # 22 (P4/16-medium) [256, 256, 1, False]
- [-1, 1, CBAM, [512]],
-
+ [[-1, 14], 1, Concat, [1]], # cat head P4
+ [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
- [-1, 1, Conv, [512, 3, 2]], #[256, 256, 3, 2]
- [[-1, 11], 1, Concat, [1]], # cat head P5
- [-1, 3, C3, [1024, False]], # 25 (P5/32-large) [512, 512, 1, False]
- [-1, 1, CBAM, [1024]],
-
+ [-1, 1, Conv, [512, 3, 2]],
+ [[-1, 10], 1, Concat, [1]], # cat head P5
+ [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
+ [-1, 1, CBAM, [1024]],
- [[19, 23, 27], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
+ [[17, 20, 24], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
]
diff --git a/configs/yolov5_exp/yolov5s_elanfpn.yaml b/configs/yolov5_exp/yolov5s_elanfpn.yaml
new file mode 100644
index 0000000..0b51b61
--- /dev/null
+++ b/configs/yolov5_exp/yolov5s_elanfpn.yaml
@@ -0,0 +1,114 @@
+# YOLOv5 🚀 by YOLOAir, GPL-3.0 license
+
+# parameters
+nc: 80 # number of classes
+depth_multiple: 0.33 # model depth multiple
+width_multiple: 0.50 # layer channel multiple
+
+# anchors
+anchors:
+ - [10,13, 16,30, 33,23] # P3/8
+ - [30,61, 62,45, 59,119] # P4/16
+ - [116,90, 156,198, 373,326] # P5/32
+
+# yolov7-tiny backbone
+backbone:
+ # [from, number, module, args] c2, k=1, s=1, p=None, g=1, act=True
+ [[-1, 1, Conv, [32, 3, 2, None, 1, nn.LeakyReLU(0.1)]], # 0-P1/2
+
+ [-1, 1, Conv, [64, 3, 2, None, 1, nn.LeakyReLU(0.1)]], # 1-P2/4
+
+ [-1, 1, Conv, [32, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-2, 1, Conv, [32, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, Conv, [32, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, Conv, [32, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [[-1, -2, -3, -4], 1, Concat, [1]],
+ [-1, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 7
+
+ [-1, 1, MP, []], # 8-P3/8
+ [-1, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-2, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, Conv, [64, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, Conv, [64, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [[-1, -2, -3, -4], 1, Concat, [1]],
+ [-1, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 14
+
+ [-1, 1, MP, []], # 15-P4/16
+ [-1, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-2, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, Conv, [128, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, Conv, [128, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [[-1, -2, -3, -4], 1, Concat, [1]],
+ [-1, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 21
+
+ [-1, 1, MP, []], # 22-P5/32
+ [-1, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-2, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, Conv, [256, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, Conv, [256, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [[-1, -2, -3, -4], 1, Concat, [1]],
+ [-1, 1, Conv, [512, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 28
+ ]
+
+# yolov7-tiny head
+head:
+ [[-1, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-2, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, SP, [5]],
+ [-2, 1, SP, [9]],
+ [-3, 1, SP, [13]],
+ [[-1, -2, -3, -4], 1, Concat, [1]],
+ [-1, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [[-1, -7], 1, Concat, [1]],
+ [-1, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 37
+
+ [-1, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [21, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # route backbone P4
+ [[-1, -2], 1, Concat, [1]],
+
+ [-1, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-2, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, Conv, [64, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, Conv, [64, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [[-1, -2, -3, -4], 1, Concat, [1]],
+ [-1, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 47
+
+ [-1, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [14, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # route backbone P3
+ [[-1, -2], 1, Concat, [1]],
+
+ [-1, 1, Conv, [32, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-2, 1, Conv, [32, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, Conv, [32, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, Conv, [32, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [[-1, -2, -3, -4], 1, Concat, [1]],
+ [-1, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 57
+
+ [-1, 1, Conv, [128, 3, 2, None, 1, nn.LeakyReLU(0.1)]],
+ [[-1, 47], 1, Concat, [1]],
+
+ [-1, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-2, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, Conv, [64, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, Conv, [64, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [[-1, -2, -3, -4], 1, Concat, [1]],
+ [-1, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 65
+
+ [-1, 1, Conv, [256, 3, 2, None, 1, nn.LeakyReLU(0.1)]],
+ [[-1, 37], 1, Concat, [1]],
+
+ [-1, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-2, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, Conv, [128, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [-1, 1, Conv, [128, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [[-1, -2, -3, -4], 1, Concat, [1]],
+ [-1, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 73
+
+ [57, 1, Conv, [128, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [65, 1, Conv, [256, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+ [73, 1, Conv, [512, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
+
+ [[74,75,76], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
+ ]
diff --git a/models/yolo.py b/models/yolo.py
index 3d9a80d..7d1d292 100644
--- a/models/yolo.py
+++ b/models/yolo.py
@@ -357,7 +357,7 @@ def parse_model(d, ch): # model_dict, input_channels(3)
args.insert(2, n) # number of repeats
n = 1
# add module research
- elif m in [CARAFE, SPPCSPC, RepConv, BoT3, CA, CBAM, Involution, Stem, ResCSPC, ResCSPB, \
+ elif m in [CARAFE, SPPCSPC, RepConv, BoT3, CA, CBAM, NAMAttention, GAMAttention, ACmix, Involution, Stem, ResCSPC, ResCSPB, \
ResXCSPB, ResXCSPC, BottleneckCSPB, BottleneckCSPC,
ASPP, BasicRFB, SPPCSPC_group, HorBlock, CNeB,C3GC ,C3C2, nn.ConvTranspose2d]:
c1, c2 = ch[f], args[0]
@@ -395,6 +395,11 @@ def parse_model(d, ch): # model_dict, input_channels(3)
n = 1
elif m in [ReOrg, DWT]:
c2 = ch[f] * 4
+ elif m in [S2Attention, CrissCrossAttention, SOCA, ShuffleAttention, SEAttention, SimAM, SKAttention]:
+ c1, c2 = ch[f], args[0]
+ if c2 != no: # if not output
+ c2 = make_divisible(c2 * gw, 8)
+ args = [c1, *args[1:]]
elif m is nn.BatchNorm2d:
args = [ch[f]]
elif m is Concat: