当前位置: 代码网 > 科技>人工智能>数据分析 > 【图像分类】Yolov8 完整教程 |分类 |计算机视觉

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

2024年08月04日 数据分析 我要评论
yolo classify train data='绝对路径' model=yolov8n-cls.pt epochs=1 imgsz=64。data="数据集的的绝对路径",这里是放所有图片的那个总文件夹,就是train/val/test上面一级的,然后注意一定是绝对路径。results = model.train(data="数据集的的绝对路径", epochs=1, imgsz=64)数字不好看,我们用每个epoch的loss值画一个图像,可以直观的看。其中我们重点关注,loss和accuracy。

目标:用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 plt


results_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

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com