YOLO5入门

YOLO5入门

  • 源码
    • 下载路径
    • 目录结构
  • 架构解析
  • 用户数据训练
    • 官方说明
  • yolo模型
    • .pt查看

源码

下载路径

https://github.com/ultralytics/yolov5/releases.

目录结构

.
|-- CONTRIBUTING.md
|-- Dockerfile
|-- LICENSE
|-- README.md
|-- data //主要是存放一些超参数的配置文件yam,是用来配置训练集和测试集还有验证集的路径的,其中还包括目标检测的种类数和种类的名称;
|   |-- Argoverse.yaml
|   |-- hyps//超参数微调配置文件
|   |   |-- hyp.Objects365.yaml
|   |   |-- hyp.VOC.yaml
|   |   |-- hyp.scratch-high.yaml
|   |-- images //一些官方提供测试的图片
|   |   |-- bus.jpg
|   |-- scripts//下载数据集shell命令
|   |   |-- download_weights.sh
|   |   |-- get_coco.sh
|   |   -- get_coco128.sh
|   -- xView.yaml
|-- detect.py//利用训练好的权重参数进行目标检测,可以进行图像、视频和摄像头的检测
|-- export.py
|-- hubconf.py//hub 相关代码
|-- models//一些网络结构构建的配置文件和函数
|   |-- __init__.py
|   |-- common.py//网络组件模块
|   |-- experimental.py//实验性质代码
|   |-- hub//另外的一些网络结构,和外层的yolov5l.yaml等是同级的
|   |   |-- anchors.yaml
|   |   |-- yolov3-spp.yaml
|   |   |-- yolov5-bifpn.yaml
|   |   |-- yolov5l6.yaml
|   |   |-- yolov5m6.yaml
|   |   |-- yolov5n6.yaml
|   |   |-- yolov5s-ghost.yaml
|   |   -- yolov5x6.yaml
|   |-- tf.py//模型导出脚本,负责将模型转化,TensorFlow, Keras and TFLite versions of YOLOv5
|   |-- yolo.py//整体网络代码,加载网络结构.yaml文件生成网络结构
|   |-- yolov5l.yaml //各种网络结构
|-- requirements.txt//文本文件,里面写着使用yolov5项目的环境依赖包的一些版本,可以利用该文本导入相应版本的包
|-- setup.cfg
|-- train.py//训练自己的数据集的函数
|-- tutorial.ipynb//jupyter notebook 演示文件
|-- utils//存放的是工具类的函数,里面有loss函数,metrics函数,plots函数等等
|   |-- __init__.py
|   |-- activations.py//激活函数相关代码
|   |-- augmentations.py//图片扩展变换相关函数
|   |-- autoanchor.py//自动描边相关函数
|   |-- autobatch.py
|   |-- aws
|   |   |-- __init__.py
|   |   |-- mime.sh
|   |   |-- resume.py
|   |   -- userdata.sh
|   |-- benchmarks.py
|   |-- callbacks.py
|   |-- datasets.py//读取数据集,并做处理的相关函数
|   |-- downloads.py//下载需要的权重文件等函数
|   |-- flask_rest_api
|   |   |-- README.md
|   |   |-- example_request.py
|   |   -- restapi.py
|   |-- general.py//项目通用代码 多线程、日志、git
|   |-- google_app_engine
|   |   |-- Dockerfile
|   |   |-- additional_requirements.txt
|   |   -- app.yaml
|   |-- loggers
|   |   |-- __init__.py
|   |   -- wandb
|   |       |-- README.md
|   |       |-- __init__.py
|   |       |-- log_dataset.py
|   |       |-- sweep.py
|   |       |-- sweep.yaml
|   |       -- wandb_utils.py
|   |-- loss.py// 相关损失函数
|   |-- metrics.py//计算性能指标的相关函数
|   |-- plots.py
|   -- torch_utils.py//辅助程序代码并行计算,早停策略等函数
-- val.py

目录说明参考:https://blog.csdn.net/weixin_36714575/article/details/114116862

架构解析

用户数据训练

官方说明

https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data

说明:

  • yolov5s.pt : 网络权重
  • yolov5s.yaml : 网络结构

问题1: 训练参数为什么推荐使用网络权重、而不是网络结构
推荐
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt
不推荐
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights ‘’ --cfg yolov5s.yaml

原因:

  1. –weights yolov5s.pt 这种写法,代码是会自动去找对应的网络结构yolov5s.yaml的,所以也是使用了网络结构的,而且也必须使用,权重和结构是必须搭配使用的。
  2. –weights ‘’ --cfg yolov5s.yaml 这种写法,相当于训练一个小白,什么都不懂的小白。
    –weights yolov5s.pt 这种写法,相当于训练一个有经验的人,更快效果更好。

问题2:
同一个网络结构,训练10种类图片和训练100种类图片,会降低每一种的识别率吗
原因:
会的

yolo模型

.pt查看


持续更新中…

你可能感兴趣的:(人工智能,人工智能,目标检测,android,机器学习)