惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Full Disclosure
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
Microsoft Azure Blog
Microsoft Azure Blog
The GitHub Blog
The GitHub Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Recorded Future
Recorded Future
Y
Y Combinator Blog
Cloudbric
Cloudbric
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Schneier on Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
Cybersecurity and Infrastructure Security Agency CISA
TaoSecurity Blog
TaoSecurity Blog
Security Latest
Security Latest
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
D
DataBreaches.Net
Security Archives - TechRepublic
Security Archives - TechRepublic
H
Hacker News: Front Page
C
Cisco Blogs
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
Recent Commits to openclaw:main
Recent Commits to openclaw:main
V
Vulnerabilities – Threatpost
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Google Online Security Blog
Google Online Security Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
A
About on SuperTechFans
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Jina AI
Jina AI
C
CXSECURITY Database RSS Feed - CXSecurity.com
Schneier on Security
Schneier on Security
T
Tenable Blog
N
News and Events Feed by Topic
W
WeLiveSecurity
有赞技术团队
有赞技术团队
AI
AI
爱范儿
爱范儿
大猫的无限游戏
大猫的无限游戏
Latest news
Latest news
T
The Blog of Author Tim Ferriss
S
Security Affairs
Know Your Adversary
Know Your Adversary
Simon Willison's Weblog
Simon Willison's Weblog
G
GRAHAM CLULEY
Google DeepMind News
Google DeepMind News
The Cloudflare Blog

kekxv 技术日志

基于 kekxv/gitea-pages 与 Gitea Actions 构建静态站点托管服务 Json简单工具 在Windows上运行Code Server:结合WSL打造你的云端VS Code开发环境 安卓sdkmanager工具换源 boost bazel starter bazel 供应商模式 PVE引导丢失修复 NSFW图像检测 警惕c++内置变量指针 关于内网springboot启动慢记录 网页转换为chrome插件 nginx代理的一种使用方式 luckfox-交叉编译之bazel gitea actions CICD 自动化 Linux限制进程使用率 影音中心Jellyfin快速部署 OCR & 人脸算法 -- opencv dnn tensorflow gpu 安装(ubuntu22.04) 深度学习记录-简单
YOLOv8 训练自己的数据
kekxv · 2024-02-18 · via kekxv 技术日志

YOLOv8YOLO 的最新(20240206)版本,由Ultralytics 提供。YOLOv8 支持全方位的视觉 AI
任务,包括检测分割姿态估计跟踪分类。这种多功能性使用户能够在各种应用和领域中利用YOLOv8的功能。

本文将介绍如何快速训练自己的 YOLOv8 模型。

仓库地址: https://github.com/kekxv/YOLOv8Tutorial

YOLO:简史

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学约瑟夫-雷德蒙(Joseph Redmon)
阿里-法哈迪(Ali Farhadi)开发。YOLO2015 年推出,因其高速度和高精确度而迅速受到欢迎。

  • 2016 年发布的YOLOv2 通过纳入批量归一化锚框维度集群改进了原始模型。
  • 2018 年推出的YOLOv3 使用更高效的骨干网络多锚和空间金字塔池进一步增强了模型的性能。
  • YOLOv42020 年发布,引入了 Mosaic 数据增强、新的无锚检测头和新的损失函数等创新技术。
  • YOLOv5进一步提高了模型的性能,并增加了超参数优化、集成实验跟踪和自动导出为常用导出格式等新功能。
  • YOLOv62022 年由美团开源,目前已用于该公司的许多自主配送机器人。
  • YOLOv7增加了额外的任务,如 COCO 关键点数据集的姿势估计。
  • YOLOv8YOLO 的最新(20240206)版本,由Ultralytics 提供。YOLOv8 支持全方位的视觉 AI
    任务,包括检测分割姿态估计跟踪分类。这种多功能性使用户能够在各种应用和领域中利用YOLOv8的功能。

更多的资料可以查看:https://docs.ultralytics.com/zh/

关于 Makefile

