Skip to content

Latest commit

 

History

History
executable file
·
280 lines (176 loc) · 11.2 KB

README.zh-CN.md

File metadata and controls

executable file
·
280 lines (176 loc) · 11.2 KB

Yolov8_Efficient

简单高效的使用YOLOv8

English | 简体中文


GitHub stars GitHub forks GitHub watchers Build Status imgGitHub repo size GitHub language count GitHub last commit GitHubimg

😎 介绍

这是一个由独立开发人员维护的非官方存储库,用于基于 ultralytics v8 Weights 和 ultralytics Project 的学习和交流。如果大家有更多的问题和想法,欢迎大家一起讨论。 另外,ultralytics已发布了最新的ultralytics仓库,建议优先使用官方的。

本项目基于ultralytics及yolov5等进行综合参考,致力于让yolo系列的更加高效和易用。

目前主要做了以下的工作:

config_1

🥰展示

指标

网络结构图

这里感谢集智书童为本项目提供的网络结构图

  • wandb训练日志: log
  • 实验日志: log

🆕新闻!


  • ... ...
  • 2023/01/16 - add train_detect, train_cls and train_seg
  • 2023/01/11 - add metrics plot and model structure
  • 2023/01/10 - add yolov8 metrics and logs
  • 2023/01/09 - add val.py and fix some error
  • 2023/01/07 - fix some error and warning
  • 2023/01/06 - add train.py, detect.py and README.md
  • 2023/01/06 - Create and Init a new repository

🤔 任务清单:

  • 模型测试和验证中
  • [ ]

🧙‍快速开始

1.命令行执行

简单地使用最新的 Ultralytics YOLO 模型

yolo task=detect    mode=train    model=yolov8n.yaml      args=...
          classify       predict        yolov8n-cls.yaml  args=...
          segment        val            yolov8n-seg.yaml  args=...
                         export         yolov8n.pt        format=onnx

2. Python SDK

使用 Ultralytics YOLO 模型的 pythonic 接口

from ultralytics import YOLO

model = YOLO("yolov8n.yaml")  # create a new model from scratch
model = YOLO(
    "yolov8n.pt"
)  # load a pretrained model (recommended for best training results)
results = model.train(data="coco128.yaml", epochs=100, imgsz=640, ...)
results = model.val()
results = model.predict(source="bus.jpg")
success = model.export(format="onnx")

如果您希望为研发修改 YOLO 或在其之上构建,请参阅文档https://docs.ultralytics.com/。

3.训练自己的数据集

这里以coco128为例。

  • 1.制作YOLO格式的数据集,可以通过项目目录中的prepare_data.py来进行数据集的划分与转换。
  • 2.修改config中相应模型权重的.yaml,配置其数据集路径,读入数据加载器。
  • 3.修改model中相应参数,主要是修改类别数量和网络结构参数,如果只是简单应用,那么不建议修改下面的网络结构参数,只修改其类别数量即可。
  • 4.运行train.py,这一步可以到parse_opt中对应的变量下进行修改,需要根据设备和训练的需要进行配置,主要包括devicetaskdataweightsepochsbatch_size等,如果不配置则使用默认参数。

🧙‍预训练检查点

Model size (pixels) mAPval 50-95 mAPval 50 Speed CPU b1 (ms) Speed RTX 3080 b1(ms) layers params (M) FLOPs @640 (B)
yolov8n 640 37.2 53.2 47.2 5.6 168 3.15 8.7
yolov8n-seg 640 30.7 50.0 59.3 11.3 195 3.40 12.6
yolov8s 640 44.7 62.2 87.9 5.7 168 11.15 28.6
yolov8s-seg 640 37.0 58.8 107.6 11.4 195 11.81 42.6
yolov8m 640 49.9 67.4 185.6 8.3 218 25.89 78.9
yolov8m-seg 640 40.6 63.5 207.7 15.3 245 27.27 110.2
yolov8l 640 52.4 69.9 319.6 13.1 268 43.67 165.2
yolov8l-seg 640 42.5 66.1 296.9 16.8 295 45.97 220.5
yolov8x 640 53.5 70.9 334.6 20.4 268 68.20 257.8
yolov8x-seg 640 43.2 67.1 418.8 23.8 295 71.80 344.1
  • 表格注释 以上数据是在以下配置的环境中运行测试生成的。详情见下文。
  • 显卡:NVIDIA GeForce RTX 3080/PCIe/SSE2
  • CPU:Intel® Core™ i9-10900K CPU @ 3.70GHz × 20
  • 内存:31.3 GiB
  • 系统:Ubuntu 18.04 LTS
  • (ms): 这里的统计速度是推理速度

安装

直接安装

pip install ultralytics

配置安装

git clone git@github.com:isLinXu/YOLOv8_Efficient.git
cd YOLOv8_Efficient
cd ultralytics-master
pip install -e .

🔨用法

训练

  • 单 GPU 训练:
python train.py --data coco128.yaml --weights weights/yolov8ns.pt --img 640  # from pretrained (recommended)
python train.py --data coco128.yaml --weights '' --cfg yolov8ns.yaml --img 640  # from scratch

使用 IDE Pycharm

  • 多 GPU DDP 训练:
    python -m torch.distributed.run --nproc_per_node 4 --master_port 1 train.py --data coco128.yaml --weights yolov8ns.pt --img 640 --device 0,1,2,3

推理检测

python detect.py --weights yolov8s.pt --source 0                               # webcam
                                                     img.jpg                         # image
                                                     vid.mp4                         # video
                                                     screen                          # screenshot
                                                     path/                           # directory
                                                     list.txt                        # list of images
                                                     list.streams                    # list of streams
                                                     'path/*.jpg'                    # glob
                                                     'https://youtu.be/Zgi9g1ksQHc'  # YouTube
                                                     'rtsp://example.com/media.mp4'  # RTSP, RTMP, HTTP stream

使用 IDE Pycharm

验证

  • 以coco128为例:

用法:

python val.py --weights yolov8n.pt --data coco128.yaml --img 640

用法 - 格式:

python val.py --weights yolov8s.pt                 # PyTorch
                              yolov8s.torchscript        # TorchScript
                              yolov8s.onnx               # ONNX Runtime or OpenCV DNN with --dnn
                              yolov8s_openvino_model     # OpenVINO
                              yolov8s.engine             # TensorRT
                              yolov8s.mlmodel            # CoreML (macOS-only)
                              yolov8s_saved_model        # TensorFlow SavedModel
                              yolov8s.pb                 # TensorFlow GraphDef
                              yolov8s.tflite             # TensorFlow Lite
                              yolov8s_edgetpu.tflite     # TensorFlow Edge TPU
                              yolov8s_paddle_model       # PaddlePaddle

使用 IDE Pycharm

🌹致谢