【图像分类】Yolov8 完整教程 |分类 |计算机视觉

目标:用YOLOV8进行图像分类。

图像分类器。

学习资源:https://www.youtube.com/watch?v=Z-65nqxUdl4

@努力的小巴掌 记录计算机视觉学习道路上的所思所得。

1、文件结构化

划分数据集:train,val,test

知道怎么划分数据集很重要。

文件夹下面有不同类别的图片。

train 

     -----dog

     -----cat

val 

     -----dog

     -----cat

test

     -----dog

     -----cat

    

2、YOLOV8做图片分类任务

方法1:

在python写脚本

首先,确保自己已经安装了ultralytics和numpy。

可以直接创建requirements.txt文件,写上这个:

ultralytics==8.0.58

numpy==1.24.2

然后pip install requirements.txt

参考官网给的文档:

Classify - Ultralytics YOLO Docs

创建main.py

from ultralytics import YOLO

# Load a model
# model = YOLO("yolov8n-cls.yaml")  # build a new model from YAML
model = YOLO("yolov8n-cls.pt")  # load a pretrained model (recommended for training)
# model = YOLO("yolov8n-cls.yaml").load("yolov8n-cls.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="数据集的的绝对路径", epochs=1, imgsz=64)

在本地运行时候,只是为了看看train.py能不能正常运行,所以,epocha设置成1;

data="数据集的的绝对路径",这里是放所有图片的那个总文件夹,就是train/val/test上面一级的,然后注意一定是绝对路径。

方法2

命令行

yolo classify train data='绝对路径' model=yolov8n-cls.pt epochs=1 imgsz=64

3、查看结果

结果保存在runs/classify下

4、分析结果

结果有3个,

weights:best.pt和last.pt 模型文件

args.yaml: 类似于配置文件,列出了我们训练时候的所有参数

results.csv:所有epochs的训练结果

其中我们重点关注,loss和accuracy。

我们要保证其损失是一直下降的。

数字不好看,我们用每个epoch的loss值画一个图像,可以直观的看。

创建画图脚本plot_metrics.py

代码:

import os
import pandas as pd
import matplotlib.pyplot as pltresults_path = './runs/classify/train14/results.csv'results = pd.read_csv(results_path)plt.figure()
plt.plot(results['                  epoch'], results['             train/loss'], label='train loss')
plt.plot(results['                  epoch'], results['               val/loss'], label='val loss', c='red')
plt.grid()
plt.title('Loss vs epochs')
plt.ylabel('loss')
plt.xlabel('epochs')
plt.legend()plt.figure()
plt.plot(results['                  epoch'], results['  metrics/accuracy_top1'] * 100)
plt.grid()
plt.title('Validation accuracy vs epochs')
plt.ylabel('accuracy (%)')
plt.xlabel('epochs')plt.show()

结果类似于:
 

5、预测新图片

创建predict.py

from ultralytics import YOLO

# Load a model

model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("图片位置")  # predict on an image

names_dict = results[0].names

probs = results[0].probs.tolist()

print(names_dict)

print(probs)

print(names_dict[np.argmax(probs)])

computervisioneng (Computer vision engineer) · GitHub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/362649.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统相关函数总结

在应用程序当中,有时往往需要去获取到一些系统相关的信息,譬如时间、日期、以及其它一些系统相关信息,本章将向大家介绍如何通过 Linux 系统调用或 C 库函数获取这些系统信息。除此之外,还会向大家介绍 Linux 系统下的/proc 虚拟文…

Day.js

Day.js 是什么? Day.js是一个极简的JavaScript库,可以为现代浏览器解析、验证、操作和显示日期和时间。 Day.js中文网 为什么要使用Day.js ? 因为Day.js文件只有2KB左右,下载、解析和执行的JavaScript更少,为代码留下更…

高考志愿不知道怎么填?教你1招,用这款AI工具,立省4位数

高中的岁月,就像一本厚厚的书,我们一页页翻过,现在,终于翻到了最后一页。但这不是结束,这是新的开始,是人生的新篇章。 高考落幕,学子们在短暂的放松后,又迎来了紧张的志愿填报。 “…

【机器学习300问】134、什么是主成分分析(PCA)?

假设你的房间堆满了各种各样的物品,书籍、衣服、玩具等等,它们杂乱无章地散落各处。现在,你想要清理房间,但又不想扔掉任何东西,只是希望让房间看起来更整洁,更容易管理。 你开始思考,能否将物品…

苹果笔记本双系统怎么安装

想要在mac电脑上装双系统,首先需要确认您的电脑是否支持。苹果电脑自带的boot camp工具可以帮助您在mac上安装windows系统,只需按照步骤进行操作即可。另外,您也可以使用虚拟机软件,如parallels desktop或vmware fusion&#xff0…

地铁中的CAN通信--地铁高效安全运转原理

目前地铁采用了自动化的技术来实现控制,有ATC(列车自动控制)系统可以实现列车自动驾驶、自动跟踪、自动调度;SCADA(供电系统管理自动化)系统可以实现主变电所、牵引变电所、降压变电所设备系统的遥控、遥信、遥测;BAS(环境监控系统)和FAS(火灾报警系统)可以实现车站…