Makefile 一般用于c的编译辅助,但是它不只是可以用于编译,它的目标规则特性,可以让用来做一些其他的事情:

  • make clean 清理缓存
  • make clean-all 清理所有缓存,包括训练数据
  • make install-dev 安装依赖
  • make train 开始训练
  • make test 测试 image/test 文件夹的识别结果
  • make val 验证
  • make onnx 导出 onnx 模型,其他的 ncnn以及mnn可以通过onnx模型转换
  • make env 创建虚拟环境
  • make labelImg 启动分类标注工具

可以查看 Makefile文件以及官方文档,手动使用 cli 进行训练等操作

开始准备

样本收集

需要准备训练样本,这个根据情况进行收集,前期做验证,可以考虑通过搜索引擎进行搜集,注意来源数据是否涉及版权以及个人隐私问题,请不要公开发布涉及版权以及个人隐私问题。

本项目提供的证件样本,均通过搜索引擎从公开网站所获取。(如果提供的样张涉及到版权或者隐私问题,请发issue,将会进行处理。)

将收集到的训练样本,放到 datasets/images/train,想要做测试的样本,放到datasets/images/test里面。

开始标注

可以根据自己的实际情况进行标注,当前项目可以考虑使用labelImg 工具进行标注。执行以下命令,将会启动labelImg标注工具。

1
make labelImg

labelImg 快捷键:

A 上一张

D 下一张

W 画框

建议打开自动保存

开始训练

标注完成之后,就可以开始训练了:

1
2
3
4
# 训练 epochs 10 
# make train-10
# 训练
make train

如果出现Dataset 'config.yaml' images not found ⚠️, missing path则可能路径识别错误,请将config.yamlpath
改为datasets目录的绝对路径。
增加动态修改为当前位置的配置,应该不会再出现这个问题。

训练的结果大概是:

1
2
3
4
5
6
7
8
9
196 epochs completed in 2.217 hours.
Optimizer stripped from runs/detect/train/weights/last.pt, 6.3MB
Optimizer stripped from runs/detect/train/weights/best.pt, 6.3MB
.....
Validating runs/detect/train/weights/best.pt...
Speed: 1.0ms preprocess, 132.0ms inference, 0.0ms loss, 0.4ms postprocess per image
Results saved to runs/detect/train
💡 Learn more at https://docs.ultralytics.com/modes/train
#yolo task=detect mode=train weight_decay=0.001 box=4.5 model=yolov8x.pt data=config.yaml batch=-1 imgsz=640 epochs=10

如果没有出现报错,则表示训练完成。

测试模型

测试模型效果,可以将图片放到 datasets/images/test ,然后执行:

1
make test

测试的结果将会保存在目录runs/detect/predict(序号),根据输出的日志查看。

如果效果可以,则可以考试正式的数据训练😁。

导出为 ONNX

默认的模型格式为.pt,如果是服务器进行识别,则可以考虑直接使用,如果是想要边缘计算或者不想使用.pt
的模型,可以考虑导出为onnx模型,只需要执行:

1
make onnx

则可以直接导出为onnx格式模型。

额外说明

支持系统

目前只在 Linux以及macOS测试,windows可以考虑使用 wsl 进行训练。后续增加windows支持。 windows 建议使用wsl,或者 powershell 进行操作。

windows系统注意

需要手动安装 python3makecmake(用于onnx,如果不需要可以不装)。

训练卡住问题

如果开始训练出现卡住的问题,可能是无法访问https://ultralytics.com
,可以检查一下网络环境,或者尝试将front/Arial.ttf字体加入到系统。再进行训练

关于 labelImg

labelImg 需要使用 python3.9 的版本,其他版本会有bug,无法保存

关于安装:

1
make install-dev

激活虚拟环境

1
. env/bin/activate

退出虚拟环境

1
deactivate

训练:

1
yolo task=detect mode=train model=yolov8n.pt data=config.yaml batch=-1 imgsz=640 epochs=100

相关文档

yolov8 文档
https://docs.ultralytics.com/zh/quickstart/

在线转换模型类型:
https://convertmodel.com