├── 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 | 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 | 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 | --------------------------------------------------------------------------------