├── 1.0.3'
├── 2.0'
├── 4.0.2'
├── 4.1.2'
├── models
├── __init__.py
├── __pycache__
│ ├── common.cpython-38.pyc
│ ├── __init__.cpython-38.pyc
│ └── experimental.cpython-38.pyc
├── shufflenetv2-2head-tiny-all-s.yaml
├── shufflenetv2-2head-tiny-lsefast.yaml
├── shufflenetv2-2head-tiny.yaml
├── shufflenetv2-2head-tiny-lsefast-all-s.yaml
├── shufflenetv2-2head-tiny-lca.yaml
├── shufflenetv2-2head-tiny-lse.yaml
├── yolov5s-2head_wheet.yaml
├── shufflenetv2-2head-tiny-lsefast-sppf-carafe.yaml
├── shufflenetv2-2head-tiny-lsefast-sppf-all-s.yaml
├── shufflenetv2-2head-tiny-lsefast-sppf-2.yaml
├── shufflenetv2-2head-tiny-lsefast-sppf.yaml
├── shufflenetv2-2head.yaml
├── shufflenetv2-2head-16.yaml
├── shufflenetv2-2head-ca.yaml
├── hub
│ ├── yolov5-fpn.yaml
│ ├── yolov3-tiny.yaml
│ ├── yolov5-fpn-asff.yaml
│ ├── yolov5-p34.yaml
│ ├── yolov5s_bm.yaml
│ ├── yolov5-panet.yaml
│ ├── yolov5s-c3ca.yaml
│ ├── yolov5s-c3se.yaml
│ ├── yolov5s-c3lse.yaml
│ ├── yolov5-bifpn.yaml
│ ├── yolov5m-lse.yaml
│ ├── yolov5s-lse.yaml
│ ├── yolov5s-se.yaml
│ ├── yolov5s-c3eca.yaml
│ ├── yolov5s-cbam.yaml
│ ├── yolov5s-c3cbam.yaml
│ ├── yolov5s-transformer.yaml
│ ├── yolov5s-ghost.yaml
│ ├── yolov5s-eca.yaml
│ ├── yolov5s-ca.yaml
│ ├── yolov5s-lse-concat-paper.yaml
│ ├── yolov5s-se-concat.yaml
│ ├── yolov5s-lse-concat.yaml
│ ├── yolov3.yaml
│ ├── yolov3-spp.yaml
│ ├── yolov5-p2.yaml
│ ├── yolov5-p6.yaml
│ ├── yolov5l6.yaml
│ ├── yolov5n6.yaml
│ ├── yolov5s6.yaml
│ ├── yolov5x6.yaml
│ ├── yolov5m6.yaml
│ └── yolov5-p7.yaml
├── shufflenetv2-2head-lse-concat.yaml
├── shufflenetv2-2head-16-lse-concat.yaml
├── shufflenetv2-2head-lsefast-concat.yaml
├── shufflenetv2-2head-16-lsefast-concat.yaml
├── yolov5n.yaml
├── yolov5n_bm.yaml
├── yolov5s.yaml
├── yolov5s_bm.yaml
├── yolov5x.yaml
├── yolov5l.yaml
├── yolov5s-fire.yaml
├── yolov5s-voc.yaml
├── yolov5sFRM.yaml
├── yolov5s_bmp.yaml
├── yolov5s_wheet.yaml
├── yolov5s-asff.yaml
├── yolov5s_voc.yaml
├── shufflenetv2.yaml
├── yolov5s-transformer.yaml
├── yolov5m.yaml
├── yolov5m-LEVIR.yaml
├── yolov5m-LSE.yaml
├── yolov5m-SIMD.yaml
├── yolov5m_fire.yaml
├── yolov5m_pcb.yaml
├── yolov5m_voc.yaml
├── yolov5s-ghost.yaml
├── yolov5m6-lsefast.yaml
├── shufflenetv2-4head.yaml
├── mobilenetv3-SE.yaml
├── mobilenetv3.yaml
├── mobilenetv3-SEOFF.yaml
├── mobilenetv3-CA.yaml
├── mobilenetv3-CA-DEEP.yaml
├── mobilenetv3-ECA.yaml
├── mobilenetv3-LCA.yaml
├── mobilenetv3-LSE.yaml
├── mobilenetv3-CBAM.yaml
├── mobilenetv3-MLCA.yaml
├── mobilenetv3-CA-LSEFAST2.yaml
├── mobilenetv3-CA-LSEFAST-2-OP.yaml
├── mobilenetv3-CA-LSEFAST.yaml
├── mobilenetv3-CA-LSEFAST3.yaml
├── mobilenetv3-LSEFAST.yaml
├── mobilenetv3-LSEFAST-DEEP.yaml
└── mobilenetv3-LSEFAST-wheet.yaml
├── utils
├── aws
│ ├── __init__.py
│ ├── mime.sh
│ ├── userdata.sh
│ └── resume.py
├── loggers
│ ├── wandb
│ │ ├── __init__.py
│ │ ├── __pycache__
│ │ │ ├── __init__.cpython-37.pyc
│ │ │ ├── __init__.cpython-38.pyc
│ │ │ ├── wandb_utils.cpython-37.pyc
│ │ │ └── wandb_utils.cpython-38.pyc
│ │ ├── log_dataset.py
│ │ └── sweep.py
│ └── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ └── __init__.cpython-38.pyc
├── __pycache__
│ ├── loss.cpython-37.pyc
│ ├── loss.cpython-38.pyc
│ ├── plots.cpython-37.pyc
│ ├── plots.cpython-38.pyc
│ ├── general.cpython-37.pyc
│ ├── general.cpython-38.pyc
│ ├── metrics.cpython-37.pyc
│ ├── metrics.cpython-38.pyc
│ ├── __init__.cpython-37.pyc
│ ├── __init__.cpython-38.pyc
│ ├── autoanchor.cpython-37.pyc
│ ├── autoanchor.cpython-38.pyc
│ ├── autobatch.cpython-37.pyc
│ ├── autobatch.cpython-38.pyc
│ ├── callbacks.cpython-37.pyc
│ ├── callbacks.cpython-38.pyc
│ ├── datasets.cpython-37.pyc
│ ├── datasets.cpython-38.pyc
│ ├── downloads.cpython-37.pyc
│ ├── downloads.cpython-38.pyc
│ ├── activations.cpython-37.pyc
│ ├── activations.cpython-38.pyc
│ ├── torch_utils.cpython-37.pyc
│ ├── torch_utils.cpython-38.pyc
│ ├── augmentations.cpython-37.pyc
│ └── augmentations.cpython-38.pyc
├── google_app_engine
│ ├── additional_requirements.txt
│ ├── app.yaml
│ └── Dockerfile
├── flask_rest_api
│ ├── example_request.py
│ ├── restapi.py
│ └── README.md
├── __init__.py
└── autobatch.py
├── .idea
├── .gitignore
├── misc.xml
├── inspectionProfiles
│ └── profiles_settings.xml
├── modules.xml
└── MLCA.iml
├── MLCA.png
├── MLCA-flow.png
├── MLCA原理图.pdf
├── MLCA原理图.pptx
├── run.sh
├── data
├── images
│ ├── bus.jpg
│ └── zidane.jpg
├── testimage
│ └── img.png
├── scripts
│ ├── download_weights.sh
│ ├── get_coco128.sh
│ └── get_coco.sh
├── wheet0.yaml
├── hyps
│ ├── hyp.Objects365.yaml
│ ├── hyp_evolve.yaml
│ ├── hyp.VOC.yaml
│ ├── hyp.scratch-high.yaml
│ ├── hyp.scratch-med.yaml
│ ├── hyp.scratch-low.yaml
│ └── hyp.scratch-low-rect.yaml
├── coco128.yaml
└── GlobalWheat2020.yaml
├── flaskhello.py
├── yolo-gradcam
└── README.md
├── requirements.txt
├── index.html
├── setup.cfg
├── converter.py
└── Dockerfile
/1.0.3':
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/2.0':
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/4.0.2':
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/4.1.2':
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/models/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/utils/aws/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/utils/loggers/wandb/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # 默认忽略的文件
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/MLCA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/MLCA.png
--------------------------------------------------------------------------------
/MLCA-flow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/MLCA-flow.png
--------------------------------------------------------------------------------
/MLCA原理图.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/MLCA原理图.pdf
--------------------------------------------------------------------------------
/MLCA原理图.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/MLCA原理图.pptx
--------------------------------------------------------------------------------
/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | python flask_app.py &
3 | python -m http.server 8888
4 |
--------------------------------------------------------------------------------
/data/images/bus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/data/images/bus.jpg
--------------------------------------------------------------------------------
/data/images/zidane.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/data/images/zidane.jpg
--------------------------------------------------------------------------------
/data/testimage/img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/data/testimage/img.png
--------------------------------------------------------------------------------
/utils/__pycache__/loss.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/loss.cpython-37.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/loss.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/loss.cpython-38.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/plots.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/plots.cpython-37.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/plots.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/plots.cpython-38.pyc
--------------------------------------------------------------------------------
/models/__pycache__/common.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/models/__pycache__/common.cpython-38.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/general.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/general.cpython-37.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/general.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/general.cpython-38.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/metrics.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/metrics.cpython-37.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/metrics.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/metrics.cpython-38.pyc
--------------------------------------------------------------------------------
/models/__pycache__/__init__.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/models/__pycache__/__init__.cpython-38.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/__init__.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/__init__.cpython-37.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/__init__.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/__init__.cpython-38.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/autoanchor.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/autoanchor.cpython-37.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/autoanchor.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/autoanchor.cpython-38.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/autobatch.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/autobatch.cpython-37.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/autobatch.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/autobatch.cpython-38.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/callbacks.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/callbacks.cpython-37.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/callbacks.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/callbacks.cpython-38.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/datasets.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/datasets.cpython-37.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/datasets.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/datasets.cpython-38.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/downloads.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/downloads.cpython-37.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/downloads.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/downloads.cpython-38.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/activations.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/activations.cpython-37.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/activations.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/activations.cpython-38.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/torch_utils.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/torch_utils.cpython-37.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/torch_utils.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/torch_utils.cpython-38.pyc
--------------------------------------------------------------------------------
/models/__pycache__/experimental.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/models/__pycache__/experimental.cpython-38.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/augmentations.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/augmentations.cpython-37.pyc
--------------------------------------------------------------------------------
/utils/__pycache__/augmentations.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/__pycache__/augmentations.cpython-38.pyc
--------------------------------------------------------------------------------
/utils/loggers/__pycache__/__init__.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/loggers/__pycache__/__init__.cpython-37.pyc
--------------------------------------------------------------------------------
/utils/loggers/__pycache__/__init__.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/loggers/__pycache__/__init__.cpython-38.pyc
--------------------------------------------------------------------------------
/utils/loggers/wandb/__pycache__/__init__.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/loggers/wandb/__pycache__/__init__.cpython-37.pyc
--------------------------------------------------------------------------------
/utils/loggers/wandb/__pycache__/__init__.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/loggers/wandb/__pycache__/__init__.cpython-38.pyc
--------------------------------------------------------------------------------
/utils/loggers/wandb/__pycache__/wandb_utils.cpython-37.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/loggers/wandb/__pycache__/wandb_utils.cpython-37.pyc
--------------------------------------------------------------------------------
/utils/loggers/wandb/__pycache__/wandb_utils.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wandahangFY/MLCA/HEAD/utils/loggers/wandb/__pycache__/wandb_utils.cpython-38.pyc
--------------------------------------------------------------------------------
/utils/google_app_engine/additional_requirements.txt:
--------------------------------------------------------------------------------
1 | # add these requirements in your app on top of the existing ones
2 | pip==21.1
3 | Flask==1.0.2
4 | gunicorn==19.9.0
5 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/utils/google_app_engine/app.yaml:
--------------------------------------------------------------------------------
1 | runtime: custom
2 | env: flex
3 |
4 | service: yolov5app
5 |
6 | liveness_check:
7 | initial_delay_sec: 600
8 |
9 | manual_scaling:
10 | instances: 1
11 | resources:
12 | cpu: 1
13 | memory_gb: 4
14 | disk_size_gb: 20
15 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/utils/flask_rest_api/example_request.py:
--------------------------------------------------------------------------------
1 | """Perform test request"""
2 | import pprint
3 |
4 | import requests
5 |
6 | DETECTION_URL = "http://localhost:5000/v1/object-detection/yolov5s"
7 | TEST_IMAGE = "zidane.jpg"
8 |
9 | image_data = open(TEST_IMAGE, "rb").read()
10 |
11 | response = requests.post(DETECTION_URL, files={"image": image_data}).json()
12 |
13 | pprint.pprint(response)
14 |
--------------------------------------------------------------------------------
/flaskhello.py:
--------------------------------------------------------------------------------
1 |
2 | # 从flask框架中导入Flask类
3 | from flask import Flask
4 |
5 | # 传入__name__初始化一个Flask实例
6 | app = Flask(__name__)
7 |
8 | # app.route装饰器映射URL和执行的函数。这个设置将根URL映射到了hello_world函数上
9 | @app.route('/')
10 | def hello_world():
11 | return 'Hello World!'
12 |
13 | if __name__ == '__main__':
14 | # 运行本项目,host=0.0.0.0可以让其他电脑也能访问到该网站,port指定访问的端口。
15 | # 默认的host是127.0.0.1,port为5000
16 | #app.run(host='0.0.0.0', port=9000)
17 | app.run()
18 |
--------------------------------------------------------------------------------
/yolo-gradcam/README.md:
--------------------------------------------------------------------------------
1 | # yolo-gradcam
2 | yolo model with gradcam visual.
3 | 即插即用,不需要对源码进行任何修改!
4 |
5 | ## 哔哩哔哩视频教学地址
6 | 1. yolov5-[哔哩哔哩地址](https://www.bilibili.com/video/BV1WP4y1v7gQ/)
7 | 2. yolov7-[哔哩哔哩地址](https://www.bilibili.com/video/BV1oD4y1j7KH/)
8 | 2. yolov8-[哔哩哔哩地址](https://www.bilibili.com/video/BV1R24y1h7hv/)
9 |
10 | ## 环境
11 | pip install grad-cam
12 |
13 | ## 注意事项
14 | 1. yolov5是在v7.0进行编写和测试的。
15 | 2. yolov7是在2022.12.30号的版本进行编写和测试的。
16 | 3. yolov8是在2023.1.16号的版本进行编写和测试的。
17 | 3. 建议在新版本下进行使用,旧版本可能会有报错,需要自行解决。
18 |
--------------------------------------------------------------------------------
/.idea/MLCA.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/data/scripts/download_weights.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
3 | # Download latest models from https://github.com/ultralytics/yolov5/releases
4 | # Example usage: bash path/to/download_weights.sh
5 | # parent
6 | # └── yolov5
7 | # ├── yolov5s.pt ← downloads here
8 | # ├── yolov5m.pt
9 | # └── ...
10 |
11 | python - <=3.2.2
5 | numpy>=1.18.5
6 | opencv-python>=4.0.2
7 | Pillow>=7.1.2
8 | PyYAML>=5.3.1
9 | requests>=2.23.0
10 | scipy>=1.4.1
11 | # torch=1.7.0
12 | # torchvision=0.8.1
13 | tqdm>=4.41.0
14 |
15 | # Logging -------------------------------------
16 | tensorboard>=2.4.1
17 | wandb
18 |
19 | # Plotting ------------------------------------
20 | pandas>=1.1.4
21 | seaborn>=0.11.0
22 |
23 | # Export --------------------------------------
24 | # coremltools>=4.1 # CoreML export
25 | # onnx>=1.9.0 # ONNX export
26 | # onnx-simplifier>=0.3.6 # ONNX simplifier
27 | # scikit-learn==0.19.2 # CoreML quantization
28 | # tensorflow>=2.4.1 # TFLite export
29 | # tensorflowjs>=3.9.0 # TF.js export
30 | # openvino-dev # OpenVINO export
31 |
32 | # Extras --------------------------------------
33 | # albumentations>=1.0.3
34 | # Cython # for pycocotools https://github.com/cocodataset/cocoapi/issues/172
35 | # pycocotools>=2.0 # COCO mAP
36 | # roboflow
37 | thop # FLOPs computation
38 |
--------------------------------------------------------------------------------
/utils/loggers/wandb/log_dataset.py:
--------------------------------------------------------------------------------
1 | import argparse
2 |
3 | from wandb_utils import WandbLogger
4 |
5 | from utils.general import LOGGER
6 |
7 | WANDB_ARTIFACT_PREFIX = 'wandb-artifact://'
8 |
9 |
10 | def create_dataset_artifact(opt):
11 | logger = WandbLogger(opt, None, job_type='Dataset Creation') # TODO: return value unused
12 | if not logger.wandb:
13 | LOGGER.info("install wandb using `pip install wandb` to log the dataset")
14 |
15 |
16 | if __name__ == '__main__':
17 | parser = argparse.ArgumentParser()
18 | parser.add_argument('--data', type=str, default='data/coco128.yaml', help='data.yaml path')
19 | parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset')
20 | parser.add_argument('--project', type=str, default='YOLOv5', help='name of W&B Project')
21 | parser.add_argument('--entity', default=None, help='W&B entity')
22 | parser.add_argument('--name', type=str, default='log dataset', help='name of W&B run')
23 |
24 | opt = parser.parse_args()
25 | opt.resume = False # Explicitly disallow resume check for dataset upload job
26 |
27 | create_dataset_artifact(opt)
28 |
--------------------------------------------------------------------------------
/models/shufflenetv2-2head-tiny-all-s.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | # - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, ShuffleNet_Blk, [256, 2]],
30 | [-1, 1, nn.Upsample, [None, 4, 'nearest']],
31 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
32 | [-1, 1, ShuffleNet_Blk, [512, 1]], # 10
33 | [[7, 10], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
34 | ]
35 |
--------------------------------------------------------------------------------
/models/shufflenetv2-2head-tiny-lsefast.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | # - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [256, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
32 | [-1, 1, LSEFast, [512]],
33 | [-1, 1, C3, [256, False]], # 10
34 | [[7, 11], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
35 | ]
36 |
--------------------------------------------------------------------------------
/models/shufflenetv2-2head-tiny.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | # - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | # [ -1, 1, CA, [ 512] ], # 5-P5/32
25 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [256, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
33 | [-1, 1, C3, [256, False]], # 10
34 | [[7, 10], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
35 | ]
36 |
--------------------------------------------------------------------------------
/models/shufflenetv2-2head-tiny-lsefast-all-s.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | # - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, ShuffleNet_Blk, [256, 2]],
30 | [-1, 1, nn.Upsample, [None, 4, 'nearest']],
31 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
32 | [-1, 1, LSEFast, [512]],
33 | [-1, 1, ShuffleNet_Blk, [512, 1]], # 10
34 | [[7, 11], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
35 | ]
36 |
--------------------------------------------------------------------------------
/models/shufflenetv2-2head-tiny-lca.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | # - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | # [ -1, 1, CA, [ 512] ], # 5-P5/32
25 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [256, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
33 | [-1, 1, LCA, [512]],
34 | [-1, 1, C3, [256, False]], # 10
35 | [[7, 11], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
36 | ]
37 |
--------------------------------------------------------------------------------
/models/shufflenetv2-2head-tiny-lse.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | # - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | # [ -1, 1, CA, [ 512] ], # 5-P5/32
25 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [256, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
33 | [-1, 1, LSE, [512]],
34 | [-1, 1, C3, [256, False]], # 10
35 | [[7, 11], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
36 | ]
37 |
--------------------------------------------------------------------------------
/utils/flask_rest_api/restapi.py:
--------------------------------------------------------------------------------
1 | """
2 | Run a rest API exposing the yolov5s object detection model
3 | """
4 | import argparse
5 | import io
6 |
7 | import torch
8 | from flask import Flask, request
9 | from PIL import Image
10 |
11 | app = Flask(__name__)
12 |
13 | DETECTION_URL = "/v1/object-detection/yolov5s"
14 |
15 |
16 | @app.route(DETECTION_URL, methods=["POST"])
17 | def predict():
18 | if not request.method == "POST":
19 | return
20 |
21 | if request.files.get("image"):
22 | image_file = request.files["image"]
23 | image_bytes = image_file.read()
24 |
25 | img = Image.open(io.BytesIO(image_bytes))
26 |
27 | results = model(img, size=640) # reduce size=320 for faster inference
28 | return results.pandas().xyxy[0].to_json(orient="records")
29 |
30 |
31 | if __name__ == "__main__":
32 | parser = argparse.ArgumentParser(description="Flask API exposing YOLOv5 model")
33 | parser.add_argument("--port", default=5000, type=int, help="port number")
34 | args = parser.parse_args()
35 |
36 | model = torch.hub.load("ultralytics/yolov5", "yolov5s", force_reload=True) # force_reload to recache
37 | app.run(host="0.0.0.0", port=args.port) # debug=True causes Restarting with stat
38 |
--------------------------------------------------------------------------------
/utils/__init__.py:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 | """
3 | utils/initialization
4 | """
5 |
6 |
7 | def notebook_init(verbose=True):
8 | # Check system software and hardware
9 | print('Checking setup...')
10 |
11 | import os
12 | import shutil
13 |
14 | from utils.general import check_requirements, emojis, is_colab
15 | from utils.torch_utils import select_device # imports
16 |
17 | check_requirements(('psutil', 'IPython'))
18 | import psutil
19 | from IPython import display # to display images and clear console output
20 |
21 | if is_colab():
22 | shutil.rmtree('/content/sample_data', ignore_errors=True) # remove colab /sample_data directory
23 |
24 | if verbose:
25 | # System info
26 | # gb = 1 / 1000 ** 3 # bytes to GB
27 | gib = 1 / 1024 ** 3 # bytes to GiB
28 | ram = psutil.virtual_memory().total
29 | total, used, free = shutil.disk_usage("/")
30 | display.clear_output()
31 | s = f'({os.cpu_count()} CPUs, {ram * gib:.1f} GB RAM, {(total - free) * gib:.1f}/{total * gib:.1f} GB disk)'
32 | else:
33 | s = ''
34 |
35 | select_device(newline=False)
36 | print(emojis(f'Setup complete ✅ {s}'))
37 | return display
38 |
--------------------------------------------------------------------------------
/models/yolov5s-2head_wheet.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [22,44, 27,91, 56,52] # P3/8
9 | - [66,96, 151,45, 37,190] # P4/16
10 | # - [150,88, 84,177, 196,200] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | # [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | # [-1, 3, C3, [1024]],
24 | # [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
32 | [-1, 1, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [512, 3, 2]],
35 | [[-1, 7], 1, Concat, [1]], # cat head P5
36 | [-1, 1, C3, [1024, False]], # 23 (P5/32-large)
37 |
38 | [[7, 10], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
39 | ]
40 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | YOLOv5目标检测Flask Web部署演示
12 |
13 |
14 |

15 |

16 |

17 |
18 |
19 |
20 |
21 |
22 | 检测结果:
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/models/shufflenetv2-2head-tiny-lsefast-sppf-carafe.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | # - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
25 | # [-1, 1, SPPF, [512, 5]], # 7
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, ShuffleNet_Blk, [256, 2]],
31 | [-1, 1, CARAFE, [256, 3 ,4]],
32 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
33 | [-1, 1, LSEFast, [512]],
34 | [-1, 1, ShuffleNet_Blk, [512, 1]], # 10
35 | # [[8, 12], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
36 | [[7, 11], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
37 | ]
38 |
--------------------------------------------------------------------------------
/data/hyps/hyp.VOC.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 | # Hyperparameters for VOC training
3 | # python train.py --batch 128 --weights yolov5m6.pt --data VOC.yaml --epochs 50 --img 512 --hyp hyp.scratch-med.yaml --evolve
4 | # See Hyperparameter Evolution tutorial for details https://github.com/ultralytics/yolov5#tutorials
5 |
6 | # YOLOv5 Hyperparameter Evolution Results
7 | # Best generation: 319
8 | # Last generation: 434
9 | # metrics/precision, metrics/recall, metrics/mAP_0.5, metrics/mAP_0.5:0.95, val/box_loss, val/obj_loss, val/cls_loss
10 | # 0.86236, 0.86184, 0.91274, 0.72647, 0.0077056, 0.0042449, 0.0013846
11 |
12 | lr0: 0.0033
13 | lrf: 0.15184
14 | momentum: 0.74747
15 | weight_decay: 0.00025
16 | warmup_epochs: 3.4278
17 | warmup_momentum: 0.59032
18 | warmup_bias_lr: 0.18742
19 | box: 0.02
20 | cls: 0.21563
21 | cls_pw: 0.5
22 | obj: 0.50843
23 | obj_pw: 0.6729
24 | iou_t: 0.2
25 | anchor_t: 3.4172
26 | fl_gamma: 0.0
27 | hsv_h: 0.01032
28 | hsv_s: 0.5562
29 | hsv_v: 0.28255
30 | degrees: 0.0
31 | translate: 0.04575
32 | scale: 0.73711
33 | shear: 0.0
34 | perspective: 0.0
35 | flipud: 0.0
36 | fliplr: 0.5
37 | mosaic: 0.87158
38 | mixup: 0.04294
39 | copy_paste: 0.0
40 | anchors: 3.3556
41 |
--------------------------------------------------------------------------------
/utils/loggers/wandb/sweep.py:
--------------------------------------------------------------------------------
1 | import sys
2 | from pathlib import Path
3 |
4 | import wandb
5 |
6 | FILE = Path(__file__).resolve()
7 | ROOT = FILE.parents[3] # YOLOv5 root directory
8 | if str(ROOT) not in sys.path:
9 | sys.path.append(str(ROOT)) # add ROOT to PATH
10 |
11 | from train import parse_opt, train
12 | from utils.callbacks import Callbacks
13 | from utils.general import increment_path
14 | from utils.torch_utils import select_device
15 |
16 |
17 | def sweep():
18 | wandb.init()
19 | # Get hyp dict from sweep agent
20 | hyp_dict = vars(wandb.config).get("_items")
21 |
22 | # Workaround: get necessary opt args
23 | opt = parse_opt(known=True)
24 | opt.batch_size = hyp_dict.get("batch_size")
25 | opt.save_dir = str(increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok or opt.evolve))
26 | opt.epochs = hyp_dict.get("epochs")
27 | opt.nosave = True
28 | opt.data = hyp_dict.get("data")
29 | opt.weights = str(opt.weights)
30 | opt.cfg = str(opt.cfg)
31 | opt.data = str(opt.data)
32 | opt.hyp = str(opt.hyp)
33 | opt.project = str(opt.project)
34 | device = select_device(opt.device, batch_size=opt.batch_size)
35 |
36 | # train
37 | train(hyp_dict, opt, device, callbacks=Callbacks())
38 |
39 |
40 | if __name__ == "__main__":
41 | sweep()
42 |
--------------------------------------------------------------------------------
/models/shufflenetv2-2head-tiny-lsefast-sppf-all-s.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | # - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
25 | [-1, 1, SPPF, [512, 5]], # 7
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, ShuffleNet_Blk, [256, 2]],
31 | [-1, 1, nn.Upsample, [None, 4, 'nearest']],
32 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
33 | [-1, 1, LSEFast, [512]],
34 | [-1, 1, ShuffleNet_Blk, [512, 1]], # 10
35 | # [[8, 12], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
36 | [[7, 11], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
37 | ]
38 |
--------------------------------------------------------------------------------
/models/shufflenetv2-2head-tiny-lsefast-sppf-2.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | # - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
25 | [-1 , 1, SPPF, [512, 5]], # 7
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [256, 1, 1]],
31 | [-1, 1, LCA, [256]],
32 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
33 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
34 | # [-1, 1, CBAM, [512]],
35 | [-1, 1, C3, [256, False]], # 10
36 | [[7, 11], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
37 | # [[8, 12], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
38 | ]
39 |
--------------------------------------------------------------------------------
/models/shufflenetv2-2head-tiny-lsefast-sppf.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | # - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
25 | [-1 , 1, SPPF, [512, 5]], # 7
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [256, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
33 | [-1, 1, LSEFast, [512]],
34 | # [-1, 1, CBAM, [512]],
35 | [-1, 1, C3, [256, False]], # 10
36 | [[7, 11], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
37 | # [[8, 12], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
38 | ]
39 |
--------------------------------------------------------------------------------
/models/shufflenetv2-2head.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | # - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | # [ -1, 1, CA, [ 512] ], # 5-P5/32
25 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [256, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
33 | [-1, 1, C3, [256, False]], # 10
34 |
35 | [-1, 1, Conv, [256, 3, 2]],
36 | [[-1, 7], 1, Concat, [1]], # cat head P5
37 | [-1, 1, C3, [512, False]], # 20 (P5/32-large)
38 |
39 | [[7, 10], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
40 | ]
41 |
--------------------------------------------------------------------------------
/models/shufflenetv2-2head-16.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | # - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | # [ -1, 1, CA, [ 512] ], # 5-P5/32
25 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [256, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
33 | [-1, 1, C3, [256, False]], # 10
34 |
35 | [-1, 1, Conv, [256, 3, 2]],
36 | [[-1, 7], 1, Concat, [1]], # cat head P5
37 | [-1, 1, C3, [512, False]], # 20 (P5/32-large)
38 |
39 | [[10, 13], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
40 | ]
41 |
--------------------------------------------------------------------------------
/models/shufflenetv2-2head-ca.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | # - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | [ -1, 1, CA, [ 512] ], # 5-P5/32
25 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [256, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
33 | [-1, 1, C3, [256, False]], # 10
34 |
35 | [-1, 1, Conv, [256, 3, 2]],
36 | [[-1, 8], 1, Concat, [1]], # cat head P5
37 | [-1, 1, C3, [512, False]], # 20 (P5/32-large)
38 |
39 | [[8, 11], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
40 | ]
41 |
--------------------------------------------------------------------------------
/utils/aws/userdata.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # AWS EC2 instance startup script https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html
3 | # This script will run only once on first instance start (for a re-start script see mime.sh)
4 | # /home/ubuntu (ubuntu) or /home/ec2-user (amazon-linux) is working dir
5 | # Use >300 GB SSD
6 |
7 | cd home/ubuntu
8 | if [ ! -d yolov5 ]; then
9 | echo "Running first-time script." # install dependencies, download COCO, pull Docker
10 | git clone https://github.com/ultralytics/yolov5 -b master && sudo chmod -R 777 yolov5
11 | cd yolov5
12 | bash data/scripts/get_coco.sh && echo "COCO done." &
13 | sudo docker pull ultralytics/yolov5:latest && echo "Docker done." &
14 | python -m pip install --upgrade pip && pip install -r requirements.txt && python detect.py && echo "Requirements done." &
15 | wait && echo "All tasks done." # finish background tasks
16 | else
17 | echo "Running re-start script." # resume interrupted runs
18 | i=0
19 | list=$(sudo docker ps -qa) # container list i.e. $'one\ntwo\nthree\nfour'
20 | while IFS= read -r id; do
21 | ((i++))
22 | echo "restarting container $i: $id"
23 | sudo docker start $id
24 | # sudo docker exec -it $id python train.py --resume # single-GPU
25 | sudo docker exec -d $id python utils/aws/resume.py # multi-scenario
26 | done <<<"$list"
27 | fi
28 |
--------------------------------------------------------------------------------
/utils/aws/resume.py:
--------------------------------------------------------------------------------
1 | # Resume all interrupted trainings in yolov5/ dir including DDP trainings
2 | # Usage: $ python utils/aws/resume.py
3 |
4 | import os
5 | import sys
6 | from pathlib import Path
7 |
8 | import torch
9 | import yaml
10 |
11 | FILE = Path(__file__).resolve()
12 | ROOT = FILE.parents[2] # YOLOv5 root directory
13 | if str(ROOT) not in sys.path:
14 | sys.path.append(str(ROOT)) # add ROOT to PATH
15 |
16 | port = 0 # --master_port
17 | path = Path('').resolve()
18 | for last in path.rglob('*/**/last.pt'):
19 | ckpt = torch.load(last)
20 | if ckpt['optimizer'] is None:
21 | continue
22 |
23 | # Load opt.yaml
24 | with open(last.parent.parent / 'opt.yaml', errors='ignore') as f:
25 | opt = yaml.safe_load(f)
26 |
27 | # Get device count
28 | d = opt['device'].split(',') # devices
29 | nd = len(d) # number of devices
30 | ddp = nd > 1 or (nd == 0 and torch.cuda.device_count() > 1) # distributed data parallel
31 |
32 | if ddp: # multi-GPU
33 | port += 1
34 | cmd = f'python -m torch.distributed.run --nproc_per_node {nd} --master_port {port} train.py --resume {last}'
35 | else: # single-GPU
36 | cmd = f'python train.py --resume {last}'
37 |
38 | cmd += ' > /dev/null 2>&1 &' # redirect output to dev/null and run in daemon thread
39 | print(cmd)
40 | os.system(cmd)
41 |
--------------------------------------------------------------------------------
/models/hub/yolov5-fpn.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.5 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 FPN head
28 | head:
29 | [[-1, 3, C3, [1024, False]], # 10 (P5/32-large)
30 |
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
33 | [-1, 1, Conv, [512, 1, 1]],
34 | [-1, 3, C3, [512, False]], # 14 (P4/16-medium)
35 |
36 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
37 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
38 | [-1, 1, Conv, [256, 1, 1]],
39 | [-1, 3, C3, [256, False]], # 18 (P3/8-small)
40 |
41 | [[18, 14, 10], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
42 | ]
43 |
--------------------------------------------------------------------------------
/models/hub/yolov3-tiny.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 1.0 # model depth multiple
6 | width_multiple: 1.0 # layer channel multiple
7 | anchors:
8 | - [10,14, 23,27, 37,58] # P4/16
9 | - [81,82, 135,169, 344,319] # P5/32
10 |
11 | # YOLOv3-tiny backbone
12 | backbone:
13 | # [from, number, module, args]
14 | [[-1, 1, Conv, [16, 3, 1]], # 0
15 | [-1, 1, nn.MaxPool2d, [2, 2, 0]], # 1-P1/2
16 | [-1, 1, Conv, [32, 3, 1]],
17 | [-1, 1, nn.MaxPool2d, [2, 2, 0]], # 3-P2/4
18 | [-1, 1, Conv, [64, 3, 1]],
19 | [-1, 1, nn.MaxPool2d, [2, 2, 0]], # 5-P3/8
20 | [-1, 1, Conv, [128, 3, 1]],
21 | [-1, 1, nn.MaxPool2d, [2, 2, 0]], # 7-P4/16
22 | [-1, 1, Conv, [256, 3, 1]],
23 | [-1, 1, nn.MaxPool2d, [2, 2, 0]], # 9-P5/32
24 | [-1, 1, Conv, [512, 3, 1]],
25 | [-1, 1, nn.ZeroPad2d, [[0, 1, 0, 1]]], # 11
26 | [-1, 1, nn.MaxPool2d, [2, 1, 0]], # 12
27 | ]
28 |
29 | # YOLOv3-tiny head
30 | head:
31 | [[-1, 1, Conv, [1024, 3, 1]],
32 | [-1, 1, Conv, [256, 1, 1]],
33 | [-1, 1, Conv, [512, 3, 1]], # 15 (P5/32-large)
34 |
35 | [-2, 1, Conv, [128, 1, 1]],
36 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
37 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
38 | [-1, 1, Conv, [256, 3, 1]], # 19 (P4/16-medium)
39 |
40 | [[19, 15], 1, Detect, [nc, anchors]], # Detect(P4, P5)
41 | ]
42 |
--------------------------------------------------------------------------------
/models/hub/yolov5-fpn-asff.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.5 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 FPN head
28 | head:
29 | [[-1, 3, C3, [1024, False]], # 10 (P5/32-large)
30 |
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
33 | [-1, 1, Conv, [512, 1, 1]],
34 | [-1, 3, C3, [512, False]], # 14 (P4/16-medium)
35 |
36 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
37 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
38 | [-1, 1, Conv, [256, 1, 1]],
39 | [-1, 3, C3, [256, False]], # 18 (P3/8-small)
40 |
41 | [[18, 14, 10], 1, ASFF_Detect, [nc, anchors]], # Detect(P3, P4, P5)
42 | ]
43 |
--------------------------------------------------------------------------------
/models/shufflenetv2-2head-lse-concat.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | # - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | # [ -1, 1, CA, [ 512] ], # 5-P5/32
25 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [256, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
33 | [-1, 1, LSE, [512]],
34 | [-1, 1, C3, [256, False]], # 10
35 |
36 | [-1, 1, Conv, [256, 3, 2]],
37 | [[-1, 7], 1, Concat, [1]], # cat head P5
38 | [-1, 1, LSE, [512]],
39 | [-1, 1, C3, [512, False]], # 20 (P5/32-large)
40 |
41 | [[7, 10], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
42 | ]
43 |
--------------------------------------------------------------------------------
/models/shufflenetv2-2head-16-lse-concat.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | # - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | # [ -1, 1, CA, [ 512] ], # 5-P5/32
25 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [256, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
33 | [-1, 1, LSE, [512]],
34 | [-1, 1, C3, [256, False]], # 10
35 |
36 | [-1, 1, Conv, [256, 3, 2]],
37 | [[-1, 7], 1, Concat, [1]], # cat head P5
38 | [-1, 1, LSE, [512]],
39 | [-1, 1, C3, [512, False]], # 20 (P5/32-large)
40 |
41 | [[11, 15], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
42 | ]
43 |
--------------------------------------------------------------------------------
/models/shufflenetv2-2head-lsefast-concat.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | # - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | # [ -1, 1, CA, [ 512] ], # 5-P5/32
25 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [256, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
33 | [-1, 1, LSEFast, [512]],
34 | [-1, 1, C3, [256, False]], # 10
35 |
36 | [-1, 1, Conv, [256, 3, 2]],
37 | [[-1, 7], 1, Concat, [1]], # cat head P5
38 | [-1, 1, LSEFast, [512]],
39 | [-1, 1, C3, [512, False]], # 20 (P5/32-large)
40 |
41 | [[7, 10], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
42 | ]
43 |
--------------------------------------------------------------------------------
/models/shufflenetv2-2head-16-lsefast-concat.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | # - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | # [ -1, 1, CA, [ 512] ], # 5-P5/32
25 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [256, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
33 | [-1, 1, LSEFast, [512]],
34 | [-1, 1, C3, [256, False]], # 10
35 |
36 | [-1, 1, Conv, [256, 3, 2]],
37 | [[-1, 7], 1, Concat, [1]], # cat head P5
38 | [-1, 1, LSEFast, [512]],
39 | [-1, 1, C3, [512, False]], # 20 (P5/32-large)
40 |
41 | [[7, 10], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
42 | ]
43 |
--------------------------------------------------------------------------------
/setup.cfg:
--------------------------------------------------------------------------------
1 | # Project-wide configuration file, can be used for package metadata and other toll configurations
2 | # Example usage: global configuration for PEP8 (via flake8) setting or default pytest arguments
3 |
4 | [metadata]
5 | license_file = LICENSE
6 | description-file = README.md
7 |
8 |
9 | [tool:pytest]
10 | norecursedirs =
11 | .git
12 | dist
13 | build
14 | addopts =
15 | --doctest-modules
16 | --durations=25
17 | --color=yes
18 |
19 |
20 | [flake8]
21 | max-line-length = 120
22 | exclude = .tox,*.egg,build,temp
23 | select = E,W,F
24 | doctests = True
25 | verbose = 2
26 | # https://pep8.readthedocs.io/en/latest/intro.html#error-codes
27 | format = pylint
28 | # see: https://www.flake8rules.com/
29 | ignore =
30 | E731 # Do not assign a lambda expression, use a def
31 | F405 # name may be undefined, or defined from star imports: module
32 | E402 # module level import not at top of file
33 | F401 # module imported but unused
34 | W504 # line break after binary operator
35 | E127 # continuation line over-indented for visual indent
36 | W504 # line break after binary operator
37 | E231 # missing whitespace after ‘,’, ‘;’, or ‘:’
38 | E501 # line too long
39 | F403 # ‘from module import *’ used; unable to detect undefined names
40 |
41 |
42 | [isort]
43 | # https://pycqa.github.io/isort/docs/configuration/options.html
44 | line_length = 120
45 | multi_line_output = 0
46 |
--------------------------------------------------------------------------------
/models/hub/yolov5-p34.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors: 3 # AutoAnchor evolves 3 anchors per P output layer
8 |
9 | # YOLOv5 v6.0 backbone
10 | backbone:
11 | # [from, number, module, args]
12 | [ [ -1, 1, Conv, [ 64, 6, 2, 2 ] ], # 0-P1/2
13 | [ -1, 1, Conv, [ 128, 3, 2 ] ], # 1-P2/4
14 | [ -1, 3, C3, [ 128 ] ],
15 | [ -1, 1, Conv, [ 256, 3, 2 ] ], # 3-P3/8
16 | [ -1, 6, C3, [ 256 ] ],
17 | [ -1, 1, Conv, [ 512, 3, 2 ] ], # 5-P4/16
18 | [ -1, 9, C3, [ 512 ] ],
19 | [ -1, 1, Conv, [ 1024, 3, 2 ] ], # 7-P5/32
20 | [ -1, 3, C3, [ 1024 ] ],
21 | [ -1, 1, SPPF, [ 1024, 5 ] ], # 9
22 | ]
23 |
24 | # YOLOv5 v6.0 head with (P3, P4) outputs
25 | head:
26 | [ [ -1, 1, Conv, [ 512, 1, 1 ] ],
27 | [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
28 | [ [ -1, 6 ], 1, Concat, [ 1 ] ], # cat backbone P4
29 | [ -1, 3, C3, [ 512, False ] ], # 13
30 |
31 | [ -1, 1, Conv, [ 256, 1, 1 ] ],
32 | [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
33 | [ [ -1, 4 ], 1, Concat, [ 1 ] ], # cat backbone P3
34 | [ -1, 3, C3, [ 256, False ] ], # 17 (P3/8-small)
35 |
36 | [ -1, 1, Conv, [ 256, 3, 2 ] ],
37 | [ [ -1, 14 ], 1, Concat, [ 1 ] ], # cat head P4
38 | [ -1, 3, C3, [ 512, False ] ], # 20 (P4/16-medium)
39 |
40 | [ [ 17, 20 ], 1, Detect, [ nc, anchors ] ], # Detect(P3, P4)
41 | ]
42 |
--------------------------------------------------------------------------------
/models/yolov5n.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.25 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5n_bm.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 2 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.25 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5s.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 6 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [22,44, 27,91, 56,52] # P3/8
9 | - [66,96, 151,45, 37,190] # P4/16
10 | - [150,88, 84,177, 196,200] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5s_bm.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 2 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5x.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 1.33 # model depth multiple
6 | width_multiple: 1.25 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/hub/yolov5s_bm.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 2 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5l.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 25 # number of classes
5 | depth_multiple: 1.0 # model depth multiple
6 | width_multiple: 1.0 # layer channel multiple
7 | anchors:
8 | - [36,47, 63,89, 79,187] # P3/8
9 | - [154,136, 136,274, 216,339] # P4/16
10 | - [381,205, 341,425, 536,393] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5s-fire.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 2 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [22,44, 27,91, 56,52] # P3/8
9 | - [66,96, 151,45, 37,190] # P4/16
10 | - [150,88, 84,177, 196,200] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5s-voc.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [22,44, 27,91, 56,52] # P3/8
9 | - [66,96, 151,45, 37,190] # P4/16
10 | - [150,88, 84,177, 196,200] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5sFRM.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 6 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [22,44, 27,91, 56,52] # P3/8
9 | - [66,96, 151,45, 37,190] # P4/16
10 | - [150,88, 84,177, 196,200] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, DetectFRM, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5s_bmp.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 6 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [22,44, 27,91, 56,52] # P3/8
9 | - [66,96, 151,45, 37,190] # P4/16
10 | - [150,88, 84,177, 196,200] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5s_wheet.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [22,44, 27,91, 56,52] # P3/8
9 | - [66,96, 151,45, 37,190] # P4/16
10 | - [150,88, 84,177, 196,200] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5s-asff.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [22,44, 27,91, 56,52] # P3/8
9 | - [66,96, 151,45, 37,190] # P4/16
10 | - [150,88, 84,177, 196,200] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, ASFF_Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5s_voc.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [36,47, 63,89, 79,187] # P3/8
9 | - [154,136, 136,274, 216,339] # P4/16
10 | - [381,205, 341,425, 536,393] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/hub/yolov5-panet.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 1.0 # model depth multiple
6 | width_multiple: 1.0 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 PANet head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/hub/yolov5s-c3ca.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3CA, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3CA, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3CA, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3CA, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/hub/yolov5s-c3se.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3SE, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3SE, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3SE, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3SE, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/hub/yolov5s-c3lse.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 6 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3LSE, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3LSE, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3LSE, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3LSE, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/hub/yolov5-bifpn.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 1.0 # model depth multiple
6 | width_multiple: 1.0 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 BiFPN head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14, 6], 1, Concat, [1]], # cat P4 <--- BiFPN change
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/hub/yolov5m-lse.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 6 # number of classes
5 | depth_multiple: 0.67 # model depth multiple
6 | width_multiple: 0.75 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, LSE, [1024]],
25 | [-1, 1, SPPF, [1024, 5]], # 9+1
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [512, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
33 | [-1, 3, C3, [512, False]], # 13+1
34 |
35 | [-1, 1, Conv, [256, 1, 1]],
36 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
37 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
38 | [-1, 3, C3, [256, False]], # 17+1 (P3/8-small)
39 |
40 | [-1, 1, Conv, [256, 3, 2]],
41 | [[-1, 15], 1, Concat, [1]], # cat head P4
42 | [-1, 3, C3, [512, False]], # 20+1 (P4/16-medium)
43 |
44 | [-1, 1, Conv, [512, 3, 2]],
45 | [[-1, 11], 1, Concat, [1]], # cat head P5
46 | [-1, 3, C3, [1024, False]], # 23+1 (P5/32-large)
47 |
48 | [[18, 21, 24], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
49 | ]
50 |
--------------------------------------------------------------------------------
/models/hub/yolov5s-lse.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 6 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, LSE, [1024]],
25 | [-1, 1, SPPF, [1024, 5]], # 9+1
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [512, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
33 | [-1, 3, C3, [512, False]], # 13+1
34 |
35 | [-1, 1, Conv, [256, 1, 1]],
36 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
37 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
38 | [-1, 3, C3, [256, False]], # 17+1 (P3/8-small)
39 |
40 | [-1, 1, Conv, [256, 3, 2]],
41 | [[-1, 15], 1, Concat, [1]], # cat head P4
42 | [-1, 3, C3, [512, False]], # 20+1 (P4/16-medium)
43 |
44 | [-1, 1, Conv, [512, 3, 2]],
45 | [[-1, 11], 1, Concat, [1]], # cat head P5
46 | [-1, 3, C3, [1024, False]], # 23+1 (P5/32-large)
47 |
48 | [[18, 21, 24], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
49 | ]
50 |
--------------------------------------------------------------------------------
/models/hub/yolov5s-se.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 2 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SE, [1024]],
25 | [-1, 1, SPPF, [1024, 5]], # 9+1
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [512, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
33 | [-1, 3, C3, [512, False]], # 13+1
34 |
35 | [-1, 1, Conv, [256, 1, 1]],
36 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
37 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
38 | [-1, 3, C3, [256, False]], # 17+1 (P3/8-small)
39 |
40 | [-1, 1, Conv, [256, 3, 2]],
41 | [[-1, 15], 1, Concat, [1]], # cat head P4
42 | [-1, 3, C3, [512, False]], # 20+1 (P4/16-medium)
43 |
44 | [-1, 1, Conv, [512, 3, 2]],
45 | [[-1, 11], 1, Concat, [1]], # cat head P5
46 | [-1, 3, C3, [1024, False]], # 23+1 (P5/32-large)
47 |
48 | [[18, 21, 24], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
49 | ]
50 |
--------------------------------------------------------------------------------
/models/shufflenetv2.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [256, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 4], 1, Concat, [1]], # cat backbone P4
32 | [-1, 1, C3, [256, False]], # 10
33 |
34 | [-1, 1, Conv, [128, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 2], 1, Concat, [1]], # cat backbone P3
37 | [-1, 1, C3, [128, False]], # 14 (P3/8-small)
38 |
39 | [-1, 1, Conv, [128, 3, 2]],
40 | [[-1, 11], 1, Concat, [1]], # cat head P4
41 | [-1, 1, C3, [256, False]], # 17 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [256, 3, 2]],
44 | [[-1, 7], 1, Concat, [1]], # cat head P5
45 | [-1, 1, C3, [512, False]], # 20 (P5/32-large)
46 |
47 | [[14, 17, 20], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/hub/yolov5s-c3eca.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | # 第二种加入方法 全部替换 C3 模块
14 | backbone:
15 | # [from, number, module, args]
16 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
17 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
18 | [-1, 3, C3ECA, [128]],
19 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
20 | [-1, 6, C3ECA, [256]],
21 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
22 | [-1, 9, C3ECA, [512]],
23 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
24 | [-1, 3, C3ECA, [1024]],
25 | [-1, 1, SPPF, [1024, 5]], # 9
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [512, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
33 | [-1, 3, C3, [512, False]], # 13
34 |
35 | [-1, 1, Conv, [256, 1, 1]],
36 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
37 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
38 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
39 |
40 | [-1, 1, Conv, [256, 3, 2]],
41 | [[-1, 14], 1, Concat, [1]], # cat head P4
42 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
43 |
44 | [-1, 1, Conv, [512, 3, 2]],
45 | [[-1, 10], 1, Concat, [1]], # cat head P5
46 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
47 |
48 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
49 | ]
50 |
--------------------------------------------------------------------------------
/models/hub/yolov5s-cbam.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 2 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, CBAM, [1024]],
25 | [-1, 1, SPPF, [1024, 5]], # 9+1
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [512, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
33 | [-1, 3, C3, [512, False]], # 13+1
34 |
35 | [-1, 1, Conv, [256, 1, 1]],
36 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
37 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
38 | [-1, 3, C3, [256, False]], # 17+1 (P3/8-small)
39 |
40 | [-1, 1, Conv, [256, 3, 2]],
41 | [[-1, 15], 1, Concat, [1]], # cat head P4
42 | [-1, 3, C3, [512, False]], # 20+1 (P4/16-medium)
43 |
44 | [-1, 1, Conv, [512, 3, 2]],
45 | [[-1, 11], 1, Concat, [1]], # cat head P5
46 | [-1, 3, C3, [1024, False]], # 23+1 (P5/32-large)
47 |
48 | [[18, 21, 24], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
49 | ]
50 |
--------------------------------------------------------------------------------
/models/yolov5s-transformer.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 2 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3TR, [1024]], # 8 <--- C3TR() Transformer module
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/hub/yolov5s-c3cbam.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | # 第二种加入方法 全部替换 C3 模块
14 | backbone:
15 | # [from, number, module, args]
16 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
17 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
18 | [-1, 3, C3CBAM, [128]],
19 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
20 | [-1, 6, C3CBAM, [256]],
21 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
22 | [-1, 9, C3CBAM, [512]],
23 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
24 | [-1, 3, C3CBAM, [1024]],
25 | [-1, 1, SPPF, [1024, 5]], # 9
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [512, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
33 | [-1, 3, C3, [512, False]], # 13
34 |
35 | [-1, 1, Conv, [256, 1, 1]],
36 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
37 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
38 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
39 |
40 | [-1, 1, Conv, [256, 3, 2]],
41 | [[-1, 14], 1, Concat, [1]], # cat head P4
42 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
43 |
44 | [-1, 1, Conv, [512, 3, 2]],
45 | [[-1, 10], 1, Concat, [1]], # cat head P5
46 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
47 |
48 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
49 | ]
50 |
--------------------------------------------------------------------------------
/models/hub/yolov5s-transformer.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3TR, [1024]], # 9 <--- C3TR() Transformer module
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5m.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 6 # number of classes
5 | depth_multiple: 0.67 # model depth multiple
6 | width_multiple: 0.75 # layer channel multiple
7 | anchors:
8 | - [22,44, 27,91, 56,52] # P3/8
9 | - [66,96, 151,45, 37,190] # P4/16
10 | - [150,88, 84,177, 196,200] # P5/32
11 | #36,47, 63,89, 79,187, 154,136, 136,274, 216,339, 381,205, 341,425, 536,393
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5m-LEVIR.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 3 # number of classes
5 | depth_multiple: 0.67 # model depth multiple
6 | width_multiple: 0.75 # layer channel multiple
7 | anchors:
8 | - [22,44, 27,91, 56,52] # P3/8
9 | - [66,96, 151,45, 37,190] # P4/16
10 | - [150,88, 84,177, 196,200] # P5/32
11 | #36,47, 63,89, 79,187, 154,136, 136,274, 216,339, 381,205, 341,425, 536,393
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5m-LSE.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 6 # number of classes
5 | depth_multiple: 0.67 # model depth multiple
6 | width_multiple: 0.75 # layer channel multiple
7 | anchors:
8 | - [22,44, 27,91, 56,52] # P3/8
9 | - [66,96, 151,45, 37,190] # P4/16
10 | - [150,88, 84,177, 196,200] # P5/32
11 | #36,47, 63,89, 79,187, 154,136, 136,274, 216,339, 381,205, 341,425, 536,393
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5m-SIMD.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 15 # number of classes
5 | depth_multiple: 0.67 # model depth multiple
6 | width_multiple: 0.75 # layer channel multiple
7 | anchors:
8 | - [22,44, 27,91, 56,52] # P3/8
9 | - [66,96, 151,45, 37,190] # P4/16
10 | - [150,88, 84,177, 196,200] # P5/32
11 | #36,47, 63,89, 79,187, 154,136, 136,274, 216,339, 381,205, 341,425, 536,393
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5m_fire.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 2 # number of classes
5 | depth_multiple: 0.67 # model depth multiple
6 | width_multiple: 0.75 # layer channel multiple
7 | anchors:
8 | - [22,44, 27,91, 56,52] # P3/8
9 | - [66,96, 151,45, 37,190] # P4/16
10 | - [150,88, 84,177, 196,200] # P5/32
11 | #36,47, 63,89, 79,187, 154,136, 136,274, 216,339, 381,205, 341,425, 536,393
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5m_pcb.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 6 # number of classes
5 | depth_multiple: 0.67 # model depth multiple
6 | width_multiple: 0.75 # layer channel multiple
7 | anchors:
8 | - [22,44, 27,91, 56,52] # P3/8
9 | - [66,96, 151,45, 37,190] # P4/16
10 | - [150,88, 84,177, 196,200] # P5/32
11 | #36,47, 63,89, 79,187, 154,136, 136,274, 216,339, 381,205, 341,425, 536,393
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5m_voc.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 | depth_multiple: 0.67 # model depth multiple
6 | width_multiple: 0.75 # layer channel multiple
7 | anchors:
8 | - [36,47, 63,89, 79,187] # P3/8
9 | - [154,136, 136,274, 216,339] # P4/16
10 | - [381,205, 341,425, 536,393] # P5/32
11 | #36,47, 63,89, 79,187, 154,136, 136,274, 216,339, 381,205, 341,425, 536,393
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3, [512, False]], # 13
33 |
34 | [-1, 1, Conv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, Conv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, Conv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/yolov5s-ghost.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 2 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, GhostConv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3Ghost, [128]],
18 | [-1, 1, GhostConv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3Ghost, [256]],
20 | [-1, 1, GhostConv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3Ghost, [512]],
22 | [-1, 1, GhostConv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3Ghost, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, GhostConv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3Ghost, [512, False]], # 13
33 |
34 | [-1, 1, GhostConv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3Ghost, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, GhostConv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3Ghost, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, GhostConv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3Ghost, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/hub/yolov5s-ghost.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, GhostConv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3Ghost, [128]],
18 | [-1, 1, GhostConv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3Ghost, [256]],
20 | [-1, 1, GhostConv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3Ghost, [512]],
22 | [-1, 1, GhostConv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3Ghost, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, GhostConv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 3, C3Ghost, [512, False]], # 13
33 |
34 | [-1, 1, GhostConv, [256, 1, 1]],
35 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
36 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
37 | [-1, 3, C3Ghost, [256, False]], # 17 (P3/8-small)
38 |
39 | [-1, 1, GhostConv, [256, 3, 2]],
40 | [[-1, 14], 1, Concat, [1]], # cat head P4
41 | [-1, 3, C3Ghost, [512, False]], # 20 (P4/16-medium)
42 |
43 | [-1, 1, GhostConv, [512, 3, 2]],
44 | [[-1, 10], 1, Concat, [1]], # cat head P5
45 | [-1, 3, C3Ghost, [1024, False]], # 23 (P5/32-large)
46 |
47 | [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
48 | ]
49 |
--------------------------------------------------------------------------------
/models/hub/yolov5s-eca.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 2 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, ECA, [1024]], # 9 ECA <-- Coordinate Attention [out_channel, reduction]
25 | [-1, 1, SPPF, [1024, 5]], # 10
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [512, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
33 | [-1, 3, C3, [512, False]], # 14
34 |
35 | [-1, 1, Conv, [256, 1, 1]],
36 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
37 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
38 | [-1, 3, C3, [256, False]], # 18 (P3/8-small)
39 |
40 | [-1, 1, Conv, [256, 3, 2]],
41 | [[-1, 15], 1, Concat, [1]], # cat head P4
42 | [-1, 3, C3, [512, False]], # 21 (P4/16-medium)
43 |
44 | [-1, 1, Conv, [512, 3, 2]],
45 | [[-1, 11], 1, Concat, [1]], # cat head P5
46 | [-1, 3, C3, [1024, False]], # 24 (P5/32-large)
47 |
48 | [[18, 21, 24], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
49 | ]
50 |
--------------------------------------------------------------------------------
/models/hub/yolov5s-ca.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 2 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, CA, [1024, 32]], # 9 CA <-- Coordinate Attention [out_channel, reduction]
25 | [-1, 1, SPPF, [1024, 5]], # 10
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [512, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
33 | [-1, 3, C3, [512, False]], # 14
34 |
35 | [-1, 1, Conv, [256, 1, 1]],
36 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
37 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
38 | [-1, 3, C3, [256, False]], # 18 (P3/8-small)
39 |
40 | [-1, 1, Conv, [256, 3, 2]],
41 | [[-1, 15], 1, Concat, [1]], # cat head P4
42 | [-1, 3, C3, [512, False]], # 21 (P4/16-medium)
43 |
44 | [-1, 1, Conv, [512, 3, 2]],
45 | [[-1, 11], 1, Concat, [1]], # cat head P5
46 | [-1, 3, C3, [1024, False]], # 24 (P5/32-large)
47 |
48 | [[18, 21, 24], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
49 | ]
50 |
--------------------------------------------------------------------------------
/models/hub/yolov5s-lse-concat-paper.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 6 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SPPF, [1024, 5]], # 9+1
25 | ]
26 |
27 | # YOLOv5 v6.0 head
28 | head:
29 | [[-1, 1, Conv, [512, 1, 1]],
30 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
31 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
32 | [-1, 1, LSE, [1024]],
33 | [-1, 3, C3, [512, False]], # 13+1
34 |
35 | [-1, 1, Conv, [256, 1, 1]],
36 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
37 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
38 | [-1, 1, LSE, [512]],
39 | [-1, 3, C3, [256, False]], # 17+1 (P3/8-small)
40 |
41 | [-1, 1, Conv, [256, 3, 2]],
42 | [[-1, 15], 1, Concat, [1]], # cat head P4
43 | [-1, 1, LSE, [512]],
44 | [-1, 3, C3, [512, False]], # 20+1 (P4/16-medium)
45 |
46 | [-1, 1, Conv, [512, 3, 2]],
47 | [[-1, 10], 1, Concat, [1]], # cat head P5
48 | [-1, 1, LSE, [1024]],
49 | [-1, 3, C3, [1024, False]], # 23+1 (P5/32-large)
50 |
51 | [[21, 24, 27], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
52 | ]
53 |
--------------------------------------------------------------------------------
/models/hub/yolov5s-se-concat.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 6 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, SE, [1024]],
25 | [-1, 1, SPPF, [1024, 5]], # 9+1
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [512, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
33 | [-1, 1, LSE, [1024]],
34 | [-1, 3, C3, [512, False]], # 13+1
35 |
36 | [-1, 1, Conv, [256, 1, 1]],
37 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
38 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
39 | [-1, 1, SE, [512]],
40 | [-1, 3, C3, [256, False]], # 17+1 (P3/8-small)
41 |
42 | [-1, 1, Conv, [256, 3, 2]],
43 | [[-1, 16], 1, Concat, [1]], # cat head P4
44 | [-1, 1, SE, [512]],
45 | [-1, 3, C3, [512, False]], # 20+1 (P4/16-medium)
46 |
47 | [-1, 1, Conv, [512, 3, 2]],
48 | [[-1, 11], 1, Concat, [1]], # cat head P5
49 | [-1, 1, SE, [1024]],
50 | [-1, 3, C3, [1024, False]], # 23+1 (P5/32-large)
51 |
52 | [[22, 25, 28], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
53 | ]
54 |
--------------------------------------------------------------------------------
/models/hub/yolov5s-lse-concat.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 6 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # YOLOv5 v6.0 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
16 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
17 | [-1, 3, C3, [128]],
18 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
19 | [-1, 6, C3, [256]],
20 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
21 | [-1, 9, C3, [512]],
22 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
23 | [-1, 3, C3, [1024]],
24 | [-1, 1, LSE, [1024]],
25 | [-1, 1, SPPF, [1024, 5]], # 9+1
26 | ]
27 |
28 | # YOLOv5 v6.0 head
29 | head:
30 | [[-1, 1, Conv, [512, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
33 | [-1, 1, LSE, [1024]],
34 | [-1, 3, C3, [512, False]], # 13+1
35 |
36 | [-1, 1, Conv, [256, 1, 1]],
37 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
38 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
39 | [-1, 1, LSE, [512]],
40 | [-1, 3, C3, [256, False]], # 17+1 (P3/8-small)
41 |
42 | [-1, 1, Conv, [256, 3, 2]],
43 | [[-1, 16], 1, Concat, [1]], # cat head P4
44 | [-1, 1, LSE, [512]],
45 | [-1, 3, C3, [512, False]], # 20+1 (P4/16-medium)
46 |
47 | [-1, 1, Conv, [512, 3, 2]],
48 | [[-1, 11], 1, Concat, [1]], # cat head P5
49 | [-1, 1, LSE, [1024]],
50 | [-1, 3, C3, [1024, False]], # 23+1 (P5/32-large)
51 |
52 | [[22, 25, 28], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
53 | ]
54 |
--------------------------------------------------------------------------------
/models/hub/yolov3.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 1.0 # model depth multiple
6 | width_multiple: 1.0 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # darknet53 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [32, 3, 1]], # 0
16 | [-1, 1, Conv, [64, 3, 2]], # 1-P1/2
17 | [-1, 1, Bottleneck, [64]],
18 | [-1, 1, Conv, [128, 3, 2]], # 3-P2/4
19 | [-1, 2, Bottleneck, [128]],
20 | [-1, 1, Conv, [256, 3, 2]], # 5-P3/8
21 | [-1, 8, Bottleneck, [256]],
22 | [-1, 1, Conv, [512, 3, 2]], # 7-P4/16
23 | [-1, 8, Bottleneck, [512]],
24 | [-1, 1, Conv, [1024, 3, 2]], # 9-P5/32
25 | [-1, 4, Bottleneck, [1024]], # 10
26 | ]
27 |
28 | # YOLOv3 head
29 | head:
30 | [[-1, 1, Bottleneck, [1024, False]],
31 | [-1, 1, Conv, [512, 1, 1]],
32 | [-1, 1, Conv, [1024, 3, 1]],
33 | [-1, 1, Conv, [512, 1, 1]],
34 | [-1, 1, Conv, [1024, 3, 1]], # 15 (P5/32-large)
35 |
36 | [-2, 1, Conv, [256, 1, 1]],
37 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
38 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
39 | [-1, 1, Bottleneck, [512, False]],
40 | [-1, 1, Bottleneck, [512, False]],
41 | [-1, 1, Conv, [256, 1, 1]],
42 | [-1, 1, Conv, [512, 3, 1]], # 22 (P4/16-medium)
43 |
44 | [-2, 1, Conv, [128, 1, 1]],
45 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
46 | [[-1, 6], 1, Concat, [1]], # cat backbone P3
47 | [-1, 1, Bottleneck, [256, False]],
48 | [-1, 2, Bottleneck, [256, False]], # 27 (P3/8-small)
49 |
50 | [[27, 22, 15], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
51 | ]
52 |
--------------------------------------------------------------------------------
/models/hub/yolov3-spp.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 1.0 # model depth multiple
6 | width_multiple: 1.0 # layer channel multiple
7 | anchors:
8 | - [10,13, 16,30, 33,23] # P3/8
9 | - [30,61, 62,45, 59,119] # P4/16
10 | - [116,90, 156,198, 373,326] # P5/32
11 |
12 | # darknet53 backbone
13 | backbone:
14 | # [from, number, module, args]
15 | [[-1, 1, Conv, [32, 3, 1]], # 0
16 | [-1, 1, Conv, [64, 3, 2]], # 1-P1/2
17 | [-1, 1, Bottleneck, [64]],
18 | [-1, 1, Conv, [128, 3, 2]], # 3-P2/4
19 | [-1, 2, Bottleneck, [128]],
20 | [-1, 1, Conv, [256, 3, 2]], # 5-P3/8
21 | [-1, 8, Bottleneck, [256]],
22 | [-1, 1, Conv, [512, 3, 2]], # 7-P4/16
23 | [-1, 8, Bottleneck, [512]],
24 | [-1, 1, Conv, [1024, 3, 2]], # 9-P5/32
25 | [-1, 4, Bottleneck, [1024]], # 10
26 | ]
27 |
28 | # YOLOv3-SPP head
29 | head:
30 | [[-1, 1, Bottleneck, [1024, False]],
31 | [-1, 1, SPP, [512, [5, 9, 13]]],
32 | [-1, 1, Conv, [1024, 3, 1]],
33 | [-1, 1, Conv, [512, 1, 1]],
34 | [-1, 1, Conv, [1024, 3, 1]], # 15 (P5/32-large)
35 |
36 | [-2, 1, Conv, [256, 1, 1]],
37 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
38 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
39 | [-1, 1, Bottleneck, [512, False]],
40 | [-1, 1, Bottleneck, [512, False]],
41 | [-1, 1, Conv, [256, 1, 1]],
42 | [-1, 1, Conv, [512, 3, 1]], # 22 (P4/16-medium)
43 |
44 | [-2, 1, Conv, [128, 1, 1]],
45 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
46 | [[-1, 6], 1, Concat, [1]], # cat backbone P3
47 | [-1, 1, Bottleneck, [256, False]],
48 | [-1, 2, Bottleneck, [256, False]], # 27 (P3/8-small)
49 |
50 | [[27, 22, 15], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
51 | ]
52 |
--------------------------------------------------------------------------------
/data/coco128.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 | # COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
3 | # Example usage: python train.py --data coco128.yaml
4 | # parent
5 | # ├── yolov5
6 | # └── datasets
7 | # └── coco128 ← downloads here
8 |
9 |
10 | # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
11 | path: ../datasets/coco128 # dataset root dir
12 | train: images/train2017 # train images (relative to 'path') 128 images
13 | val: images/train2017 # val images (relative to 'path') 128 images
14 | test: # test images (optional)
15 |
16 | # Classes
17 | nc: 80 # number of classes
18 | names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light',
19 | 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow',
20 | 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee',
21 | 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard',
22 | 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple',
23 | 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch',
24 | 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone',
25 | 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear',
26 | 'hair drier', 'toothbrush'] # class names
27 |
28 |
29 | # Download script/URL (optional)
30 | download: https://ultralytics.com/assets/coco128.zip
31 |
--------------------------------------------------------------------------------
/data/hyps/hyp.scratch-high.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 | # Hyperparameters for high-augmentation COCO training from scratch
3 | # python train.py --batch 32 --cfg yolov5m6.yaml --weights '' --data coco.yaml --img 1280 --epochs 300
4 | # See tutorials for hyperparameter evolution https://github.com/ultralytics/yolov5#tutorials
5 |
6 | lr0: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3)
7 | lrf: 0.1 # final OneCycleLR learning rate (lr0 * lrf)
8 | momentum: 0.937 # SGD momentum/Adam beta1
9 | weight_decay: 0.0005 # optimizer weight decay 5e-4
10 | warmup_epochs: 3.0 # warmup epochs (fractions ok)
11 | warmup_momentum: 0.8 # warmup initial momentum
12 | warmup_bias_lr: 0.1 # warmup initial bias lr
13 | box: 0.05 # box loss gain
14 | cls: 0.3 # cls loss gain
15 | cls_pw: 1.0 # cls BCELoss positive_weight
16 | obj: 0.7 # obj loss gain (scale with pixels)
17 | obj_pw: 1.0 # obj BCELoss positive_weight
18 | iou_t: 0.20 # IoU training threshold
19 | anchor_t: 4.0 # anchor-multiple threshold
20 | # anchors: 3 # anchors per output layer (0 to ignore)
21 | fl_gamma: 0.0 # focal loss gamma (efficientDet default gamma=1.5)
22 | hsv_h: 0.015 # image HSV-Hue augmentation (fraction)
23 | hsv_s: 0.7 # image HSV-Saturation augmentation (fraction)
24 | hsv_v: 0.4 # image HSV-Value augmentation (fraction)
25 | degrees: 0.0 # image rotation (+/- deg)
26 | translate: 0.1 # image translation (+/- fraction)
27 | scale: 0.9 # image scale (+/- gain)
28 | shear: 0.0 # image shear (+/- deg)
29 | perspective: 0.0 # image perspective (+/- fraction), range 0-0.001
30 | flipud: 0.0 # image flip up-down (probability)
31 | fliplr: 0.5 # image flip left-right (probability)
32 | mosaic: 1.0 # image mosaic (probability)
33 | mixup: 0.1 # image mixup (probability)
34 | copy_paste: 0.1 # segment copy-paste (probability)
35 |
--------------------------------------------------------------------------------
/data/hyps/hyp.scratch-med.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 | # Hyperparameters for medium-augmentation COCO training from scratch
3 | # python train.py --batch 32 --cfg yolov5m6.yaml --weights '' --data coco.yaml --img 1280 --epochs 300
4 | # See tutorials for hyperparameter evolution https://github.com/ultralytics/yolov5#tutorials
5 |
6 | lr0: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3)
7 | lrf: 0.1 # final OneCycleLR learning rate (lr0 * lrf)
8 | momentum: 0.937 # SGD momentum/Adam beta1
9 | weight_decay: 0.0005 # optimizer weight decay 5e-4
10 | warmup_epochs: 3.0 # warmup epochs (fractions ok)
11 | warmup_momentum: 0.8 # warmup initial momentum
12 | warmup_bias_lr: 0.1 # warmup initial bias lr
13 | box: 0.05 # box loss gain
14 | cls: 0.3 # cls loss gain
15 | cls_pw: 1.0 # cls BCELoss positive_weight
16 | obj: 0.7 # obj loss gain (scale with pixels)
17 | obj_pw: 1.0 # obj BCELoss positive_weight
18 | iou_t: 0.20 # IoU training threshold
19 | anchor_t: 4.0 # anchor-multiple threshold
20 | # anchors: 3 # anchors per output layer (0 to ignore)
21 | fl_gamma: 0.0 # focal loss gamma (efficientDet default gamma=1.5)
22 | hsv_h: 0.015 # image HSV-Hue augmentation (fraction)
23 | hsv_s: 0.7 # image HSV-Saturation augmentation (fraction)
24 | hsv_v: 0.4 # image HSV-Value augmentation (fraction)
25 | degrees: 0.0 # image rotation (+/- deg)
26 | translate: 0.1 # image translation (+/- fraction)
27 | scale: 0.9 # image scale (+/- gain)
28 | shear: 0.0 # image shear (+/- deg)
29 | perspective: 0.0 # image perspective (+/- fraction), range 0-0.001
30 | flipud: 0.0 # image flip up-down (probability)
31 | fliplr: 0.5 # image flip left-right (probability)
32 | mosaic: 1.0 # image mosaic (probability)
33 | mixup: 0.1 # image mixup (probability)
34 | copy_paste: 0.0 # segment copy-paste (probability)
35 |
--------------------------------------------------------------------------------
/models/hub/yolov5-p2.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 1.0 # model depth multiple
6 | width_multiple: 1.0 # layer channel multiple
7 | anchors: 3 # AutoAnchor evolves 3 anchors per P output layer
8 |
9 | # YOLOv5 v6.0 backbone
10 | backbone:
11 | # [from, number, module, args]
12 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
13 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
14 | [-1, 3, C3, [128]],
15 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
16 | [-1, 6, C3, [256]],
17 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
18 | [-1, 9, C3, [512]],
19 | [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
20 | [-1, 3, C3, [1024]],
21 | [-1, 1, SPPF, [1024, 5]], # 9
22 | ]
23 |
24 | # YOLOv5 v6.0 head with (P2, P3, P4, P5) outputs
25 | head:
26 | [[-1, 1, Conv, [512, 1, 1]],
27 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
28 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
29 | [-1, 3, C3, [512, False]], # 13
30 |
31 | [-1, 1, Conv, [256, 1, 1]],
32 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
33 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
34 | [-1, 3, C3, [256, False]], # 17 (P3/8-small)
35 |
36 | [-1, 1, Conv, [128, 1, 1]],
37 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
38 | [[-1, 2], 1, Concat, [1]], # cat backbone P2
39 | [-1, 1, C3, [128, False]], # 21 (P2/4-xsmall)
40 |
41 | [-1, 1, Conv, [128, 3, 2]],
42 | [[-1, 18], 1, Concat, [1]], # cat head P3
43 | [-1, 3, C3, [256, False]], # 24 (P3/8-small)
44 |
45 | [-1, 1, Conv, [256, 3, 2]],
46 | [[-1, 14], 1, Concat, [1]], # cat head P4
47 | [-1, 3, C3, [512, False]], # 27 (P4/16-medium)
48 |
49 | [-1, 1, Conv, [512, 3, 2]],
50 | [[-1, 10], 1, Concat, [1]], # cat head P5
51 | [-1, 3, C3, [1024, False]], # 30 (P5/32-large)
52 |
53 | [[21, 24, 27, 30], 1, Detect, [nc, anchors]], # Detect(P2, P3, P4, P5)
54 | ]
55 |
--------------------------------------------------------------------------------
/models/hub/yolov5-p6.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 1.0 # model depth multiple
6 | width_multiple: 1.0 # layer channel multiple
7 | anchors: 3 # AutoAnchor evolves 3 anchors per P output layer
8 |
9 | # YOLOv5 v6.0 backbone
10 | backbone:
11 | # [from, number, module, args]
12 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
13 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
14 | [-1, 3, C3, [128]],
15 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
16 | [-1, 6, C3, [256]],
17 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
18 | [-1, 9, C3, [512]],
19 | [-1, 1, Conv, [768, 3, 2]], # 7-P5/32
20 | [-1, 3, C3, [768]],
21 | [-1, 1, Conv, [1024, 3, 2]], # 9-P6/64
22 | [-1, 3, C3, [1024]],
23 | [-1, 1, SPPF, [1024, 5]], # 11
24 | ]
25 |
26 | # YOLOv5 v6.0 head with (P3, P4, P5, P6) outputs
27 | head:
28 | [[-1, 1, Conv, [768, 1, 1]],
29 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
30 | [[-1, 8], 1, Concat, [1]], # cat backbone P5
31 | [-1, 3, C3, [768, False]], # 15
32 |
33 | [-1, 1, Conv, [512, 1, 1]],
34 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
35 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
36 | [-1, 3, C3, [512, False]], # 19
37 |
38 | [-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
41 | [-1, 3, C3, [256, False]], # 23 (P3/8-small)
42 |
43 | [-1, 1, Conv, [256, 3, 2]],
44 | [[-1, 20], 1, Concat, [1]], # cat head P4
45 | [-1, 3, C3, [512, False]], # 26 (P4/16-medium)
46 |
47 | [-1, 1, Conv, [512, 3, 2]],
48 | [[-1, 16], 1, Concat, [1]], # cat head P5
49 | [-1, 3, C3, [768, False]], # 29 (P5/32-large)
50 |
51 | [-1, 1, Conv, [768, 3, 2]],
52 | [[-1, 12], 1, Concat, [1]], # cat head P6
53 | [-1, 3, C3, [1024, False]], # 32 (P6/64-xlarge)
54 |
55 | [[23, 26, 29, 32], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5, P6)
56 | ]
57 |
--------------------------------------------------------------------------------
/data/hyps/hyp.scratch-low.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 | # Hyperparameters for low-augmentation COCO training from scratch
3 | # python train.py --batch 64 --cfg yolov5n6.yaml --weights '' --data coco.yaml --img 640 --epochs 300 --linear
4 | # See tutorials for hyperparameter evolution https://github.com/ultralytics/yolov5#tutorials
5 | # python train.py --epochs 100 --weights 'runs\train\exp5\weights\best.pt'
6 | # python train.py --batch 128 --weights runs\train\exp5\weights\best.pt --epochs 50 --img 200 --hyp hyp.scratch-med.yaml --evolve
7 | lr0: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3)
8 | lrf: 0.01 # final OneCycleLR learning rate (lr0 * lrf)
9 | momentum: 0.937 # SGD momentum/Adam beta1
10 | weight_decay: 0.0005 # optimizer weight decay 5e-4
11 | warmup_epochs: 3.0 # warmup epochs (fractions ok)
12 | warmup_momentum: 0.8 # warmup initial momentum
13 | warmup_bias_lr: 0.1 # warmup initial bias lr
14 | box: 0.05 # box loss gain
15 | cls: 0.5 # cls loss gain
16 | cls_pw: 1.0 # cls BCELoss positive_weight
17 | obj: 1.0 # obj loss gain (scale with pixels)
18 | obj_pw: 1.0 # obj BCELoss positive_weight
19 | iou_t: 0.20 # IoU training threshold
20 | anchor_t: 4.0 # anchor-multiple threshold
21 | # anchors: 3 # anchors per output layer (0 to ignore)
22 | fl_gamma: 0.0 # focal loss gamma (efficientDet default gamma=1.5)
23 | hsv_h: 0.015 # image HSV-Hue augmentation (fraction)
24 | hsv_s: 0.7 # image HSV-Saturation augmentation (fraction)
25 | hsv_v: 0.4 # image HSV-Value augmentation (fraction)
26 | degrees: 0.0 # image rotation (+/- deg)
27 | translate: 0.1 # image translation (+/- fraction)
28 | scale: 0.5 # image scale (+/- gain)
29 | shear: 0.0 # image shear (+/- deg)
30 | perspective: 0.0 # image perspective (+/- fraction), range 0-0.001
31 | flipud: 0.0 # image flip up-down (probability)
32 | fliplr: 0.5 # image flip left-right (probability)
33 | mosaic: 1.0 # image mosaic (probability)
34 | mixup: 0.0 # image mixup (probability)
35 | copy_paste: 0.0 # segment copy-paste (probability)
36 |
--------------------------------------------------------------------------------
/data/hyps/hyp.scratch-low-rect.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 | # Hyperparameters for low-augmentation COCO training from scratch
3 | # python train.py --batch 64 --cfg yolov5n6.yaml --weights '' --data coco.yaml --img 640 --epochs 300 --linear
4 | # See tutorials for hyperparameter evolution https://github.com/ultralytics/yolov5#tutorials
5 | # python train.py --epochs 100 --weights 'runs\train\exp5\weights\best.pt'
6 | # python train.py --batch 128 --weights runs\train\exp5\weights\best.pt --epochs 50 --img 200 --hyp hyp.scratch-med.yaml --evolve
7 | lr0: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3)
8 | lrf: 0.01 # final OneCycleLR learning rate (lr0 * lrf)
9 | momentum: 0.937 # SGD momentum/Adam beta1
10 | weight_decay: 0.0005 # optimizer weight decay 5e-4
11 | warmup_epochs: 3.0 # warmup epochs (fractions ok)
12 | warmup_momentum: 0.8 # warmup initial momentum
13 | warmup_bias_lr: 0.1 # warmup initial bias lr
14 | box: 0.05 # box loss gain
15 | cls: 0.5 # cls loss gain
16 | cls_pw: 1.0 # cls BCELoss positive_weight
17 | obj: 1.0 # obj loss gain (scale with pixels)
18 | obj_pw: 1.0 # obj BCELoss positive_weight
19 | iou_t: 0.20 # IoU training threshold
20 | anchor_t: 4.0 # anchor-multiple threshold
21 | # anchors: 3 # anchors per output layer (0 to ignore)
22 | fl_gamma: 0.0 # focal loss gamma (efficientDet default gamma=1.5)
23 | hsv_h: 0.015 # image HSV-Hue augmentation (fraction)
24 | hsv_s: 0.7 # image HSV-Saturation augmentation (fraction)
25 | hsv_v: 0.4 # image HSV-Value augmentation (fraction)
26 | degrees: 0.0 # image rotation (+/- deg)
27 | translate: 0.1 # image translation (+/- fraction)
28 | scale: 0.5 # image scale (+/- gain)
29 | shear: 0.0 # image shear (+/- deg)
30 | perspective: 0.0 # image perspective (+/- fraction), range 0-0.001
31 | flipud: 0.0 # image flip up-down (probability)
32 | fliplr: 0.5 # image flip left-right (probability)
33 | mosaic: 0.0 # image mosaic (probability)
34 | mixup: 0.0 # image mixup (probability)
35 | copy_paste: 0.0 # segment copy-paste (probability)
36 |
--------------------------------------------------------------------------------
/utils/flask_rest_api/README.md:
--------------------------------------------------------------------------------
1 | # Flask REST API
2 |
3 | [REST](https://en.wikipedia.org/wiki/Representational_state_transfer) [API](https://en.wikipedia.org/wiki/API)s are
4 | commonly used to expose Machine Learning (ML) models to other services. This folder contains an example REST API
5 | created using Flask to expose the YOLOv5s model from [PyTorch Hub](https://pytorch.org/hub/ultralytics_yolov5/).
6 |
7 | ## Requirements
8 |
9 | [Flask](https://palletsprojects.com/p/flask/) is required. Install with:
10 |
11 | ```shell
12 | $ pip install Flask
13 | ```
14 |
15 | ## Run
16 |
17 | After Flask installation run:
18 |
19 | ```shell
20 | $ python3 restapi.py --port 5000
21 | ```
22 |
23 | Then use [curl](https://curl.se/) to perform a request:
24 |
25 | ```shell
26 | $ curl -X POST -F image=@zidane.jpg 'http://localhost:5000/v1/object-detection/yolov5s'
27 | ```
28 |
29 | The model inference results are returned as a JSON response:
30 |
31 | ```json
32 | [
33 | {
34 | "class": 0,
35 | "confidence": 0.8900438547,
36 | "height": 0.9318675399,
37 | "name": "person",
38 | "width": 0.3264600933,
39 | "xcenter": 0.7438579798,
40 | "ycenter": 0.5207948685
41 | },
42 | {
43 | "class": 0,
44 | "confidence": 0.8440024257,
45 | "height": 0.7155083418,
46 | "name": "person",
47 | "width": 0.6546785235,
48 | "xcenter": 0.427829951,
49 | "ycenter": 0.6334488392
50 | },
51 | {
52 | "class": 27,
53 | "confidence": 0.3771208823,
54 | "height": 0.3902671337,
55 | "name": "tie",
56 | "width": 0.0696444362,
57 | "xcenter": 0.3675483763,
58 | "ycenter": 0.7991207838
59 | },
60 | {
61 | "class": 27,
62 | "confidence": 0.3527112305,
63 | "height": 0.1540903747,
64 | "name": "tie",
65 | "width": 0.0336618312,
66 | "xcenter": 0.7814827561,
67 | "ycenter": 0.5065554976
68 | }
69 | ]
70 | ```
71 |
72 | An example python script to perform inference using [requests](https://docs.python-requests.org/en/master/) is given
73 | in `example_request.py`
74 |
--------------------------------------------------------------------------------
/models/hub/yolov5l6.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 1.0 # model depth multiple
6 | width_multiple: 1.0 # layer channel multiple
7 | anchors:
8 | - [19,27, 44,40, 38,94] # P3/8
9 | - [96,68, 86,152, 180,137] # P4/16
10 | - [140,301, 303,264, 238,542] # P5/32
11 | - [436,615, 739,380, 925,792] # P6/64
12 |
13 | # YOLOv5 v6.0 backbone
14 | backbone:
15 | # [from, number, module, args]
16 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
17 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
18 | [-1, 3, C3, [128]],
19 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
20 | [-1, 6, C3, [256]],
21 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
22 | [-1, 9, C3, [512]],
23 | [-1, 1, Conv, [768, 3, 2]], # 7-P5/32
24 | [-1, 3, C3, [768]],
25 | [-1, 1, Conv, [1024, 3, 2]], # 9-P6/64
26 | [-1, 3, C3, [1024]],
27 | [-1, 1, SPPF, [1024, 5]], # 11
28 | ]
29 |
30 | # YOLOv5 v6.0 head
31 | head:
32 | [[-1, 1, Conv, [768, 1, 1]],
33 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
34 | [[-1, 8], 1, Concat, [1]], # cat backbone P5
35 | [-1, 3, C3, [768, False]], # 15
36 |
37 | [-1, 1, Conv, [512, 1, 1]],
38 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
39 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
40 | [-1, 3, C3, [512, False]], # 19
41 |
42 | [-1, 1, Conv, [256, 1, 1]],
43 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
44 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
45 | [-1, 3, C3, [256, False]], # 23 (P3/8-small)
46 |
47 | [-1, 1, Conv, [256, 3, 2]],
48 | [[-1, 20], 1, Concat, [1]], # cat head P4
49 | [-1, 3, C3, [512, False]], # 26 (P4/16-medium)
50 |
51 | [-1, 1, Conv, [512, 3, 2]],
52 | [[-1, 16], 1, Concat, [1]], # cat head P5
53 | [-1, 3, C3, [768, False]], # 29 (P5/32-large)
54 |
55 | [-1, 1, Conv, [768, 3, 2]],
56 | [[-1, 12], 1, Concat, [1]], # cat head P6
57 | [-1, 3, C3, [1024, False]], # 32 (P6/64-xlarge)
58 |
59 | [[23, 26, 29, 32], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5, P6)
60 | ]
61 |
--------------------------------------------------------------------------------
/models/hub/yolov5n6.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.25 # layer channel multiple
7 | anchors:
8 | - [19,27, 44,40, 38,94] # P3/8
9 | - [96,68, 86,152, 180,137] # P4/16
10 | - [140,301, 303,264, 238,542] # P5/32
11 | - [436,615, 739,380, 925,792] # P6/64
12 |
13 | # YOLOv5 v6.0 backbone
14 | backbone:
15 | # [from, number, module, args]
16 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
17 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
18 | [-1, 3, C3, [128]],
19 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
20 | [-1, 6, C3, [256]],
21 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
22 | [-1, 9, C3, [512]],
23 | [-1, 1, Conv, [768, 3, 2]], # 7-P5/32
24 | [-1, 3, C3, [768]],
25 | [-1, 1, Conv, [1024, 3, 2]], # 9-P6/64
26 | [-1, 3, C3, [1024]],
27 | [-1, 1, SPPF, [1024, 5]], # 11
28 | ]
29 |
30 | # YOLOv5 v6.0 head
31 | head:
32 | [[-1, 1, Conv, [768, 1, 1]],
33 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
34 | [[-1, 8], 1, Concat, [1]], # cat backbone P5
35 | [-1, 3, C3, [768, False]], # 15
36 |
37 | [-1, 1, Conv, [512, 1, 1]],
38 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
39 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
40 | [-1, 3, C3, [512, False]], # 19
41 |
42 | [-1, 1, Conv, [256, 1, 1]],
43 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
44 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
45 | [-1, 3, C3, [256, False]], # 23 (P3/8-small)
46 |
47 | [-1, 1, Conv, [256, 3, 2]],
48 | [[-1, 20], 1, Concat, [1]], # cat head P4
49 | [-1, 3, C3, [512, False]], # 26 (P4/16-medium)
50 |
51 | [-1, 1, Conv, [512, 3, 2]],
52 | [[-1, 16], 1, Concat, [1]], # cat head P5
53 | [-1, 3, C3, [768, False]], # 29 (P5/32-large)
54 |
55 | [-1, 1, Conv, [768, 3, 2]],
56 | [[-1, 12], 1, Concat, [1]], # cat head P6
57 | [-1, 3, C3, [1024, False]], # 32 (P6/64-xlarge)
58 |
59 | [[23, 26, 29, 32], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5, P6)
60 | ]
61 |
--------------------------------------------------------------------------------
/models/hub/yolov5s6.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 0.33 # model depth multiple
6 | width_multiple: 0.50 # layer channel multiple
7 | anchors:
8 | - [19,27, 44,40, 38,94] # P3/8
9 | - [96,68, 86,152, 180,137] # P4/16
10 | - [140,301, 303,264, 238,542] # P5/32
11 | - [436,615, 739,380, 925,792] # P6/64
12 |
13 | # YOLOv5 v6.0 backbone
14 | backbone:
15 | # [from, number, module, args]
16 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
17 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
18 | [-1, 3, C3, [128]],
19 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
20 | [-1, 6, C3, [256]],
21 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
22 | [-1, 9, C3, [512]],
23 | [-1, 1, Conv, [768, 3, 2]], # 7-P5/32
24 | [-1, 3, C3, [768]],
25 | [-1, 1, Conv, [1024, 3, 2]], # 9-P6/64
26 | [-1, 3, C3, [1024]],
27 | [-1, 1, SPPF, [1024, 5]], # 11
28 | ]
29 |
30 | # YOLOv5 v6.0 head
31 | head:
32 | [[-1, 1, Conv, [768, 1, 1]],
33 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
34 | [[-1, 8], 1, Concat, [1]], # cat backbone P5
35 | [-1, 3, C3, [768, False]], # 15
36 |
37 | [-1, 1, Conv, [512, 1, 1]],
38 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
39 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
40 | [-1, 3, C3, [512, False]], # 19
41 |
42 | [-1, 1, Conv, [256, 1, 1]],
43 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
44 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
45 | [-1, 3, C3, [256, False]], # 23 (P3/8-small)
46 |
47 | [-1, 1, Conv, [256, 3, 2]],
48 | [[-1, 20], 1, Concat, [1]], # cat head P4
49 | [-1, 3, C3, [512, False]], # 26 (P4/16-medium)
50 |
51 | [-1, 1, Conv, [512, 3, 2]],
52 | [[-1, 16], 1, Concat, [1]], # cat head P5
53 | [-1, 3, C3, [768, False]], # 29 (P5/32-large)
54 |
55 | [-1, 1, Conv, [768, 3, 2]],
56 | [[-1, 12], 1, Concat, [1]], # cat head P6
57 | [-1, 3, C3, [1024, False]], # 32 (P6/64-xlarge)
58 |
59 | [[23, 26, 29, 32], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5, P6)
60 | ]
61 |
--------------------------------------------------------------------------------
/models/hub/yolov5x6.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 1.33 # model depth multiple
6 | width_multiple: 1.25 # layer channel multiple
7 | anchors:
8 | - [19,27, 44,40, 38,94] # P3/8
9 | - [96,68, 86,152, 180,137] # P4/16
10 | - [140,301, 303,264, 238,542] # P5/32
11 | - [436,615, 739,380, 925,792] # P6/64
12 |
13 | # YOLOv5 v6.0 backbone
14 | backbone:
15 | # [from, number, module, args]
16 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
17 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
18 | [-1, 3, C3, [128]],
19 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
20 | [-1, 6, C3, [256]],
21 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
22 | [-1, 9, C3, [512]],
23 | [-1, 1, Conv, [768, 3, 2]], # 7-P5/32
24 | [-1, 3, C3, [768]],
25 | [-1, 1, Conv, [1024, 3, 2]], # 9-P6/64
26 | [-1, 3, C3, [1024]],
27 | [-1, 1, SPPF, [1024, 5]], # 11
28 | ]
29 |
30 | # YOLOv5 v6.0 head
31 | head:
32 | [[-1, 1, Conv, [768, 1, 1]],
33 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
34 | [[-1, 8], 1, Concat, [1]], # cat backbone P5
35 | [-1, 3, C3, [768, False]], # 15
36 |
37 | [-1, 1, Conv, [512, 1, 1]],
38 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
39 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
40 | [-1, 3, C3, [512, False]], # 19
41 |
42 | [-1, 1, Conv, [256, 1, 1]],
43 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
44 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
45 | [-1, 3, C3, [256, False]], # 23 (P3/8-small)
46 |
47 | [-1, 1, Conv, [256, 3, 2]],
48 | [[-1, 20], 1, Concat, [1]], # cat head P4
49 | [-1, 3, C3, [512, False]], # 26 (P4/16-medium)
50 |
51 | [-1, 1, Conv, [512, 3, 2]],
52 | [[-1, 16], 1, Concat, [1]], # cat head P5
53 | [-1, 3, C3, [768, False]], # 29 (P5/32-large)
54 |
55 | [-1, 1, Conv, [768, 3, 2]],
56 | [[-1, 12], 1, Concat, [1]], # cat head P6
57 | [-1, 3, C3, [1024, False]], # 32 (P6/64-xlarge)
58 |
59 | [[23, 26, 29, 32], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5, P6)
60 | ]
61 |
--------------------------------------------------------------------------------
/models/yolov5m6-lsefast.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 0.67 # model depth multiple
6 | width_multiple: 0.75 # layer channel multiple
7 | anchors:
8 | - [19,27, 44,40, 38,94] # P3/8
9 | - [96,68, 86,152, 180,137] # P4/16
10 | - [140,301, 303,264, 238,542] # P5/32
11 | - [436,615, 739,380, 925,792] # P6/64
12 |
13 | # YOLOv5 v6.0 backbone
14 | backbone:
15 | # [from, number, module, args]
16 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
17 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
18 | [-1, 3, C3, [128]],
19 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
20 | [-1, 6, C3, [256]],
21 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
22 | [-1, 9, C3, [512]],
23 | [-1, 1, Conv, [768, 3, 2]], # 7-P5/32
24 | [-1, 3, C3, [768]],
25 | [-1, 1, Conv, [1024, 3, 2]], # 9-P6/64
26 | [-1, 3, C3, [1024]],
27 | [-1, 1, SPPF, [1024, 5]], # 11
28 | ]
29 |
30 | # YOLOv5 v6.0 head
31 | head:
32 | [[-1, 1, Conv, [768, 1, 1]],
33 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
34 | [[-1, 8], 1, Concat, [1]], # cat backbone P5
35 | [-1, 3, C3, [768, False]], # 15
36 |
37 | [-1, 1, Conv, [512, 1, 1]],
38 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
39 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
40 | [-1, 3, C3, [512, False]], # 19
41 |
42 | [-1, 1, Conv, [256, 1, 1]],
43 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
44 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
45 | [-1, 3, C3, [256, False]], # 23 (P3/8-small)
46 |
47 | [-1, 1, Conv, [256, 3, 2]],
48 | [[-1, 20], 1, Concat, [1]], # cat head P4
49 | [-1, 3, C3, [512, False]], # 26 (P4/16-medium)
50 |
51 | [-1, 1, Conv, [512, 3, 2]],
52 | [[-1, 16], 1, Concat, [1]], # cat head P5
53 | [-1, 3, C3, [768, False]], # 29 (P5/32-large)
54 |
55 | [-1, 1, Conv, [768, 3, 2]],
56 | [[-1, 12], 1, Concat, [1]], # cat head P6
57 | [-1, 3, C3, [1024, False]], # 32 (P6/64-xlarge)
58 |
59 | [[23, 26, 29, 32], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5, P6)
60 | ]
61 |
--------------------------------------------------------------------------------
/models/hub/yolov5m6.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 | depth_multiple: 0.67 # model depth multiple
6 | width_multiple: 0.75 # layer channel multiple
7 | anchors:
8 | - [19,27, 44,40, 38,94] # P3/8
9 | - [96,68, 86,152, 180,137] # P4/16
10 | - [140,301, 303,264, 238,542] # P5/32
11 | - [436,615, 739,380, 925,792] # P6/64
12 |
13 | # YOLOv5 v6.0 backbone
14 | backbone:
15 | # [from, number, module, args]
16 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
17 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
18 | [-1, 3, C3, [128]],
19 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
20 | [-1, 6, C3, [256]],
21 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
22 | [-1, 9, C3, [512]],
23 | [-1, 1, Conv, [768, 3, 2]], # 7-P5/32
24 | [-1, 3, C3, [768]],
25 | [-1, 1, Conv, [1024, 3, 2]], # 9-P6/64
26 | [-1, 3, C3, [1024]],
27 | [-1, 1, LSEFast, [1024]],
28 | [-1, 1, SPPF, [1024, 5]], # 11
29 | ]
30 |
31 | # YOLOv5 v6.0 head
32 | head:
33 | [[-1, 1, Conv, [768, 1, 1]],
34 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
35 | [[-1, 8], 1, Concat, [1]], # cat backbone P5
36 | [-1, 3, C3, [768, False]], # 15
37 |
38 | [-1, 1, Conv, [512, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
41 | [-1, 3, C3, [512, False]], # 19
42 |
43 | [-1, 1, Conv, [256, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
46 | [-1, 3, C3, [256, False]], # 23 (P3/8-small)
47 |
48 | [-1, 1, Conv, [256, 3, 2]],
49 | [[-1, 20], 1, Concat, [1]], # cat head P4
50 | [-1, 3, C3, [512, False]], # 26 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [512, 3, 2]],
53 | [[-1, 16], 1, Concat, [1]], # cat head P5
54 | [-1, 3, C3, [768, False]], # 29 (P5/32-large)
55 |
56 | [-1, 1, Conv, [768, 3, 2]],
57 | [[-1, 12], 1, Concat, [1]], # cat head P6
58 | [-1, 3, C3, [1024, False]], # 32 (P6/64-xlarge)
59 |
60 | [[23, 26, 29, 32], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5, P6)
61 | ]
62 |
--------------------------------------------------------------------------------
/data/GlobalWheat2020.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 | # Global Wheat 2020 dataset http://www.global-wheat.com/ by University of Saskatchewan
3 | # Example usage: python train.py --data GlobalWheat2020.yaml
4 | # parent
5 | # ├── yolov5
6 | # └── datasets
7 | # └── GlobalWheat2020 ← downloads here
8 |
9 |
10 | # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
11 | path: ../datasets/GlobalWheat2020 # dataset root dir
12 | train: # train images (relative to 'path') 3422 images
13 | - images/arvalis_1
14 | - images/arvalis_2
15 | - images/arvalis_3
16 | - images/ethz_1
17 | - images/rres_1
18 | - images/inrae_1
19 | - images/usask_1
20 | val: # val images (relative to 'path') 748 images (WARNING: train set contains ethz_1)
21 | - images/ethz_1
22 | test: # test images (optional) 1276 images
23 | - images/utokyo_1
24 | - images/utokyo_2
25 | - images/nau_1
26 | - images/uq_1
27 |
28 | # Classes
29 | nc: 1 # number of classes
30 | names: ['wheat_head'] # class names
31 |
32 |
33 | # Download script/URL (optional) ---------------------------------------------------------------------------------------
34 | download: |
35 | from utils.general import download, Path
36 |
37 | # Download
38 | dir = Path(yaml['path']) # dataset root dir
39 | urls = ['https://zenodo.org/record/4298502/files/global-wheat-codalab-official.zip',
40 | 'https://github.com/ultralytics/yolov5/releases/download/v1.0/GlobalWheat2020_labels.zip']
41 | download(urls, dir=dir)
42 |
43 | # Make Directories
44 | for p in 'annotations', 'images', 'labels':
45 | (dir / p).mkdir(parents=True, exist_ok=True)
46 |
47 | # Move
48 | for p in 'arvalis_1', 'arvalis_2', 'arvalis_3', 'ethz_1', 'rres_1', 'inrae_1', 'usask_1', \
49 | 'utokyo_1', 'utokyo_2', 'nau_1', 'uq_1':
50 | (dir / p).rename(dir / 'images' / p) # move to /images
51 | f = (dir / p).with_suffix('.json') # json file
52 | if f.exists():
53 | f.rename((dir / 'annotations' / p).with_suffix('.json')) # move to /annotations
54 |
--------------------------------------------------------------------------------
/models/shufflenetv2-4head.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 2 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 | - [436,615, 739,380, 925,792] # P6/64
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # [from, number, module, args]
17 | # Shuffle_Block: [out, stride]
18 | [[ -1, 1, ConvBNReLUMaxpool, [ 32 ] ], # 0-P2/4
19 | [ -1, 1, ShuffleNet_Blk, [ 128, 2 ] ], # 1-P3/8
20 | [ -1, 3, ShuffleNet_Blk, [ 128, 1 ] ], # 2
21 | [ -1, 1, ShuffleNet_Blk, [ 256, 2 ] ], # 3-P4/16
22 | [ -1, 7, ShuffleNet_Blk, [ 256, 1 ] ], # 4
23 | [ -1, 1, ShuffleNet_Blk, [ 512, 2 ] ], # 5-P5/32
24 | [ -1, 3, ShuffleNet_Blk, [ 512, 1 ] ], # 6
25 | [ -1, 1, ShuffleNet_Blk, [ 1024, 2 ] ], # 5-P5/32
26 | [ -1, 3, ShuffleNet_Blk, [ 1024, 1 ] ], # 6
27 | ]
28 |
29 | # YOLOv5 v6.0 head
30 | head:
31 | [[-1, 1, Conv, [768, 1, 1]],
32 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
33 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
34 | [-1, 1, C3, [768, False]], # 10
35 |
36 | [-1, 1, Conv, [512, 1, 1]],
37 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
38 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
39 | [-1, 1, C3, [512, False]], # 14 (P3/8-small)
40 |
41 | [-1, 1, Conv, [256, 1, 1]],
42 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
43 | [[-1, 2], 1, Concat, [1]], # cat backbone P3
44 | [-1, 1, C3, [256, False]], # 14 (P3/8-small)
45 |
46 | [-1, 1, Conv, [256, 3, 2]],
47 | [[-1, 16], 1, Concat, [1]], # cat head P4
48 | [-1, 1, C3, [512, False]], # 17 (P4/16-medium)
49 |
50 | [-1, 1, Conv, [512, 3, 2]],
51 | [[-1, 12], 1, Concat, [1]], # cat head P4
52 | [-1, 1, C3, [768, False]], # 17 (P4/16-medium)
53 |
54 | [-1, 1, Conv, [768, 3, 2]],
55 | [[-1, 8], 1, Concat, [1]], # cat head P5
56 | [-1, 1, C3, [1024, False]], # 20 (P5/32-large)
57 |
58 | [[20, 23, 26,29], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
59 | ]
60 |
--------------------------------------------------------------------------------
/converter.py:
--------------------------------------------------------------------------------
1 | import os
2 | import pandas as pd
3 | import numpy as np
4 |
5 |
6 |
7 | def convertTrainLabel():
8 | df = pd.read_csv('global-wheat-detection/train.csv')
9 | bboxs = np.stack(df['bbox'].apply(lambda x: np.fromstring(x[1:-1], sep=',')))
10 | for i, column in enumerate(['x', 'y', 'w', 'h']):
11 | df[column] = bboxs[:, i]
12 | df.drop(columns=['bbox'], inplace=True)
13 | df['x_center'] = df['x'] + df['w'] / 2
14 | df['y_center'] = df['y'] + df['h'] / 2
15 | df['classes'] = 0
16 | from tqdm.auto import tqdm
17 | import shutil as sh
18 | df = df[['image_id', 'x', 'y', 'w', 'h', 'x_center', 'y_center', 'classes']]
19 |
20 | index = list(set(df.image_id))
21 |
22 | source = 'train'
23 | if True:
24 | for fold in [0]:
25 | val_index = index[len(index) * fold // 5:len(index) * (fold + 1) // 5]
26 | for name, mini in tqdm(df.groupby('image_id')):
27 | if name in val_index:
28 | path2save = 'val2017/'
29 | else:
30 | path2save = 'train2017/'
31 | if not os.path.exists('convertor/fold{}/labels/'.format(fold) + path2save):
32 | os.makedirs('convertor/fold{}/labels/'.format(fold) + path2save)
33 | with open('convertor/fold{}/labels/'.format(fold) + path2save + name + ".txt", 'w+') as f:
34 | row = mini[['classes', 'x_center', 'y_center', 'w', 'h']].astype(float).values
35 | row = row / 1024
36 | row = row.astype(str)
37 | for j in range(len(row)):
38 | text = ' '.join(row[j])
39 | f.write(text)
40 | f.write("\n")
41 | if not os.path.exists('convertor/fold{}/images/{}'.format(fold, path2save)):
42 | os.makedirs('convertor/fold{}/images/{}'.format(fold, path2save))
43 | sh.copy("global-wheat-detection/{}/{}.jpg".format(source, name),
44 | 'convertor/fold{}/images/{}/{}.jpg'.format(fold, path2save, name))
45 | convertTrainLabel()
46 |
47 | # 原文链接:https://blog.csdn.net/weixin_44510615/article/details/119571695
--------------------------------------------------------------------------------
/models/mobilenetv3-SE.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # MobileNetV3-small 12层
17 | # [from, number, module, args]
18 | # MblNetV3_Blk: [out_ch, hidden_ch, kernel_size, stride, use_se, use_hs]
19 | # hidden_ch表示在Inverted residuals中的扩张通道数
20 | # use_se表示是否使用SELayer,use_hs表示使用hard_swish还是ReLU
21 | [[-1, 1, ConvBNHswish, [16, 2]], # 0-p1/2
22 | [-1, 1, MblNetV3_Blk, [16, 16, 3, 2, 1, 0]], # 1-p2/4
23 | [-1, 1, MblNetV3_Blk, [24, 72, 3, 2, 0, 0]], # 2-p3/8
24 | [-1, 1, MblNetV3_Blk, [24, 88, 3, 1, 0, 0]], # 3-p3/8
25 | [-1, 1, MblNetV3_Blk, [40, 96, 5, 2, 1, 1]], # 4-p4/16
26 | [-1, 1, MblNetV3_Blk, [40, 240, 5, 1, 1, 1]], # 5-p4/16
27 | [-1, 1, MblNetV3_Blk, [40, 240, 5, 1, 1, 1]], # 6-p4/16
28 | [-1, 1, MblNetV3_Blk, [48, 120, 5, 1, 1, 1]], # 7-p4/16
29 | [-1, 1, MblNetV3_Blk, [48, 144, 5, 1, 1, 1]], # 8-p4/16
30 | [-1, 1, MblNetV3_Blk, [96, 288, 5, 2, 1, 1]], # 9-p5/32
31 | [-1, 1, MblNetV3_Blk, [96, 576, 5, 1, 1, 1]], # 10-p5/32
32 | [-1, 1, MblNetV3_Blk, [96, 576, 5, 1, 1, 1]], # 11-p5/32
33 | #[-1, 1, SPPF, [576, 5]], # 11
34 | ]
35 |
36 | # YOLOv5 v6.0 head
37 | head:
38 | [[-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
41 | [-1, 1, C3, [256, False]], # 15
42 |
43 | [-1, 1, Conv, [128, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 3], 1, Concat, [1]], # cat backbone P3
46 | [-1, 1, C3, [128, False]], # 19 (P3/8-small)
47 |
48 | [-1, 1, Conv, [128, 3, 2]],
49 | [[-1, 16], 1, Concat, [1]], # cat head P4
50 | [-1, 1, C3, [256, False]], # 22 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [256, 3, 2]],
53 | [[-1, 12], 1, Concat, [1]], # cat head P5
54 | [-1, 1, C3, [512, False]], # 25 (P5/32-large)
55 |
56 | [[19, 22, 25], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
57 | ]
58 |
--------------------------------------------------------------------------------
/models/mobilenetv3.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # MobileNetV3-small 12层
17 | # [from, number, module, args]
18 | # MblNetV3_Blk: [out_ch, hidden_ch, kernel_size, stride, use_se, use_hs]
19 | # hidden_ch表示在Inverted residuals中的扩张通道数
20 | # use_se表示是否使用SELayer,use_hs表示使用hard_swish还是ReLU
21 | [[-1, 1, ConvBNHswish, [16, 2]], # 0-p1/2
22 | [-1, 1, MblNetV3_Blk, [16, 16, 3, 2, 1, 0]], # 1-p2/4
23 | [-1, 1, MblNetV3_Blk, [24, 72, 3, 2, 0, 0]], # 2-p3/8
24 | [-1, 1, MblNetV3_Blk, [24, 88, 3, 1, 0, 0]], # 3-p3/8
25 | [-1, 1, MblNetV3_Blk, [40, 96, 5, 2, 1, 1]], # 4-p4/16
26 | [-1, 1, MblNetV3_Blk, [40, 240, 5, 1, 1, 1]], # 5-p4/16
27 | [-1, 1, MblNetV3_Blk, [40, 240, 5, 1, 1, 1]], # 6-p4/16
28 | [-1, 1, MblNetV3_Blk, [48, 120, 5, 1, 1, 1]], # 7-p4/16
29 | [-1, 1, MblNetV3_Blk, [48, 144, 5, 1, 1, 1]], # 8-p4/16
30 | [-1, 1, MblNetV3_Blk, [96, 288, 5, 2, 1, 1]], # 9-p5/32
31 | [-1, 1, MblNetV3_Blk, [96, 576, 5, 1, 1, 1]], # 10-p5/32
32 | [-1, 1, MblNetV3_Blk, [96, 576, 5, 1, 1, 1]], # 11-p5/32
33 | #[-1, 1, SPPF, [576, 5]], # 11
34 | ]
35 |
36 | # YOLOv5 v6.0 head
37 | head:
38 | [[-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
41 | [-1, 1, C3, [256, False]], # 15
42 |
43 | [-1, 1, Conv, [128, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 3], 1, Concat, [1]], # cat backbone P3
46 | [-1, 1, C3, [128, False]], # 19 (P3/8-small)
47 |
48 | [-1, 1, Conv, [128, 3, 2]],
49 | [[-1, 16], 1, Concat, [1]], # cat head P4
50 | [-1, 1, C3, [256, False]], # 22 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [256, 3, 2]],
53 | [[-1, 12], 1, Concat, [1]], # cat head P5
54 | [-1, 1, C3, [512, False]], # 25 (P5/32-large)
55 |
56 | [[19, 22, 25], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
57 | ]
58 |
--------------------------------------------------------------------------------
/models/mobilenetv3-SEOFF.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # MobileNetV3-small 12层
17 | # [from, number, module, args]
18 | # MblNetV3_Blk: [out_ch, hidden_ch, kernel_size, stride, use_se, use_hs]
19 | # hidden_ch表示在Inverted residuals中的扩张通道数
20 | # use_se表示是否使用SELayer,use_hs表示使用hard_swish还是ReLU
21 | [[-1, 1, ConvBNHswish, [16, 2]], # 0-p1/2
22 | [-1, 1, MblNetV3_Blk, [16, 16, 3, 2, 0, 0]], # 1-p2/4
23 | [-1, 1, MblNetV3_Blk, [24, 72, 3, 2, 0, 0]], # 2-p3/8
24 | [-1, 1, MblNetV3_Blk, [24, 88, 3, 1, 0, 0]], # 3-p3/8
25 | [-1, 1, MblNetV3_Blk, [40, 96, 5, 2, 0, 1]], # 4-p4/16
26 | [-1, 1, MblNetV3_Blk, [40, 240, 5, 1, 0, 1]], # 5-p4/16
27 | [-1, 1, MblNetV3_Blk, [40, 240, 5, 1, 0, 1]], # 6-p4/16
28 | [-1, 1, MblNetV3_Blk, [48, 120, 5, 1, 0, 1]], # 7-p4/16
29 | [-1, 1, MblNetV3_Blk, [48, 144, 5, 1, 0, 1]], # 8-p4/16
30 | [-1, 1, MblNetV3_Blk, [96, 288, 5, 2, 0, 1]], # 9-p5/32
31 | [-1, 1, MblNetV3_Blk, [96, 576, 5, 1, 0, 1]], # 10-p5/32
32 | [-1, 1, MblNetV3_Blk, [96, 576, 5, 1, 0, 1]], # 11-p5/32
33 | #[-1, 1, SPPF, [576, 5]], # 11
34 | ]
35 |
36 | # YOLOv5 v6.0 head
37 | head:
38 | [[-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
41 | [-1, 1, C3, [256, False]], # 15
42 |
43 | [-1, 1, Conv, [128, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 3], 1, Concat, [1]], # cat backbone P3
46 | [-1, 1, C3, [128, False]], # 19 (P3/8-small)
47 |
48 | [-1, 1, Conv, [128, 3, 2]],
49 | [[-1, 16], 1, Concat, [1]], # cat head P4
50 | [-1, 1, C3, [256, False]], # 22 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [256, 3, 2]],
53 | [[-1, 12], 1, Concat, [1]], # cat head P5
54 | [-1, 1, C3, [512, False]], # 25 (P5/32-large)
55 |
56 | [[19, 22, 25], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
57 | ]
58 |
--------------------------------------------------------------------------------
/models/mobilenetv3-CA.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # MobileNetV3-small 12层
17 | # [from, number, module, args]
18 | # MblNetV3_Blk: [out_ch, hidden_ch, kernel_size, stride, use_se, use_hs]
19 | # hidden_ch表示在Inverted residuals中的扩张通道数
20 | # use_se表示是否使用SELayer,use_hs表示使用hard_swish还是ReLU
21 | [[-1, 1, ConvBNHswish, [16, 2]], # 0-p1/2
22 | [-1, 1, MblNetV3_BlkCA, [16, 16, 3, 2, 1, 0]], # 1-p2/4
23 | [-1, 1, MblNetV3_BlkCA, [24, 72, 3, 2, 0, 0]], # 2-p3/8
24 | [-1, 1, MblNetV3_BlkCA, [24, 88, 3, 1, 0, 0]], # 3-p3/8
25 | [-1, 1, MblNetV3_BlkCA, [40, 96, 5, 2, 1, 1]], # 4-p4/16
26 | [-1, 1, MblNetV3_BlkCA, [40, 240, 5, 1, 1, 1]], # 5-p4/16
27 | [-1, 1, MblNetV3_BlkCA, [40, 240, 5, 1, 1, 1]], # 6-p4/16
28 | [-1, 1, MblNetV3_BlkCA, [48, 120, 5, 1, 1, 1]], # 7-p4/16
29 | [-1, 1, MblNetV3_BlkCA, [48, 144, 5, 1, 1, 1]], # 8-p4/16
30 | [-1, 1, MblNetV3_BlkCA, [96, 288, 5, 2, 1, 1]], # 9-p5/32
31 | [-1, 1, MblNetV3_BlkCA, [96, 576, 5, 1, 1, 1]], # 10-p5/32
32 | [-1, 1, MblNetV3_BlkCA, [96, 576, 5, 1, 1, 1]], # 11-p5/32
33 | #[-1, 1, SPPF, [576, 5]], # 11
34 | ]
35 |
36 | # YOLOv5 v6.0 head
37 | head:
38 | [[-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
41 | [-1, 1, C3, [256, False]], # 15
42 |
43 | [-1, 1, Conv, [128, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 3], 1, Concat, [1]], # cat backbone P3
46 | [-1, 1, C3, [128, False]], # 19 (P3/8-small)
47 |
48 | [-1, 1, Conv, [128, 3, 2]],
49 | [[-1, 16], 1, Concat, [1]], # cat head P4
50 | [-1, 1, C3, [256, False]], # 22 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [256, 3, 2]],
53 | [[-1, 12], 1, Concat, [1]], # cat head P5
54 | [-1, 1, C3, [512, False]], # 25 (P5/32-large)
55 |
56 | [[19, 22, 25], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
57 | ]
58 |
--------------------------------------------------------------------------------
/models/mobilenetv3-CA-DEEP.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # MobileNetV3-small 12层
17 | # [from, number, module, args]
18 | # MblNetV3_Blk: [out_ch, hidden_ch, kernel_size, stride, use_se, use_hs]
19 | # hidden_ch表示在Inverted residuals中的扩张通道数
20 | # use_se表示是否使用SELayer,use_hs表示使用hard_swish还是ReLU
21 | [[-1, 1, ConvBNHswish, [16, 2]], # 0-p1/2
22 | [-1, 1, MblNetV3_BlkCA, [16, 16, 3, 2, 0, 0]], # 1-p2/4
23 | [-1, 1, MblNetV3_BlkCA, [24, 72, 3, 2, 0, 0]], # 2-p3/8
24 | [-1, 1, MblNetV3_BlkCA, [24, 88, 3, 1, 0, 0]], # 3-p3/8
25 | [-1, 1, MblNetV3_BlkCA, [40, 96, 5, 2, 0, 1]], # 4-p4/16
26 | [-1, 1, MblNetV3_BlkCA, [40, 240, 5, 1, 1, 1]], # 5-p4/16
27 | [-1, 1, MblNetV3_BlkCA, [40, 240, 5, 1, 1, 1]], # 6-p4/16
28 | [-1, 1, MblNetV3_BlkCA, [48, 120, 5, 1, 1, 1]], # 7-p4/16
29 | [-1, 1, MblNetV3_BlkCA, [48, 144, 5, 1, 1, 1]], # 8-p4/16
30 | [-1, 1, MblNetV3_BlkCA, [96, 288, 5, 2, 1, 1]], # 9-p5/32
31 | [-1, 1, MblNetV3_BlkCA, [96, 576, 5, 1, 1, 1]], # 10-p5/32
32 | [-1, 1, MblNetV3_BlkCA, [96, 576, 5, 1, 1, 1]], # 11-p5/32
33 | #[-1, 1, SPPF, [576, 5]], # 11
34 | ]
35 |
36 | # YOLOv5 v6.0 head
37 | head:
38 | [[-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
41 | [-1, 1, C3, [256, False]], # 15
42 |
43 | [-1, 1, Conv, [128, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 3], 1, Concat, [1]], # cat backbone P3
46 | [-1, 1, C3, [128, False]], # 19 (P3/8-small)
47 |
48 | [-1, 1, Conv, [128, 3, 2]],
49 | [[-1, 16], 1, Concat, [1]], # cat head P4
50 | [-1, 1, C3, [256, False]], # 22 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [256, 3, 2]],
53 | [[-1, 12], 1, Concat, [1]], # cat head P5
54 | [-1, 1, C3, [512, False]], # 25 (P5/32-large)
55 |
56 | [[19, 22, 25], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
57 | ]
58 |
--------------------------------------------------------------------------------
/models/mobilenetv3-ECA.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # MobileNetV3-small 12层
17 | # [from, number, module, args]
18 | # MblNetV3_Blk: [out_ch, hidden_ch, kernel_size, stride, use_se, use_hs]
19 | # hidden_ch表示在Inverted residuals中的扩张通道数
20 | # use_se表示是否使用SELayer,use_hs表示使用hard_swish还是ReLU
21 | [[-1, 1, ConvBNHswish, [16, 2]], # 0-p1/2
22 | [-1, 1, MblNetV3_BlkECA, [16, 16, 3, 2, 1, 0]], # 1-p2/4
23 | [-1, 1, MblNetV3_BlkECA, [24, 72, 3, 2, 0, 0]], # 2-p3/8
24 | [-1, 1, MblNetV3_BlkECA, [24, 88, 3, 1, 0, 0]], # 3-p3/8
25 | [-1, 1, MblNetV3_BlkECA, [40, 96, 5, 2, 1, 1]], # 4-p4/16
26 | [-1, 1, MblNetV3_BlkECA, [40, 240, 5, 1, 1, 1]], # 5-p4/16
27 | [-1, 1, MblNetV3_BlkECA, [40, 240, 5, 1, 1, 1]], # 6-p4/16
28 | [-1, 1, MblNetV3_BlkECA, [48, 120, 5, 1, 1, 1]], # 7-p4/16
29 | [-1, 1, MblNetV3_BlkECA, [48, 144, 5, 1, 1, 1]], # 8-p4/16
30 | [-1, 1, MblNetV3_BlkECA, [96, 288, 5, 2, 1, 1]], # 9-p5/32
31 | [-1, 1, MblNetV3_BlkECA, [96, 576, 5, 1, 1, 1]], # 10-p5/32
32 | [-1, 1, MblNetV3_BlkECA, [96, 576, 5, 1, 1, 1]], # 11-p5/32
33 | #[-1, 1, SPPF, [576, 5]], # 11
34 | ]
35 |
36 | # YOLOv5 v6.0 head
37 | head:
38 | [[-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
41 | [-1, 1, C3, [256, False]], # 15
42 |
43 | [-1, 1, Conv, [128, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 3], 1, Concat, [1]], # cat backbone P3
46 | [-1, 1, C3, [128, False]], # 19 (P3/8-small)
47 |
48 | [-1, 1, Conv, [128, 3, 2]],
49 | [[-1, 16], 1, Concat, [1]], # cat head P4
50 | [-1, 1, C3, [256, False]], # 22 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [256, 3, 2]],
53 | [[-1, 12], 1, Concat, [1]], # cat head P5
54 | [-1, 1, C3, [512, False]], # 25 (P5/32-large)
55 |
56 | [[19, 22, 25], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
57 | ]
58 |
--------------------------------------------------------------------------------
/models/mobilenetv3-LCA.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # MobileNetV3-small 12层
17 | # [from, number, module, args]
18 | # MblNetV3_Blk: [out_ch, hidden_ch, kernel_size, stride, use_se, use_hs]
19 | # hidden_ch表示在Inverted residuals中的扩张通道数
20 | # use_se表示是否使用SELayer,use_hs表示使用hard_swish还是ReLU
21 | [[-1, 1, ConvBNHswish, [16, 2]], # 0-p1/2
22 | [-1, 1, MblNetV3_BlkLCA, [16, 16, 3, 2, 1, 0]], # 1-p2/4
23 | [-1, 1, MblNetV3_BlkLCA, [24, 72, 3, 2, 0, 0]], # 2-p3/8
24 | [-1, 1, MblNetV3_BlkLCA, [24, 88, 3, 1, 0, 0]], # 3-p3/8
25 | [-1, 1, MblNetV3_BlkLCA, [40, 96, 5, 2, 1, 1]], # 4-p4/16
26 | [-1, 1, MblNetV3_BlkLCA, [40, 240, 5, 1, 1, 1]], # 5-p4/16
27 | [-1, 1, MblNetV3_BlkLCA, [40, 240, 5, 1, 1, 1]], # 6-p4/16
28 | [-1, 1, MblNetV3_BlkLCA, [48, 120, 5, 1, 1, 1]], # 7-p4/16
29 | [-1, 1, MblNetV3_BlkLCA, [48, 144, 5, 1, 1, 1]], # 8-p4/16
30 | [-1, 1, MblNetV3_BlkLCA, [96, 288, 5, 2, 1, 1]], # 9-p5/32
31 | [-1, 1, MblNetV3_BlkLCA, [96, 576, 5, 1, 1, 1]], # 10-p5/32
32 | [-1, 1, MblNetV3_BlkLCA, [96, 576, 5, 1, 1, 1]], # 11-p5/32
33 | #[-1, 1, SPPF, [576, 5]], # 11
34 | ]
35 |
36 | # YOLOv5 v6.0 head
37 | head:
38 | [[-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
41 | [-1, 1, C3, [256, False]], # 15
42 |
43 | [-1, 1, Conv, [128, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 3], 1, Concat, [1]], # cat backbone P3
46 | [-1, 1, C3, [128, False]], # 19 (P3/8-small)
47 |
48 | [-1, 1, Conv, [128, 3, 2]],
49 | [[-1, 16], 1, Concat, [1]], # cat head P4
50 | [-1, 1, C3, [256, False]], # 22 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [256, 3, 2]],
53 | [[-1, 12], 1, Concat, [1]], # cat head P5
54 | [-1, 1, C3, [512, False]], # 25 (P5/32-large)
55 |
56 | [[19, 22, 25], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
57 | ]
58 |
--------------------------------------------------------------------------------
/models/mobilenetv3-LSE.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # MobileNetV3-small 12层
17 | # [from, number, module, args]
18 | # MblNetV3_Blk: [out_ch, hidden_ch, kernel_size, stride, use_se, use_hs]
19 | # hidden_ch表示在Inverted residuals中的扩张通道数
20 | # use_se表示是否使用SELayer,use_hs表示使用hard_swish还是ReLU
21 | [[-1, 1, ConvBNHswish, [16, 2]], # 0-p1/2
22 | [-1, 1, MblNetV3_BlkLSE, [16, 16, 3, 2, 1, 0]], # 1-p2/4
23 | [-1, 1, MblNetV3_BlkLSE, [24, 72, 3, 2, 0, 0]], # 2-p3/8
24 | [-1, 1, MblNetV3_BlkLSE, [24, 88, 3, 1, 0, 0]], # 3-p3/8
25 | [-1, 1, MblNetV3_BlkLSE, [40, 96, 5, 2, 1, 1]], # 4-p4/16
26 | [-1, 1, MblNetV3_BlkLSE, [40, 240, 5, 1, 1, 1]], # 5-p4/16
27 | [-1, 1, MblNetV3_BlkLSE, [40, 240, 5, 1, 1, 1]], # 6-p4/16
28 | [-1, 1, MblNetV3_BlkLSE, [48, 120, 5, 1, 1, 1]], # 7-p4/16
29 | [-1, 1, MblNetV3_BlkLSE, [48, 144, 5, 1, 1, 1]], # 8-p4/16
30 | [-1, 1, MblNetV3_BlkLSE, [96, 288, 5, 2, 1, 1]], # 9-p5/32
31 | [-1, 1, MblNetV3_BlkLSE, [96, 576, 5, 1, 1, 1]], # 10-p5/32
32 | [-1, 1, MblNetV3_BlkLSE, [96, 576, 5, 1, 1, 1]], # 11-p5/32
33 | #[-1, 1, SPPF, [576, 5]], # 11
34 | ]
35 |
36 | # YOLOv5 v6.0 head
37 | head:
38 | [[-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
41 | [-1, 1, C3, [256, False]], # 15
42 |
43 | [-1, 1, Conv, [128, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 3], 1, Concat, [1]], # cat backbone P3
46 | [-1, 1, C3, [128, False]], # 19 (P3/8-small)
47 |
48 | [-1, 1, Conv, [128, 3, 2]],
49 | [[-1, 16], 1, Concat, [1]], # cat head P4
50 | [-1, 1, C3, [256, False]], # 22 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [256, 3, 2]],
53 | [[-1, 12], 1, Concat, [1]], # cat head P5
54 | [-1, 1, C3, [512, False]], # 25 (P5/32-large)
55 |
56 | [[19, 22, 25], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
57 | ]
58 |
--------------------------------------------------------------------------------
/models/mobilenetv3-CBAM.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # MobileNetV3-small 12层
17 | # [from, number, module, args]
18 | # MblNetV3_Blk: [out_ch, hidden_ch, kernel_size, stride, use_se, use_hs]
19 | # hidden_ch表示在Inverted residuals中的扩张通道数
20 | # use_se表示是否使用SELayer,use_hs表示使用hard_swish还是ReLU
21 | [[-1, 1, ConvBNHswish, [16, 2]], # 0-p1/2
22 | [-1, 1, MblNetV3_BlkCBAM, [16, 16, 3, 2, 1, 0]], # 1-p2/4
23 | [-1, 1, MblNetV3_BlkCBAM, [24, 72, 3, 2, 0, 0]], # 2-p3/8
24 | [-1, 1, MblNetV3_BlkCBAM, [24, 88, 3, 1, 0, 0]], # 3-p3/8
25 | [-1, 1, MblNetV3_BlkCBAM, [40, 96, 5, 2, 1, 1]], # 4-p4/16
26 | [-1, 1, MblNetV3_BlkCBAM, [40, 240, 5, 1, 1, 1]], # 5-p4/16
27 | [-1, 1, MblNetV3_BlkCBAM, [40, 240, 5, 1, 1, 1]], # 6-p4/16
28 | [-1, 1, MblNetV3_BlkCBAM, [48, 120, 5, 1, 1, 1]], # 7-p4/16
29 | [-1, 1, MblNetV3_BlkCBAM, [48, 144, 5, 1, 1, 1]], # 8-p4/16
30 | [-1, 1, MblNetV3_BlkCBAM, [96, 288, 5, 2, 1, 1]], # 9-p5/32
31 | [-1, 1, MblNetV3_BlkCBAM, [96, 576, 5, 1, 1, 1]], # 10-p5/32
32 | [-1, 1, MblNetV3_BlkCBAM, [96, 576, 5, 1, 1, 1]], # 11-p5/32
33 | #[-1, 1, SPPF, [576, 5]], # 11
34 | ]
35 |
36 | # YOLOv5 v6.0 head
37 | head:
38 | [[-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
41 | [-1, 1, C3, [256, False]], # 15
42 |
43 | [-1, 1, Conv, [128, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 3], 1, Concat, [1]], # cat backbone P3
46 | [-1, 1, C3, [128, False]], # 19 (P3/8-small)
47 |
48 | [-1, 1, Conv, [128, 3, 2]],
49 | [[-1, 16], 1, Concat, [1]], # cat head P4
50 | [-1, 1, C3, [256, False]], # 22 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [256, 3, 2]],
53 | [[-1, 12], 1, Concat, [1]], # cat head P5
54 | [-1, 1, C3, [512, False]], # 25 (P5/32-large)
55 |
56 | [[19, 22, 25], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
57 | ]
58 |
--------------------------------------------------------------------------------
/models/mobilenetv3-MLCA.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # MobileNetV3-small 12层
17 | # [from, number, module, args]
18 | # MblNetV3_Blk: [out_ch, hidden_ch, kernel_size, stride, use_se, use_hs]
19 | # hidden_ch表示在Inverted residuals中的扩张通道数
20 | # use_se表示是否使用SELayer,use_hs表示使用hard_swish还是ReLU
21 | [[-1, 1, ConvBNHswish, [16, 2]], # 0-p1/2
22 | [-1, 1, MblNetV3_BlkMLCA, [16, 16, 3, 2, 1, 0]], # 1-p2/4
23 | [-1, 1, MblNetV3_BlkMLCA, [24, 72, 3, 2, 0, 0]], # 2-p3/8
24 | [-1, 1, MblNetV3_BlkMLCA, [24, 88, 3, 1, 0, 0]], # 3-p3/8
25 | [-1, 1, MblNetV3_BlkMLCA, [40, 96, 5, 2, 1, 1]], # 4-p4/16
26 | [-1, 1, MblNetV3_BlkMLCA, [40, 240, 5, 1, 1, 1]], # 5-p4/16
27 | [-1, 1, MblNetV3_BlkMLCA, [40, 240, 5, 1, 1, 1]], # 6-p4/16
28 | [-1, 1, MblNetV3_BlkMLCA, [48, 120, 5, 1, 1, 1]], # 7-p4/16
29 | [-1, 1, MblNetV3_BlkMLCA, [48, 144, 5, 1, 1, 1]], # 8-p4/16
30 | [-1, 1, MblNetV3_BlkMLCA, [96, 288, 5, 2, 1, 1]], # 9-p5/32
31 | [-1, 1, MblNetV3_BlkMLCA, [96, 576, 5, 1, 1, 1]], # 10-p5/32
32 | [-1, 1, MblNetV3_BlkMLCA, [96, 576, 5, 1, 1, 1]], # 11-p5/32
33 | #[-1, 1, SPPF, [576, 5]], # 11
34 | ]
35 |
36 | # YOLOv5 v6.0 head
37 | head:
38 | [[-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
41 | [-1, 1, C3, [256, False]], # 15
42 |
43 | [-1, 1, Conv, [128, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 3], 1, Concat, [1]], # cat backbone P3
46 | [-1, 1, C3, [128, False]], # 19 (P3/8-small)
47 |
48 | [-1, 1, Conv, [128, 3, 2]],
49 | [[-1, 16], 1, Concat, [1]], # cat head P4
50 | [-1, 1, C3, [256, False]], # 22 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [256, 3, 2]],
53 | [[-1, 12], 1, Concat, [1]], # cat head P5
54 | [-1, 1, C3, [512, False]], # 25 (P5/32-large)
55 |
56 | [[19, 22, 25], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
57 | ]
58 |
--------------------------------------------------------------------------------
/models/mobilenetv3-CA-LSEFAST2.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # MobileNetV3-small 12层
17 | # [from, number, module, args]
18 | # MblNetV3_Blk: [out_ch, hidden_ch, kernel_size, stride, use_se, use_hs]
19 | # hidden_ch表示在Inverted residuals中的扩张通道数
20 | # use_se表示是否使用SELayer,use_hs表示使用hard_swish还是ReLU
21 | [[-1, 1, ConvBNHswish, [16, 2]], # 0-p1/2
22 | [-1, 1, MblNetV3_Blk, [16, 16, 3, 2, 1, 0]], # 1-p2/4
23 | [-1, 1, MblNetV3_BlkCA, [24, 72, 3, 2, 0, 0]], # 2-p3/8
24 | [-1, 1, MblNetV3_BlkCA, [24, 88, 3, 1, 0, 0]], # 3-p3/8
25 | [-1, 1, MblNetV3_BlkCA, [40, 96, 5, 2, 1, 1]], # 4-p4/16
26 | [-1, 1, MblNetV3_BlkLSEFast, [40, 240, 5, 1, 1, 1]], # 5-p4/16
27 | [-1, 1, MblNetV3_BlkCA, [40, 240, 5, 1, 1, 1]], # 6-p4/16
28 | [-1, 1, MblNetV3_BlkLSEFast, [48, 120, 5, 1, 1, 1]], # 7-p4/16
29 | [-1, 1, MblNetV3_BlkCA, [48, 144, 5, 1, 1, 1]], # 8-p4/16
30 | [-1, 1, MblNetV3_BlkLSEFast, [96, 288, 5, 2, 1, 1]], # 9-p5/32
31 | [-1, 1, MblNetV3_BlkCA, [96, 576, 5, 1, 1, 1]], # 10-p5/32
32 | [-1, 1, MblNetV3_BlkLSEFast, [96, 576, 5, 1, 1, 1]], # 11-p5/32
33 | #[-1, 1, SPPF, [576, 5]], # 11
34 | ]
35 |
36 | # YOLOv5 v6.0 head
37 | head:
38 | [[-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
41 | [-1, 1, C3, [256, False]], # 15
42 |
43 | [-1, 1, Conv, [128, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 3], 1, Concat, [1]], # cat backbone P3
46 | [-1, 1, C3, [128, False]], # 19 (P3/8-small)
47 |
48 | [-1, 1, Conv, [128, 3, 2]],
49 | [[-1, 16], 1, Concat, [1]], # cat head P4
50 | [-1, 1, C3, [256, False]], # 22 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [256, 3, 2]],
53 | [[-1, 12], 1, Concat, [1]], # cat head P5
54 | [-1, 1, C3, [512, False]], # 25 (P5/32-large)
55 |
56 | [[19, 22, 25], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
57 | ]
58 |
--------------------------------------------------------------------------------
/models/mobilenetv3-CA-LSEFAST-2-OP.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # MobileNetV3-small 12层
17 | # [from, number, module, args]
18 | # MblNetV3_Blk: [out_ch, hidden_ch, kernel_size, stride, use_se, use_hs]
19 | # hidden_ch表示在Inverted residuals中的扩张通道数
20 | # use_se表示是否使用SELayer,use_hs表示使用hard_swish还是ReLU
21 | [[-1, 1, ConvBNHswish, [16, 2]], # 0-p1/2
22 | [-1, 1, MblNetV3_Blk, [16, 16, 3, 2, 1, 0]], # 1-p2/4
23 | [-1, 1, MblNetV3_BlkCA, [24, 72, 3, 2, 0, 0]], # 2-p3/8
24 | [-1, 1, MblNetV3_BlkCA, [24, 88, 3, 1, 0, 0]], # 3-p3/8
25 | [-1, 1, MblNetV3_BlkCA, [40, 96, 5, 2, 1, 1]], # 4-p4/16
26 | [-1, 1, MblNetV3_BlkLSEFast, [40, 240, 5, 1, 0, 1]], # 5-p4/16
27 | [-1, 1, MblNetV3_BlkCA, [40, 240, 5, 1, 1, 1]], # 6-p4/16
28 | [-1, 1, MblNetV3_BlkLSEFast, [48, 120, 5, 1, 0, 1]], # 7-p4/16
29 | [-1, 1, MblNetV3_BlkCA, [48, 144, 5, 1, 1, 1]], # 8-p4/16
30 | [-1, 1, MblNetV3_BlkLSEFast, [96, 288, 5, 2, 0, 1]], # 9-p5/32
31 | [-1, 1, MblNetV3_BlkCA, [96, 576, 5, 1, 1, 1]], # 10-p5/32
32 | [-1, 1, MblNetV3_BlkLSEFast, [96, 576, 5, 1, 0, 1]], # 11-p5/32
33 | #[-1, 1, SPPF, [576, 5]], # 11
34 | ]
35 |
36 | # YOLOv5 v6.0 head
37 | head:
38 | [[-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
41 | [-1, 1, C3, [256, False]], # 15
42 |
43 | [-1, 1, Conv, [128, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 3], 1, Concat, [1]], # cat backbone P3
46 | [-1, 1, C3, [128, False]], # 19 (P3/8-small)
47 |
48 | [-1, 1, Conv, [128, 3, 2]],
49 | [[-1, 16], 1, Concat, [1]], # cat head P4
50 | [-1, 1, C3, [256, False]], # 22 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [256, 3, 2]],
53 | [[-1, 12], 1, Concat, [1]], # cat head P5
54 | [-1, 1, C3, [512, False]], # 25 (P5/32-large)
55 |
56 | [[19, 22, 25], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
57 | ]
58 |
--------------------------------------------------------------------------------
/models/mobilenetv3-CA-LSEFAST.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # MobileNetV3-small 12层
17 | # [from, number, module, args]
18 | # MblNetV3_Blk: [out_ch, hidden_ch, kernel_size, stride, use_se, use_hs]
19 | # hidden_ch表示在Inverted residuals中的扩张通道数
20 | # use_se表示是否使用SELayer,use_hs表示使用hard_swish还是ReLU
21 | [[-1, 1, ConvBNHswish, [16, 2]], # 0-p1/2
22 | [-1, 1, MblNetV3_BlkCA, [16, 16, 3, 2, 1, 0]], # 1-p2/4
23 | [-1, 1, MblNetV3_BlkCA, [24, 72, 3, 2, 0, 0]], # 2-p3/8
24 | [-1, 1, MblNetV3_BlkCA, [24, 88, 3, 1, 0, 0]], # 3-p3/8
25 | [-1, 1, MblNetV3_BlkCA, [40, 96, 5, 2, 1, 1]], # 4-p4/16
26 | [-1, 1, MblNetV3_BlkCA, [40, 240, 5, 1, 1, 1]], # 5-p4/16
27 | [-1, 1, MblNetV3_BlkLSEFast, [40, 240, 5, 1, 1, 1]], # 6-p4/16
28 | [-1, 1, MblNetV3_BlkLSEFast, [48, 120, 5, 1, 1, 1]], # 7-p4/16
29 | [-1, 1, MblNetV3_BlkLSEFast, [48, 144, 5, 1, 1, 1]], # 8-p4/16
30 | [-1, 1, MblNetV3_BlkLSEFast, [96, 288, 5, 2, 1, 1]], # 9-p5/32
31 | [-1, 1, MblNetV3_BlkLSEFast, [96, 576, 5, 1, 1, 1]], # 10-p5/32
32 | [-1, 1, MblNetV3_BlkLSEFast, [96, 576, 5, 1, 1, 1]], # 11-p5/32
33 | #[-1, 1, SPPF, [576, 5]], # 11
34 | ]
35 |
36 | # YOLOv5 v6.0 head
37 | head:
38 | [[-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
41 | [-1, 1, C3, [256, False]], # 15
42 |
43 | [-1, 1, Conv, [128, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 3], 1, Concat, [1]], # cat backbone P3
46 | [-1, 1, C3, [128, False]], # 19 (P3/8-small)
47 |
48 | [-1, 1, Conv, [128, 3, 2]],
49 | [[-1, 16], 1, Concat, [1]], # cat head P4
50 | [-1, 1, C3, [256, False]], # 22 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [256, 3, 2]],
53 | [[-1, 12], 1, Concat, [1]], # cat head P5
54 | [-1, 1, C3, [512, False]], # 25 (P5/32-large)
55 |
56 | [[19, 22, 25], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
57 | ]
58 |
--------------------------------------------------------------------------------
/models/mobilenetv3-CA-LSEFAST3.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # MobileNetV3-small 12层
17 | # [from, number, module, args]
18 | # MblNetV3_Blk: [out_ch, hidden_ch, kernel_size, stride, use_se, use_hs]
19 | # hidden_ch表示在Inverted residuals中的扩张通道数
20 | # use_se表示是否使用SELayer,use_hs表示使用hard_swish还是ReLU
21 | [[-1, 1, ConvBNHswish, [16, 2]], # 0-p1/2
22 | [-1, 1, MblNetV3_Blk, [16, 16, 3, 2, 1, 0]], # 1-p2/4
23 | [-1, 1, MblNetV3_BlkCA, [24, 72, 3, 2, 0, 0]], # 2-p3/8
24 | [-1, 1, MblNetV3_BlkCA, [24, 88, 3, 1, 0, 0]], # 3-p3/8
25 | [-1, 1, MblNetV3_BlkCA, [40, 96, 5, 2, 1, 1]], # 4-p4/16
26 | [-1, 1, MblNetV3_BlkCA, [40, 240, 5, 1, 1, 1]], # 5-p4/16
27 | [-1, 1, MblNetV3_BlkLSEFast, [40, 240, 5, 1, 1, 1]], # 6-p4/16
28 | [-1, 1, MblNetV3_BlkLSEFast, [48, 120, 5, 1, 1, 1]], # 7-p4/16
29 | [-1, 1, MblNetV3_BlkLSEFast, [48, 144, 5, 1, 1, 1]], # 8-p4/16
30 | [-1, 1, MblNetV3_BlkLSEFast, [96, 288, 5, 2, 1, 1]], # 9-p5/32
31 | [-1, 1, MblNetV3_BlkLSEFast, [96, 576, 5, 1, 1, 1]], # 10-p5/32
32 | [-1, 1, MblNetV3_BlkLSEFast, [96, 576, 5, 1, 1, 1]], # 11-p5/32
33 | #[-1, 1, SPPF, [576, 5]], # 11
34 | ]
35 |
36 | # YOLOv5 v6.0 head
37 | head:
38 | [[-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
41 | [-1, 1, C3, [256, False]], # 15
42 |
43 | [-1, 1, Conv, [128, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 3], 1, Concat, [1]], # cat backbone P3
46 | [-1, 1, C3, [128, False]], # 19 (P3/8-small)
47 |
48 | [-1, 1, Conv, [128, 3, 2]],
49 | [[-1, 16], 1, Concat, [1]], # cat head P4
50 | [-1, 1, C3, [256, False]], # 22 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [256, 3, 2]],
53 | [[-1, 12], 1, Concat, [1]], # cat head P5
54 | [-1, 1, C3, [512, False]], # 25 (P5/32-large)
55 |
56 | [[19, 22, 25], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
57 | ]
58 |
--------------------------------------------------------------------------------
/models/mobilenetv3-LSEFAST.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # MobileNetV3-small 12层
17 | # [from, number, module, args]
18 | # MblNetV3_Blk: [out_ch, hidden_ch, kernel_size, stride, use_se, use_hs]
19 | # hidden_ch表示在Inverted residuals中的扩张通道数
20 | # use_se表示是否使用SELayer,use_hs表示使用hard_swish还是ReLU
21 | [[-1, 1, ConvBNHswish, [16, 2]], # 0-p1/2
22 | [-1, 1, MblNetV3_BlkLSEFast, [16, 16, 3, 2, 1, 0]], # 1-p2/4
23 | [-1, 1, MblNetV3_BlkLSEFast, [24, 72, 3, 2, 0, 0]], # 2-p3/8
24 | [-1, 1, MblNetV3_BlkLSEFast, [24, 88, 3, 1, 0, 0]], # 3-p3/8
25 | [-1, 1, MblNetV3_BlkLSEFast, [40, 96, 5, 2, 1, 1]], # 4-p4/16
26 | [-1, 1, MblNetV3_BlkLSEFast, [40, 240, 5, 1, 1, 1]], # 5-p4/16
27 | [-1, 1, MblNetV3_BlkLSEFast, [40, 240, 5, 1, 1, 1]], # 6-p4/16
28 | [-1, 1, MblNetV3_BlkLSEFast, [48, 120, 5, 1, 1, 1]], # 7-p4/16
29 | [-1, 1, MblNetV3_BlkLSEFast, [48, 144, 5, 1, 1, 1]], # 8-p4/16
30 | [-1, 1, MblNetV3_BlkLSEFast, [96, 288, 5, 2, 1, 1]], # 9-p5/32
31 | [-1, 1, MblNetV3_BlkLSEFast, [96, 576, 5, 1, 1, 1]], # 10-p5/32
32 | [-1, 1, MblNetV3_BlkLSEFast, [96, 576, 5, 1, 1, 1]], # 11-p5/32
33 | #[-1, 1, SPPF, [576, 5]], # 11
34 | ]
35 |
36 | # YOLOv5 v6.0 head
37 | head:
38 | [[-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
41 | [-1, 1, C3, [256, False]], # 15
42 |
43 | [-1, 1, Conv, [128, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 3], 1, Concat, [1]], # cat backbone P3
46 | [-1, 1, C3, [128, False]], # 19 (P3/8-small)
47 |
48 | [-1, 1, Conv, [128, 3, 2]],
49 | [[-1, 16], 1, Concat, [1]], # cat head P4
50 | [-1, 1, C3, [256, False]], # 22 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [256, 3, 2]],
53 | [[-1, 12], 1, Concat, [1]], # cat head P5
54 | [-1, 1, C3, [512, False]], # 25 (P5/32-large)
55 |
56 | [[19, 22, 25], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
57 | ]
58 |
--------------------------------------------------------------------------------
/models/mobilenetv3-LSEFAST-DEEP.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 20 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # MobileNetV3-small 12层
17 | # [from, number, module, args]
18 | # MblNetV3_Blk: [out_ch, hidden_ch, kernel_size, stride, use_se, use_hs]
19 | # hidden_ch表示在Inverted residuals中的扩张通道数
20 | # use_se表示是否使用SELayer,use_hs表示使用hard_swish还是ReLU
21 | [[-1, 1, ConvBNHswish, [16, 2]], # 0-p1/2
22 | [-1, 1, MblNetV3_BlkLSEFast, [16, 16, 3, 2, 0, 0]], # 1-p2/4
23 | [-1, 1, MblNetV3_BlkLSEFast, [24, 72, 3, 2, 0, 0]], # 2-p3/8
24 | [-1, 1, MblNetV3_BlkLSEFast, [24, 88, 3, 1, 0, 0]], # 3-p3/8
25 | [-1, 1, MblNetV3_BlkLSEFast, [40, 96, 5, 2, 0, 1]], # 4-p4/16
26 | [-1, 1, MblNetV3_BlkLSEFast, [40, 240, 5, 1, 1, 1]], # 5-p4/16
27 | [-1, 1, MblNetV3_BlkLSEFast, [40, 240, 5, 1, 1, 1]], # 6-p4/16
28 | [-1, 1, MblNetV3_BlkLSEFast, [48, 120, 5, 1, 1, 1]], # 7-p4/16
29 | [-1, 1, MblNetV3_BlkLSEFast, [48, 144, 5, 1, 1, 1]], # 8-p4/16
30 | [-1, 1, MblNetV3_BlkLSEFast, [96, 288, 5, 2, 1, 1]], # 9-p5/32
31 | [-1, 1, MblNetV3_BlkLSEFast, [96, 576, 5, 1, 1, 1]], # 10-p5/32
32 | [-1, 1, MblNetV3_BlkLSEFast, [96, 576, 5, 1, 1, 1]], # 11-p5/32
33 | #[-1, 1, SPPF, [576, 5]], # 11
34 | ]
35 |
36 | # YOLOv5 v6.0 head
37 | head:
38 | [[-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
41 | [-1, 1, C3, [256, False]], # 15
42 |
43 | [-1, 1, Conv, [128, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 3], 1, Concat, [1]], # cat backbone P3
46 | [-1, 1, C3, [128, False]], # 19 (P3/8-small)
47 |
48 | [-1, 1, Conv, [128, 3, 2]],
49 | [[-1, 16], 1, Concat, [1]], # cat head P4
50 | [-1, 1, C3, [256, False]], # 22 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [256, 3, 2]],
53 | [[-1, 12], 1, Concat, [1]], # cat head P5
54 | [-1, 1, C3, [512, False]], # 25 (P5/32-large)
55 |
56 | [[19, 22, 25], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
57 | ]
58 |
--------------------------------------------------------------------------------
/models/mobilenetv3-LSEFAST-wheet.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 1 # number of classes
5 |
6 | depth_multiple: 1.0 # model depth multiple
7 | width_multiple: 1.0 # layer channel multiple
8 |
9 | anchors:
10 | - [10,13, 16,30, 33,23] # P3/8
11 | - [30,61, 62,45, 59,119] # P4/16
12 | - [116,90, 156,198, 373,326] # P5/32
13 |
14 | # YOLOv5 v6.0 backbone
15 | backbone:
16 | # MobileNetV3-small 12层
17 | # [from, number, module, args]
18 | # MblNetV3_Blk: [out_ch, hidden_ch, kernel_size, stride, use_se, use_hs]
19 | # hidden_ch表示在Inverted residuals中的扩张通道数
20 | # use_se表示是否使用SELayer,use_hs表示使用hard_swish还是ReLU
21 | [[-1, 1, ConvBNHswish, [16, 2]], # 0-p1/2
22 | [-1, 1, MblNetV3_BlkLSEFast, [16, 16, 3, 2, 1, 0]], # 1-p2/4
23 | [-1, 1, MblNetV3_BlkLSEFast, [24, 72, 3, 2, 0, 0]], # 2-p3/8
24 | [-1, 1, MblNetV3_BlkLSEFast, [24, 88, 3, 1, 0, 0]], # 3-p3/8
25 | [-1, 1, MblNetV3_BlkLSEFast, [40, 96, 5, 2, 1, 1]], # 4-p4/16
26 | [-1, 1, MblNetV3_BlkLSEFast, [40, 240, 5, 1, 1, 1]], # 5-p4/16
27 | [-1, 1, MblNetV3_BlkLSEFast, [40, 240, 5, 1, 1, 1]], # 6-p4/16
28 | [-1, 1, MblNetV3_BlkLSEFast, [48, 120, 5, 1, 1, 1]], # 7-p4/16
29 | [-1, 1, MblNetV3_BlkLSEFast, [48, 144, 5, 1, 1, 1]], # 8-p4/16
30 | [-1, 1, MblNetV3_BlkLSEFast, [96, 288, 5, 2, 1, 1]], # 9-p5/32
31 | [-1, 1, MblNetV3_BlkLSEFast, [96, 576, 5, 1, 1, 1]], # 10-p5/32
32 | [-1, 1, MblNetV3_BlkLSEFast, [96, 576, 5, 1, 1, 1]], # 11-p5/32
33 | #[-1, 1, SPPF, [576, 5]], # 11
34 | ]
35 |
36 | # YOLOv5 v6.0 head
37 | head:
38 | [[-1, 1, Conv, [256, 1, 1]],
39 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
40 | [[-1, 8], 1, Concat, [1]], # cat backbone P4
41 | [-1, 1, C3, [256, False]], # 15
42 |
43 | [-1, 1, Conv, [128, 1, 1]],
44 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
45 | [[-1, 3], 1, Concat, [1]], # cat backbone P3
46 | [-1, 1, C3, [128, False]], # 19 (P3/8-small)
47 |
48 | [-1, 1, Conv, [128, 3, 2]],
49 | [[-1, 16], 1, Concat, [1]], # cat head P4
50 | [-1, 1, C3, [256, False]], # 22 (P4/16-medium)
51 |
52 | [-1, 1, Conv, [256, 3, 2]],
53 | [[-1, 12], 1, Concat, [1]], # cat head P5
54 | [-1, 1, C3, [512, False]], # 25 (P5/32-large)
55 |
56 | [[19, 22, 25], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
57 | ]
58 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Start FROM Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch
4 | FROM nvcr.io/nvidia/pytorch:21.10-py3
5 |
6 | # Install linux packages
7 | RUN apt update && apt install -y zip htop screen libgl1-mesa-glx
8 |
9 | # Install python dependencies
10 | COPY requirements.txt .
11 | RUN python -m pip install --upgrade pip
12 | RUN pip uninstall -y torch torchvision torchtext
13 | RUN pip install --no-cache -r requirements.txt albumentations wandb gsutil notebook \
14 | torch==1.10.2+cu113 torchvision==0.11.3+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
15 | # RUN pip install --no-cache -U torch torchvision
16 |
17 | # Create working directory
18 | RUN mkdir -p /usr/src/app
19 | WORKDIR /usr/src/app
20 |
21 | # Copy contents
22 | COPY . /usr/src/app
23 |
24 | # Downloads to user config dir
25 | ADD https://ultralytics.com/assets/Arial.ttf /root/.config/Ultralytics/
26 |
27 | # Set environment variables
28 | # ENV HOME=/usr/src/app
29 |
30 |
31 | # Usage Examples -------------------------------------------------------------------------------------------------------
32 |
33 | # Build and Push
34 | # t=ultralytics/yolov5:latest && sudo docker build -t $t . && sudo docker push $t
35 |
36 | # Pull and Run
37 | # t=ultralytics/yolov5:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all $t
38 |
39 | # Pull and Run with local directory access
40 | # t=ultralytics/yolov5:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all -v "$(pwd)"/datasets:/usr/src/datasets $t
41 |
42 | # Kill all
43 | # sudo docker kill $(sudo docker ps -q)
44 |
45 | # Kill all image-based
46 | # sudo docker kill $(sudo docker ps -qa --filter ancestor=ultralytics/yolov5:latest)
47 |
48 | # Bash into running container
49 | # sudo docker exec -it 5a9b5863d93d bash
50 |
51 | # Bash into stopped container
52 | # id=$(sudo docker ps -qa) && sudo docker start $id && sudo docker exec -it $id bash
53 |
54 | # Clean up
55 | # docker system prune -a --volumes
56 |
57 | # Update Ubuntu drivers
58 | # https://www.maketecheasier.com/install-nvidia-drivers-ubuntu/
59 |
60 | # DDP test
61 | # python -m torch.distributed.run --nproc_per_node 2 --master_port 1 train.py --epochs 3
62 |
63 | # GCP VM from Image
64 | # docker.io/ultralytics/yolov5:latest
65 |
--------------------------------------------------------------------------------
/models/hub/yolov5-p7.yaml:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 |
3 | # Parameters
4 | nc: 80 # number of classes
5 | depth_multiple: 1.0 # model depth multiple
6 | width_multiple: 1.0 # layer channel multiple
7 | anchors: 3 # AutoAnchor evolves 3 anchors per P output layer
8 |
9 | # YOLOv5 v6.0 backbone
10 | backbone:
11 | # [from, number, module, args]
12 | [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
13 | [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
14 | [-1, 3, C3, [128]],
15 | [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
16 | [-1, 6, C3, [256]],
17 | [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
18 | [-1, 9, C3, [512]],
19 | [-1, 1, Conv, [768, 3, 2]], # 7-P5/32
20 | [-1, 3, C3, [768]],
21 | [-1, 1, Conv, [1024, 3, 2]], # 9-P6/64
22 | [-1, 3, C3, [1024]],
23 | [-1, 1, Conv, [1280, 3, 2]], # 11-P7/128
24 | [-1, 3, C3, [1280]],
25 | [-1, 1, SPPF, [1280, 5]], # 13
26 | ]
27 |
28 | # YOLOv5 v6.0 head with (P3, P4, P5, P6, P7) outputs
29 | head:
30 | [[-1, 1, Conv, [1024, 1, 1]],
31 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
32 | [[-1, 10], 1, Concat, [1]], # cat backbone P6
33 | [-1, 3, C3, [1024, False]], # 17
34 |
35 | [-1, 1, Conv, [768, 1, 1]],
36 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
37 | [[-1, 8], 1, Concat, [1]], # cat backbone P5
38 | [-1, 3, C3, [768, False]], # 21
39 |
40 | [-1, 1, Conv, [512, 1, 1]],
41 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
42 | [[-1, 6], 1, Concat, [1]], # cat backbone P4
43 | [-1, 3, C3, [512, False]], # 25
44 |
45 | [-1, 1, Conv, [256, 1, 1]],
46 | [-1, 1, nn.Upsample, [None, 2, 'nearest']],
47 | [[-1, 4], 1, Concat, [1]], # cat backbone P3
48 | [-1, 3, C3, [256, False]], # 29 (P3/8-small)
49 |
50 | [-1, 1, Conv, [256, 3, 2]],
51 | [[-1, 26], 1, Concat, [1]], # cat head P4
52 | [-1, 3, C3, [512, False]], # 32 (P4/16-medium)
53 |
54 | [-1, 1, Conv, [512, 3, 2]],
55 | [[-1, 22], 1, Concat, [1]], # cat head P5
56 | [-1, 3, C3, [768, False]], # 35 (P5/32-large)
57 |
58 | [-1, 1, Conv, [768, 3, 2]],
59 | [[-1, 18], 1, Concat, [1]], # cat head P6
60 | [-1, 3, C3, [1024, False]], # 38 (P6/64-xlarge)
61 |
62 | [-1, 1, Conv, [1024, 3, 2]],
63 | [[-1, 14], 1, Concat, [1]], # cat head P7
64 | [-1, 3, C3, [1280, False]], # 41 (P7/128-xxlarge)
65 |
66 | [[29, 32, 35, 38, 41], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5, P6, P7)
67 | ]
68 |
--------------------------------------------------------------------------------
/utils/autobatch.py:
--------------------------------------------------------------------------------
1 | # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
2 | """
3 | Auto-batch utils
4 | """
5 |
6 | from copy import deepcopy
7 |
8 | import numpy as np
9 | import torch
10 | from torch.cuda import amp
11 |
12 | from utils.general import LOGGER, colorstr
13 | from utils.torch_utils import profile
14 |
15 |
16 | def check_train_batch_size(model, imgsz=640):
17 | # Check YOLOv5 training batch size
18 | with amp.autocast():
19 | return autobatch(deepcopy(model).train(), imgsz) # compute optimal batch size
20 |
21 |
22 | def autobatch(model, imgsz=640, fraction=0.9, batch_size=16):
23 | # Automatically estimate best batch size to use `fraction` of available CUDA memory
24 | # Usage:
25 | # import torch
26 | # from utils.autobatch import autobatch
27 | # model = torch.hub.load('ultralytics/yolov5', 'yolov5s', autoshape=False)
28 | # print(autobatch(model))
29 |
30 | prefix = colorstr('AutoBatch: ')
31 | LOGGER.info(f'{prefix}Computing optimal batch size for --imgsz {imgsz}')
32 | device = next(model.parameters()).device # get model device
33 | if device.type == 'cpu':
34 | LOGGER.info(f'{prefix}CUDA not detected, using default CPU batch-size {batch_size}')
35 | return batch_size
36 |
37 | d = str(device).upper() # 'CUDA:0'
38 | properties = torch.cuda.get_device_properties(device) # device properties
39 | t = properties.total_memory / 1024 ** 3 # (GiB)
40 | r = torch.cuda.memory_reserved(device) / 1024 ** 3 # (GiB)
41 | a = torch.cuda.memory_allocated(device) / 1024 ** 3 # (GiB)
42 | f = t - (r + a) # free inside reserved
43 | LOGGER.info(f'{prefix}{d} ({properties.name}) {t:.2f}G total, {r:.2f}G reserved, {a:.2f}G allocated, {f:.2f}G free')
44 |
45 | batch_sizes = [1, 2, 4, 8, 16]
46 | try:
47 | img = [torch.zeros(b, 3, imgsz, imgsz) for b in batch_sizes]
48 | y = profile(img, model, n=3, device=device)
49 | except Exception as e:
50 | LOGGER.warning(f'{prefix}{e}')
51 |
52 | y = [x[2] for x in y if x] # memory [2]
53 | batch_sizes = batch_sizes[:len(y)]
54 | p = np.polyfit(batch_sizes, y, deg=1) # first degree polynomial fit
55 | b = int((f * fraction - p[1]) / p[0]) # y intercept (optimal batch size)
56 | LOGGER.info(f'{prefix}Using batch-size {b} for {d} {t * fraction:.2f}G/{t:.2f}G ({fraction * 100:.0f}%)')
57 | return b
58 |
--------------------------------------------------------------------------------