【图像分类】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.mzph.cn/diannao/36598.shtml

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

相关文章

应用图扑 HT for Web 搭建拓扑关系图

拓扑结构在计算机网络设计和通信领域中非常重要,因为它描述了网络中的设备(即“点”)如何相互连接(即通过“线”)。这种结构不仅涉及物理布局,即物理拓扑,还可以涉及逻辑或虚拟的连接方式&#…

【系统架构设计师】计算机组成与体系结构 ③ ( 层次化存储结构 | 寄存器 | 高速缓存 | 内存 | 外存 )

文章目录 一、层次化存储结构1、层次化存储结构2、层次化存储结构 - 示例说明3、程序员可操作的部分 计算机 采用 分级存储结构 , 主要目的是 为了 解决 容量 / 价格 / 速度 之间的矛盾 ; 一、层次化存储结构 1、层次化存储结构 计算机 存储器 按照存储速度 由快到慢 进行排序 …

吐血推荐!3款视频生成工具,全部国产,都免费

AI视频大模型的爆发,让创作爆款视频不再是专业人士的能力。 今天二师兄给大家推荐3款免费的视频生成工具。 01 可灵 推荐指数 : 五颗星 先看效果 可灵大模型测试 可灵大模型是快手AI团队自主研发的视频生成大模型,具备强大的视频创作能力&a…

【经典面试题】RabbitMQ如何防止重复消费?

RabbitMQ的消息消费是有确认机制的,正常情况下,消费者在消费消息成功后,会发送一个确认消息,消息队列接收到之后,就会将该消息从消息队列中删除,下次也就不会再投递了。 但是如果存在网络延迟的问题&#…

教程:在 Kubernetes 集群上部署 WordPress 网站

WordPress 是专为每个人设计的开源软件,强调创建网站、博客或应用程序的可访问性、性能、安全性和易用性。WordPress 是一个基于 PHP 的内容管理系统(CMS),使用 MySQL 作为数据存储,目前很多网站、电商独立站、个人博客…

AI新纪元-GPT-5

GPT-5:引领AI新纪元 随着OpenAI首席技术官米拉穆拉蒂的确认,GPT-5的发布正在逐渐接近我们。从GPT-4到GPT-5的跃迁,不仅标志着技术层面的巨大进步,更是AI智能水平的一次质的飞跃。穆拉蒂将这一进步比喻为从高中生到博士生的成长&am…

深入比较:Symfony与Laravel框架的异同

引言 在现代Web开发领域,PHP框架扮演着至关重要的角色。Symfony和Laravel是两个非常流行的PHP框架,它们各自有着独特的设计理念、功能特性和社区支持。本文将深入探讨这两个框架的不同之处,包括设计理念、架构、性能、学习曲线、社区支持等方…

推荐系统三十六式学习笔记:原理篇.模型融合14|一网打尽协同过滤、矩阵分解和线性模型

目录 从特征组合说起FM模型1.原理2.模型训练3.预测阶段4.一网打尽其他模型5.FFM 总结 在上一篇文章中,我们讲到了使用逻辑回归和梯度提升决策树组合的模型融合办法,用于CTR预估,给这个组合起了个名字,叫“辑度组合”。这对组合中&…

Yokogawa AQ6370E 10与AQ6370E 20 光谱仪的区别?

Yokogawa AQ6370E 20相比AQ6370E 10在波长准确度上有哪些改进? AQ6370E 20在波长准确度上相对于AQ6370E 10有明显的提升,这对于需要高精度波长测量的应用来说是非常有益的。 波长精度提升:AQ6370E 20的波长精度相比AQ6370E 10有所提升&#…

SQL面试题练习 —— 查询每个用户的第一条和最后一条记录

目录 1 题目2 建表语句3 题解 题目来源:小红书。 1 题目 现有一张订单表 t_order 有订单ID、用户ID、商品ID、购买商品数量、购买时间,请查询出每个用户的第一条记录和最后一条记录。样例数据如下: ---------------------------------------…

个人支付系统实现

基础首页: 订单: 智能售卡系统 基于webmanworkerman开发 禁用函数检查 使用这个脚本检查是否有禁用函数。命令行运行curl -Ss https://www.workerman.net/check | php 如果有提示Function 函数名 may be disabled. Please check disable_functions in …

外星生命在地球的潜在存在:科学、哲学与社会的交织

外星生命在地球的潜在存在:科学、哲学与社会的交织 摘要:近年来,关于外星生命是否存在的讨论日益激烈。有研究表明,外星人可能已经在地球漫步,这一观点引发了广泛的科学、哲学和社会学思考。本文将从科学角度探讨外星…

线程池FutureTask浅谈

一,概述 FuturnTask实现了Future与Runnable接口,笔者知道,ThreadPoolExecutor#submit可以传入Callable接口而非Runnable,区别点在于Callable可以返回值,而整个FuturnTask可以理解为Callable设计,用来优雅地异步获取执行结果,无需手动Condition去实现。 围绕此,需知道…

鸿蒙开发系统基础能力:【@ohos.wallpaper (壁纸)】

壁纸 说明: 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import wallpaper from ohos.wallpaper;WallpaperType 定义壁纸类型。 系统能力: 以下各项对应的系统能力均为SystemCapability…

python接口自动化的脚本

使用Requests库进行GET请求 Requests是Python中最常用的HTTP库,用于发送HTTP请求。下面是一个简单的GET请求示例,用于从API获取数据。 import requests url = "https://api.example.com/data" response = requests.get(url) if response.status_code == 200:prin…

【项目实训】falsk后端连接数据库以及与前端vue进行通信

falsk连接数据库 我们整个项目采用vueflaskmysql的框架,之前已经搭建好了mysql数据库,现在要做的是使用flask连接到数据库并测试 安装flask 首先安装flask pip install flask 进行数据库连接 数据库连接需要使用到pymysql库以及flask库 连接数据库…

通过注释语句,简化实体类的定义(省略get/set/toString的方法)

引用Java的lombok库,减少模板代码,如getters、setters、构造函数、toString、equals和hashCode方法等 import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data NoArgsConstructor AllArgsConstructorData&#xf…

使用【docker】简单部署打包构建好的镜像并运行python项目

使用【docker】简单部署运行python项目 方案一:使用打包好的镜像直接运行 一.项目配置 项目压缩包:project.tar.gz 项目目录存放在服务器路径:/var/opt/app (1)解压项目文件到该目录下:/var/opt/app 命令&#xff1…

Linux-引导过程与服务控制

目录 一、Linux操作系统引导过程 1、引导过程总览 2、引导过程详解 2.1、开机自检(BIOS) 2.2、 MBR引导 2.3、GRUB菜单 2.4、加载内核(kernel) 2.5、init进程初始化 3、系统初始化进程 3.1、Systemd单元类型 3.2、运行级别所对应的 Systemd 目…

SherlockChain:基于高级AI实现的智能合约安全分析框架

关于SherlockChain SherlockChain是一款功能强大的智能合约安全分析框架,该工具整合了Slither工具(一款针对智能合约的安全工具)的功能,并引入了高级人工智能模型,旨在辅助广大研究人员针对Solidity、Vyper和Plutus智…