YOLOv8教程系列:四、使用yolov8仓库训练自己的图像分类数据集(含推理预测)

YOLOv8教程系列:四、使用yolov8仓库训练自己的图像分类数据集(含推理预测)

0.引言

Yolov8是最新一代的You Only Look Once目标检测模型,它由Ultralytics研究团队在2022年开发。相比于之前的Yolo版本,Yolov8在速度和精度上都有很大的提升。

在图像分类任务上,Yolov8使用了以下几个特点:

  1. 网络backbone采用了CSPResNeXt作为主干网络,此网络结合了ResNet和ResNeXt的优点,能够提取更丰富的特征。
  2. 使用了Cross Stage Partial Network作为网络的连接方式,将不同阶段的特征图连接起来,增强特征的表达能力。
  3. 引入了注意力机制,可以学习到目标的更加 discriminative 的特征。
  4. 使用了更大的输入分辨率,即640x640,可以学习到更丰富的信息。
  5. 损失函数上,融合了标签调制、IoU预测以及新颖的Grid Sensitive损失,可以更好地改善模型的定位能力。 在推理上使用了更高效的矩阵运算,可以加速模型的推理速度。

总的来说,Yolov8通过网络设计的改进,损失函数的优化以及高效的推理实现,相比之前的版本取得了显著的进步,在图像分类任务上能够达到更高的精度。
yolov8官方文档
**加粗样式**

1.数据准备

先把自己的数据按类别准备好,格式如下,imagenet数据集格式(文件夹名为datasets):

.
├── ./datasets
│ ├── ./datasets/OK
│ │ ├── ./datasets/OK/1.jpg
│ │ ├── ./datasets/OK/2.jpg
│ │ ├── ./datasets/OK/3.jpg
│ │ ├── …
│ ├── ./datasets/NG
│ │ ├── ./datasets/NG/1.jpg
│ │ ├── ./datasets/NG/1.jpg
│ │ ├── ./datasets/NG/1.jpg
│ │ ├── …

2.数据划分

在datasets上层目录下新建一个split.py文件,运行下面脚本:

# 工具类
import os
import random
from shutil import copy2def data_set_split(src_data_folder, target_data_folder, train_scale=0.8, val_scale=0.2):'''读取源数据文件夹,生成划分好的文件夹,分为train、val两个文件夹进行:param src_data_folder: 源文件夹:param target_data_folder: 目标文件夹:param train_scale: 训练集比例:param val_scale: 验证集比例:return:'''print("开始数据集划分")class_names = os.listdir(src_data_folder)# 在目标目录下创建文件夹split_names = ['train', 'val']for split_name in split_names:split_path = os.path.join(target_data_folder, split_name)if os.path.isdir(split_path):passelse:os.makedirs(split_path)# 然后在split_path的目录下创建类别文件夹for class_name in class_names:class_split_path = os.path.join(split_path, class_name)if os.path.isdir(class_split_path):passelse:os.makedirs(class_split_path)# 按照比例划分数据集,并进行数据图片的复制# 首先进行分类遍历for class_name in class_names:current_class_data_path = os.path.join(src_data_folder, class_name)current_all_data = os.listdir(current_class_data_path)current_data_length = len(current_all_data)current_data_index_list = list(range(current_data_length))random.shuffle(current_data_index_list)train_folder = os.path.join(os.path.join(target_data_folder, 'train'), class_name)val_folder = os.path.join(os.path.join(target_data_folder, 'val'), class_name)train_stop_flag = current_data_length * train_scalecurrent_idx = 0train_num = 0val_num = 0for i in current_data_index_list:src_img_path = os.path.join(current_class_data_path, current_all_data[i])if current_idx <= train_stop_flag:copy2(src_img_path, train_folder)train_num = train_num + 1else:copy2(src_img_path, val_folder)val_num = val_num + 1current_idx = current_idx + 1print("*********************************{}*************************************".format(class_name))print("{}类按照{}:{}的比例划分完成,一共{}张图片".format(class_name, train_scale, val_scale, current_data_length))print("训练集{}:{}张".format(train_folder, train_num))print("验证集{}:{}张".format(val_folder, val_num))if __name__ == '__main__':src_data_folder = "datasets"target_data_folder = "dataset/"data_set_split(src_data_folder, target_data_folder)

运行结束,会按训练集和验证集8:2的比例生成一个划分后的数据集,名为dataset

3.开始训练

新建一个classify_train.py文件,根据自己情况,调整相关参数即可

from ultralytics import YOLOmodel = YOLO("yolo-cls/yolov8s-cls.pt")
model.train(data='/home/lzj/03.AlgoDemo/yolov8/dataset/', epochs=100, batch=2, imgsz=1280)

4.推理预测