mmdetection2.28修改backbone不使用预训练参数、从头训练

背景 最近需要测试一下在backbone部分如果不使用预训练参数的话,模型需要多少轮才能收敛所使用的backbone是mmcls.ConvNeXtmmdetection版本为2.28.2,mmcls版本为0.25.0 修改流程 最简单的方法,直接去mmcls的model zoo里找到对应backbone的…

NAND闪存巨头铠侠(Kioxia)计划最迟于10月下旬通过首次公开募股IPO

据路透社于6月26日引用消息来源的报道,在半导体市场条件反弹及财务业绩迅速改善的背景下,NAND闪存巨头铠侠(Kioxia)正准备尽快提交初步申请,并计划最迟于10月下旬通过首次公开募股(IPO)在东京证…

可转债交易的规则,权限开通条件。可转债的佣金最低标准万0.44!

可转债交易规则 【1】可转债最小交易单位为1手,1手10张,每张的价格就是大家看到的价格。这和股票很不一样,股票的1手是100股股票。可转债最小价格变动单位为0.001 【2】可转债是T0交易,即当天买入,当天就可以卖出。这…

全新版的 FinClip 也太好用了吧

自 2017 年 FinClip 小程序管理平台发布直至 2023 年已经走过了 6 年。在这一路中我们惊喜的看到 FinClip 在各行业的客户支持下开枝散叶,逐渐承载了不同行业客户对于「数字场景拓展与增长」的期待。 在早期版本的 FinClip 设计中,我们对产品的边界认识…

62.指针和二维数组(2)

一.指针和二维数组 1.如a是一个二维数组,则数组中的第i行可以看作是一个一维数组,这个一维数组的数组名是a[i]。 2.a[i]代表二维数组中第i行的首个元素的地址,即a[i][0]的地址。 二.进一步思考 二维数组可以看作是数组的数组,本…

线性相关,无关?秩?唯一解(只有零解),无穷解(有非零解)?D=0,D≠0?

目录 线性有关无关 和 唯一解(只有零解),无穷解(有非零解)之间的关系 D0,D≠0? 和 秩 的关系 串起来: 线性相关,无关?秩?唯一解(只…

golang 实现继承方式

经常使用java或c同学应该比较了解纯面向对象,继承、接口、封装等特性,在go中并没有特别显示的表达出来,但是go隐含是支持的,只是支持的方式不一致,可以说go的方式更加灵活,go语言精髓是组合机制&#xff0c…

VMware 最新的安全漏洞公告VMSA-2024-0013

#深度好文计划# 一、摘要 2024年6月26日,VMware 发布了最新的安全漏洞公告 VMSA-2024-0013,修复了 VMware ESXi 和 VMware vCenter 中的多个安全漏洞。 VMSA-2024-0013:VMware ESXi 和 vCenter Server 更新修正了多个安全性漏洞 &#xff…

2024/5/9【贪心5/5】--代码随想录算法训练营day36|56. 合并区间、738.单调递增的数字、968.监控二叉树 (可跳过)

56. 合并区间 力扣链接 class Solution:def merge(self, intervals):result []if len(intervals) 0:return result # 区间集合为空直接返回intervals.sort(keylambda x: x[0]) # 按照区间的左边界进行排序result.append(intervals[0]) # 第一个区间可以直接放入结果集中…

JavaSE 利用正则表达式进行本地和网络爬取数据(爬虫)

爬虫 正则表达式的作用 作用1:校验字符串是满足规则 作用2:在一段文本中查找满足需要的内容 本地爬虫和网络爬虫 Pattern类 表示正则表达式 Matter类 文本编译器,作用按照正则表达式的规则去读取字符串,从头开始读取&#xf…

C++ 入门

前言 c的发展史: C的起源可以追溯到1979年,当时Bjarne Stroustrup在贝尔实验室开始开发一种名为“C with Classes”的语言。以下是C发展的几个关键阶段: 1979年:Bjarne Stroustrup在贝尔实验室开始开发“C with Classes”。1983…

ONLYOFFICE 桌面编辑器 8.1华丽登场

简介:全新ONLYOFFICE 桌面编辑器 8.1解锁全新PDF编辑、幻灯片优化与本地化体验,立即下载! 前言:在数字化时代,高效的办公协作工具是企业和个人不可或缺的利器。ONLYOFFICE,作为一款功能强大的云端和桌面办公…

CSS的媒体查询:响应式布局的利器

关于CSS的媒体查询 CSS媒体查询是CSS层叠样式表(Cascading Style Sheets)中的一个核心功能,它使得开发者能够根据不同的设备特性和环境条件来应用不同的样式规则。这是实现响应式网页设计的关键技术,确保网站或应用能够在多种设备上,包括桌面…

python FastAPI操作数据库实现注册登录

代码如下 from fastapi import FastAPI, APIRouter, HTTPException, status from pydantic import BaseModel from fastapi.responses import JSONResponse from typing import Optional from fastapi.middleware.cors import CORSMiddleware from utils.time import DateTime…