新建一个classify_infer.py的脚步,注意修改下面的路径和名称列表,运行结束后,会在指定目录下生成预测的图片

import cv2
import os
from ultralytics import YOLO
from tqdm import tqdmdef read_path(file_pathname, model, name_dict, save_folder):file_dir = os.listdir(file_pathname)for k,v in name_dict.items():name_foler = os.path.join(save_folder, v)os.makedirs(name_foler)#遍历该目录下的所有图片文件for filename in tqdm(file_dir):print(filename)img = cv2.imread(file_pathname+'/'+filename)results = model.predict(source=img)for result in results:# print(result.names)name_dict = result.namesprint(name_dict)probs = result.probs.cpu().numpy()top1_index = result.probs.top1class_name = name_dict[top1_index]print(class_name)save_img_path = os.path.join(save_folder, class_name, filename)cv2.imwrite(save_img_path, img)print('---------------------------')if __name__ == '__main__':name_dict = {0: 'NG', 1: 'OK'}save_folder = 'classify_infer_folder'load_img_folder = '/home/lzj/Downloads/pb'model = YOLO('runs/classify/train46/weights/best.pt')read_path(load_img_folder, model, name_dict, save_folder)

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

IE实现PDF在线预览功能

背景&#xff1a; chrome、firefox、edge浏览器默认可以在线预览pdf的&#xff0c;因为chrome默认自带PDF reader的 但是IE这个微软早已经放弃垃圾浏览器&#xff0c;国内还有好多大型国有企业在用&#xff0c;所以还得做兼容 步骤 1、下载安装 Adobe Reader&#xff08; Adb…

Ubuntu64位安装Adobe Reader 9.5.5

Aodbe Reader在Linux下的效果比Foxit Reader&#xff08;福昕阅读器&#xff09;要好一些&#xff0c;尤其对于中文文档而言。本文介绍Adobe Reader在Ubuntu下的安装&#xff0c;文章《Ubuntu12.04 64位安装Foxit Reader》则介绍Foxit Reader的安装。 Aodbe Reader的安装步骤如…

Androider学C/C++—(1)环境搭建和基本操作,c语言指针练习,输出占位符

环境搭建 IDE下载地址&#xff1a; https://www.visualstudio.com/zh-hans/downloads/选择&#xff1a;Visual Studio Community 2017 适用于学生、开源和个人开发人员的功能完备的免费 IDE无脑下一步&#xff0c;然后到这里的时候注意选择。我这么选主要是因其稍微显得轻便…

实战:Windows 2008 WDS使用参考计算机创建安装映像

12.3 实战&#xff1a;使用参考计算机创建安装映像 您可以将配置好用户工作环境的计算机作为参考计算机&#xff0c;使用参考计算机创建安装映像&#xff0c;这样使用WDS服务安装的操作系统和参考计算机的环境一样。 以下将会在参考计算机上安装AdbeRdr810_zh_CN.exe软件&#…

【漏洞分析】Adobe Acrobat和Reader整数溢出漏洞(CVE-2012-0774)

0x00 前言 总体来说坑不多&#xff0c;但是对于windbg没有watchpoint功能这一点&#xff0c;真的是很坑。 0x01 简介 Adobe Acrobat和Reader在True Type Font (TTF)处理的实现上存在整数溢出漏洞&#xff0c;攻击者可利用此漏洞执行任意代码。 受影响软件版本&#xff1a; A…

solidity0.8.0的应用案例13:数字签名及应用:NFT白名单

以太坊中的数字签名ECDSA,以及如何利用它发放NFT白名单 代码中的ECDSA库由OpenZeppelin的同名库简化而成。 数字签名 如果你用过opensea交易NFT,对签名就不会陌生。下图是小狐狸(metamask)钱包进行签名时弹出的窗口,它可以证明你拥有私钥的同时不需要对外公布私钥。 …

Adobe Reader 文档无法签名_Adobe | Acrobat amp; Reader多个安全漏洞通告

0x00 漏洞概述 2020年11月03日,Adobe发布了关于Adobe Acrobat和Reader的14个安全更新,其中包括多个任意代码执行漏洞。Adobe表示目前还没有发现任何关于这些漏洞的野外攻击事件。 0x01 漏洞详情 Adobe Acrobat和Adobe Reader都是Adobe官方出品的PDF文档解决方案套件。Adobe R…

Adobe Reader 文档无法签名_如何在Mac上使用预览对PDF进行电子签名

当您通过电子邮件收到必须签名的PDF文档时&#xff0c;打印文件&#xff0c;用钢笔在虚线上签名&#xff0c;扫描签名的文档并将其发回的过程可能是一项相当繁琐的任务。幸运的是&#xff0c;苹果公司增加了使用预览功能对PDF文档进行电子签名的功能&#xff0c;该程序预先安装…

adobe reader XI 打开后闪退(或过几秒后自动退出)【终极解决方案】

Adobe Reader 11打开后闪退&#xff08;或过几秒后自动退出&#xff09;【终极解决方案】 win10系统解决2020年2月份Adobe ReaderXI自动关闭问题&#xff1a; &#xff08;以下方法任一种均可&#xff09; 方法一、更新补丁 注意&#xff1a;先请安装11.0.00正式版&#xf…

【地理图库】世界小麦产量分布

声明&#xff1a;来源网络&#xff0c;仅供学习&#xff01;

多肽合成15266-88-3产品特点介绍,Cyclo(glycyl-L-histidyl)

中文名&#xff1a;环(甘氨酰-L-组氨酰) 英文名&#xff1a;cyclo(Gly-His) CYCLO(-GLY-HIS) Cyclo(glycyl-L-histidyl) (S)-3-(1H-Imidazol-4-ylmethyl)-2,5-piperazinedione CAS&#xff1a;15266-88-3 分子式&#xff1a;C8H10N4O2 分子量&#xff1a;194.191 密度 …

Windows运行Spark所需的Hadoop安装

解压文件 复制bin目录 找到winutils-master文件hadoop对应的bin目录版本 全部复制替换掉hadoop的bin目录文件 复制hadoop.dll文件 将bin目录下的hadoop.dll文件复制到System32目录下 配置环境变量 修改hadoop-env.cmd配置文件 注意jdk装在非C盘则完全没问题&#xff0c;如果装在…

郑义宣就任韩国现代汽车集团会长;爱立信携手中国电信运用爱立信频谱共享技术 | 美通企业日报...

今日看点 现代汽车集团(Hyundai Motor Group)宣布&#xff0c;集团首席副会长郑义宣(Euisun Chung)就任集团会长。原集团会长郑梦九(Mong-Koo Chung)将担任集团名誉会长。现代汽车公司、起亚汽车公司(Kia Motors Corporation)和现代摩比斯公司(Hyundai Mobis Co.)分别召开了特别…

互联网快讯:京东公布“双11”节奏;猿辅导、掌门教育布局素质教育

零售电商 1、京东公布“双11”节奏&#xff1a;10月20日晚8点正式开启预售&#xff0c;10月31日晚8点提前开抢 2、达达快送发布即时配送SaaS系统“达达智配”&#xff0c;赋能配送服务商提升行业效能 3、天猫国际加速推进“五新”策略&#xff0c;双11重点孵化40个新品类 4…

怎样启动华为桌面服务器,[图]华为鲲鹏服务器/台式机主板登场:为ARM处理器打开桌面市场大门...

华为官网介绍如下鲲鹏台式机主板是基于华为鲲鹏920处理器开发的办公应用主板&#xff0c;兼容业界主流内存、硬盘、网卡等硬件&#xff0c;支持Linux桌面操作系统&#xff0c;提供机箱、散热、供电等参考设计指南&#xff0c;具有高性能、接口丰富、高可靠性、易用性等特点。 根…

百度超级链捐赠开放原子开源基金会一周年,XuperChain成果一览

摘要 2020年9月9日&#xff0c;开放原子开源基金会正式与百度完成了超级链内核项目捐赠协议的签署&#xff0c;这一捐赠协议意味着百度自主研发的超级链技术将依托于开源基金会以全新的组织形态进行运作。此项目作为开源基金会区块链领域首个捐赠项目进行孵化&#xff0c;并在全…

容联云与20多家银行齐聚,共探客服中心与远程银行建设新业态

以客户为中心、以数字为根底、以科技为驱动的非接触金融服务成为金融新业态。聚焦客户体验提升和价值创造的客服中心和远程银行随之迎来前所未有的发展新机遇&#xff0c;成为金融行业数字化转型的重要突破口。 近日&#xff0c;容联云与金科创新社联合举办2021客服中心与远程银…

区块链、AI遇上艺术,科技突破艺术的想象空间

近期&#xff0c;在中国最高的美术馆——上海云间美术馆&#xff0c;来自人工智能和区块链领域的专家、高校学者和知名艺术家&#xff0c;共同展开了一场关于区块链、人工智能和数字艺术的深度交流&#xff0c;探讨区块链和人工智能赋能数字艺术的新方向。 与会嘉宾认为&#x…

数据生态、数字人民币、5G消息……看2022银行数字化七大趋势

以大数据、人工智能、5G、物联网、区块链等为代表的数字科技&#xff0c;持续驱动银行业数字化发展&#xff0c;各机构借助金融科技降低成本、提升质效、增强用户体验、优化业务模式。 中国电子银行网综合过去一年的行业成果与近期的关键动态&#xff0c;展望2022年银行数字化…