YOLOv8 第Y7周 水果识别

1.创建文件夹:

YOLOv8开源地址 -- ultralytics-main文件下载链接:GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite

其余文件由代码生成。 

数据集下载地址:Fruit Detection | Kaggle

2.运行split_train_val.py 代码内容 :

# 划分train、test、val文件
import os
import random
import argparseparser = argparse.ArgumentParser()
# xml文件的地址,根据自己的数据进行修改 xml一般存放在Annotations下
parser.add_argument('--xml_path', default='D:/ultralytics-main/ultralytics-main/paper_data/Annotations', type=str, help='input txt label path')
# 数据集的划分,地址选择自己数据下的ImageSets/Main
parser.add_argument('--txt_path', default='D:/ultralytics-main/ultralytics-main/paper_data/ImageSets/Main', type=str, help='output txt label path')
opt = parser.parse_args()trainval_percent = 1.0
train_percent = 8/9
xmlfilepath = opt.xml_path
txtsavepath = opt.txt_path
total_xml = os.listdir(xmlfilepath)
if not os.path.exists(txtsavepath):os.makedirs(txtsavepath)num = len(total_xml)
list_index = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list_index, tv)
train = random.sample(trainval, tr)file_trainval = open(txtsavepath + '/trainval.txt', 'w')
file_test = open(txtsavepath + '/test.txt', 'w')
file_train = open(txtsavepath + '/train.txt', 'w')
file_val = open(txtsavepath + '/val.txt', 'w')for i in list_index:name = total_xml[i][:-4] + '\n'if i in trainval:file_trainval.write(name)if i in train:file_train.write(name)else:file_val.write(name)else:file_test.write(name)file_trainval.close()
file_train.close()
file_val.close()
file_test.close()

3.运行voc_label.py 代码内容: 

import xml.etree.ElementTree as ET
import os
from os import getcwdsets = ['train', 'val', 'test']
classes = ["banana", "snake fruit", "dragon fruit", "pineapple"]  # 改成自己的类别
abs_path = os.getcwd()
print(abs_path)def convert(size, box):dw = 1. / (size[0])dh = 1. / (size[1])x = (box[0] + box[1]) / 2.0 - 1y = (box[2] + box[3]) / 2.0 - 1w = box[1] - box[0]h = box[3] - box[2]x = x * dww = w * dwy = y * dhh = h * dhreturn x, y, w, hdef convert_annotation(image_id):in_file = open('D:/ultralytics-main/ultralytics-main/paper_data/Annotations/%s.xml' % (image_id), encoding='UTF-8')out_file = open('D:/ultralytics-main/ultralytics-main/paper_data/labels/%s.txt' % (image_id), 'w')tree = ET.parse(in_file)root = tree.getroot()filename = root.find('filename').textfilenameFormat = filename.split(".")[1]size = root.find('size')w = int(size.find('width').text)h = int(size.find('height').text)for obj in root.iter('object'):difficult = obj.find('difficult').textcls = obj.find('name').textif cls not in classes or int(difficult) == 1:continuecls_id = classes.index(cls)xmlbox = obj.find('bndbox')b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),float(xmlbox.find('ymax').text))b1, b2, b3, b4 = b# 标注越界修正if b2 > w:b2 = wif b4 > h:b4 = hb = (b1, b2, b3, b4)bb = convert((w, h), b)out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')return filenameFormatwd = getcwd()
for image_set in sets:if not os.path.exists('D:/ultralytics-main/ultralytics-main/paper_data/labels/'):os.makedirs('D:/ultralytics-main/ultralytics-main/paper_data/labels/')image_ids = open('D:/ultralytics-main/ultralytics-main/paper_data/ImageSets/Main/%s.txt' % (image_set)).read().strip().split()list_file = open('D:/ultralytics-main/ultralytics-main/paper_data/%s.txt' % (image_set),'w')for image_id in image_ids:filenameFormat = convert_annotation(image_id)list_file.write( 'D:/ultralytics-main/ultralytics-main/paper_data/images/%s.%s\n' % (image_id,filenameFormat))list_file.close()

 

4.命令窗代码:

yolo task=detect mode =train model=yolov8s.yaml data=D:\ultralytics-main\ultralytics-main\paper_data\ab.yaml epochs=100 batch=4

 运行结果:

D:\ultralytics-main\ultralytics-main>yolo task=detect mode =train model=yolov8s.yaml data=D:\ultralytics-main\ultralytics-main\paper_data\ab.yaml epochs=100 batch=4from  n    params  module                                       arguments0                  -1  1       928  ultralytics.nn.modules.conv.Conv             [3, 32, 3, 2]1                  -1  1     18560  ultralytics.nn.modules.conv.Conv             [32, 64, 3, 2]2                  -1  1     29056  ultralytics.nn.modules.block.C2f             [64, 64, 1, True]3                  -1  1     73984  ultralytics.nn.modules.conv.Conv             [64, 128, 3, 2]4                  -1  2    197632  ultralytics.nn.modules.block.C2f             [128, 128, 2, True]5                  -1  1    295424  ultralytics.nn.modules.conv.Conv             [128, 256, 3, 2]6                  -1  2    788480  ultralytics.nn.modules.block.C2f             [256, 256, 2, True]7                  -1  1   1180672  ultralytics.nn.modules.conv.Conv             [256, 512, 3, 2]8                  -1  1   1838080  ultralytics.nn.modules.block.C2f             [512, 512, 1, True]9                  -1  1    656896  ultralytics.nn.modules.block.SPPF            [512, 512, 5]10                  -1  1         0  torch.nn.modules.upsampling.Upsample         [None, 2, 'nearest']11             [-1, 6]  1         0  ultralytics.nn.modules.conv.Concat           [1]12                  -1  1    591360  ultralytics.nn.modules.block.C2f             [768, 256, 1]13                  -1  1         0  torch.nn.modules.upsampling.Upsample         [None, 2, 'nearest']14             [-1, 4]  1         0  ultralytics.nn.modules.conv.Concat           [1]15                  -1  1    148224  ultralytics.nn.modules.block.C2f             [384, 128, 1]16                  -1  1    147712  ultralytics.nn.modules.conv.Conv             [128, 128, 3, 2]17            [-1, 12]  1         0  ultralytics.nn.modules.conv.Concat           [1]18                  -1  1    493056  ultralytics.nn.modules.block.C2f             [384, 256, 1]19                  -1  1    590336  ultralytics.nn.modules.conv.Conv             [256, 256, 3, 2]20             [-1, 9]  1         0  ultralytics.nn.modules.conv.Concat           [1]21                  -1  1   1969152  ultralytics.nn.modules.block.C2f             [768, 512, 1]22        [15, 18, 21]  1   2147008  ultralytics.nn.modules.head.Detect           [80, [128, 256, 512]]
YOLOv8s summary: 225 layers, 11166560 parameters, 11166544 gradients, 28.8 GFLOPsNew https://pypi.org/project/ultralytics/8.0.221 available  Update with 'pip install -U ultralytics'
Ultralytics YOLOv8.0.200  Python-3.10.7 torch-2.0.1+cpu CPU (AMD Ryzen 7 4800U with Radeon Graphics)
engine\trainer: task=detect, mode=train, model=yolov8s.yaml, data=D:\ultralytics-main\ultralytics-main\paper_data\ab.yaml, epochs=100, patience=50, batch=4, imgsz=640, save=True, save_period=-1, cache=False, device=None, workers=8, project=None, name=train, exist_ok=False, pretrained=True, optimizer=auto, verbose=True, seed=0, deterministic=True, single_cls=False, rect=False, cos_lr=False, close_mosaic=10, resume=False, amp=True, fraction=1.0, profile=False, freeze=None, overlap_mask=True, mask_ratio=4, dropout=0.0, val=True, split=val, save_json=False, save_hybrid=False, conf=None, iou=0.7, max_det=300, half=False, dnn=False, plots=True, source=None, show=False, save_txt=False, save_conf=False, save_crop=False, show_labels=True, show_conf=True, vid_stride=1, stream_buffer=False, line_width=None, visualize=False, augment=False, agnostic_nms=False, classes=None, retina_masks=False, boxes=True, format=torchscript, keras=False, optimize=False, int8=False, dynamic=False, simplify=False, opset=None, workspace=4, nms=False, lr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=7.5, cls=0.5, dfl=1.5, pose=12.0, kobj=1.0, label_smoothing=0.0, nbs=64, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0, copy_paste=0.0, cfg=None, tracker=botsort.yaml, save_dir=runs\detect\train
Overriding model.yaml nc=80 with nc=4from  n    params  module                                       arguments0                  -1  1       928  ultralytics.nn.modules.conv.Conv             [3, 32, 3, 2]1                  -1  1     18560  ultralytics.nn.modules.conv.Conv             [32, 64, 3, 2]2                  -1  1     29056  ultralytics.nn.modules.block.C2f             [64, 64, 1, True]3                  -1  1     73984  ultralytics.nn.modules.conv.Conv             [64, 128, 3, 2]4                  -1  2    197632  ultralytics.nn.modules.block.C2f             [128, 128, 2, True]5                  -1  1    295424  ultralytics.nn.modules.conv.Conv             [128, 256, 3, 2]6                  -1  2    788480  ultralytics.nn.modules.block.C2f             [256, 256, 2, True]7                  -1  1   1180672  ultralytics.nn.modules.conv.Conv             [256, 512, 3, 2]8                  -1  1   1838080  ultralytics.nn.modules.block.C2f             [512, 512, 1, True]9                  -1  1    656896  ultralytics.nn.modules.block.SPPF            [512, 512, 5]10                  -1  1         0  torch.nn.modules.upsampling.Upsample         [None, 2, 'nearest']11             [-1, 6]  1         0  ultralytics.nn.modules.conv.Concat           [1]12                  -1  1    591360  ultralytics.nn.modules.block.C2f             [768, 256, 1]13                  -1  1         0  torch.nn.modules.upsampling.Upsample         [None, 2, 'nearest']14             [-1, 4]  1         0  ultralytics.nn.modules.conv.Concat           [1]15                  -1  1    148224  ultralytics.nn.modules.block.C2f             [384, 128, 1]16                  -1  1    147712  ultralytics.nn.modules.conv.Conv             [128, 128, 3, 2]17            [-1, 12]  1         0  ultralytics.nn.modules.conv.Concat           [1]18                  -1  1    493056  ultralytics.nn.modules.block.C2f             [384, 256, 1]19                  -1  1    590336  ultralytics.nn.modules.conv.Conv             [256, 256, 3, 2]20             [-1, 9]  1         0  ultralytics.nn.modules.conv.Concat           [1]21                  -1  1   1969152  ultralytics.nn.modules.block.C2f             [768, 512, 1]22        [15, 18, 21]  1   2117596  ultralytics.nn.modules.head.Detect           [4, [128, 256, 512]]
YOLOv8s summary: 225 layers, 11137148 parameters, 11137132 gradients, 28.7 GFLOPsTensorBoard: Start with 'tensorboard --logdir runs\detect\train', view at http://localhost:6006/
Freezing layer 'model.22.dfl.conv.weight'
train: Scanning D:\ultralytics-main\ultralytics-main\paper_data\labels... 177 images, 0 backgrounds, 0 corrupt: 100%|██
train: New cache created: D:\ultralytics-main\ultralytics-main\paper_data\labels.cache
val: Scanning D:\ultralytics-main\ultralytics-main\paper_data\labels... 23 images, 0 backgrounds, 0 corrupt: 100%|█████
val: New cache created: D:\ultralytics-main\ultralytics-main\paper_data\labels.cache
Plotting labels to runs\detect\train\labels.jpg...
optimizer: 'optimizer=auto' found, ignoring 'lr0=0.01' and 'momentum=0.937' and determining best 'optimizer', 'lr0' and 'momentum' automatically...
optimizer: AdamW(lr=0.00125, momentum=0.9) with parameter groups 57 weight(decay=0.0), 64 weight(decay=0.0005), 63 bias(decay=0.0)
Image sizes 640 train, 640 val
Using 0 dataloader workers
Logging results to runs\detect\train
Starting training for 100 epochs...Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size1/100         0G      3.429      4.168      4.378          3        640: 100%|██████████| 45/45 [02:23<00:00,  3.Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:05<0all         23         69    0.00059     0.0375   0.000461   7.53e-05Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size2/100         0G       3.26      3.453      4.037         12        640: 100%|██████████| 45/45 [02:23<00:00,  3.Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:05<0all         23         69   0.000574       0.05    0.00124   0.000297Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size3/100         0G      3.067      3.385       3.94          7        640: 100%|██████████| 45/45 [02:41<00:00,  3.Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:06<0all         23         69    0.00482      0.505     0.0869     0.0272Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size4/100         0G       3.03      3.142      3.756         12        640: 100%|██████████| 45/45 [02:34<00:00,  3.Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:06<0all         23         69      0.439      0.389      0.107     0.0437Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size5/100         0G      2.853       2.94       3.59          2        640: 100%|██████████| 45/45 [02:34<00:00,  3.Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:07<0all         23         69      0.286      0.126     0.0346    0.00849Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size6/100         0G      2.774      2.647      3.502         12        640: 100%|██████████| 45/45 [02:35<00:00,  3.Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:05<0all         23         69      0.635      0.269      0.118     0.0222Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size7/100         0G      2.664      2.496       3.34         12        640: 100%|██████████| 45/45 [02:26<00:00,  3.Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:05<0all         23         69      0.304      0.516      0.431      0.161Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size8/100         0G      2.581      2.298      3.141         10        640: 100%|██████████| 45/45 [02:36<00:00,  3.Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:05<0all         23         69      0.532      0.429       0.48      0.213Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size9/100         0G      2.444      2.123      3.049          3        640: 100%|██████████| 45/45 [02:37<00:00,  3.Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:05<0all         23         69       0.55      0.768      0.699      0.329Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size10/100         0G      2.329      2.008      2.925         17        640:  82%|████████▏ | 37/45 [02:17<00:29,  3.

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

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

相关文章

使用NVM管理多个版本的node.js

1、nvm介绍&#xff1a; nvm全英文也叫node.js version management&#xff0c;是一个nodejs的版本管理工具。nvm是node.js版本管理工具&#xff0c;为了解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js 2、下载nvm地址&#xff1a; https://d…

Mybatis如何执行批量操作

文章目录 Mybatis如何执行批量操作使用foreach标签 使用ExecutorType.BATCH如何获取生成的主键 Mybatis如何执行批量操作 使用foreach标签 foreach的主要用在构建in条件中&#xff0c;它可以在SQL语句中进行迭代一个集合。foreach标签的属性主要有item&#xff0c;index&…

iPhone苹果手机如何将词令网页添加到苹果iPhone手机桌面快捷打开?

iPhone苹果手机如何将词令网页添加到苹果iPhone手机桌面快捷打开&#xff1f; 1、在iPhone苹果手机上找到「Safari浏览器」,并点击打开&#xff1b; 2、打开Safari浏览器后&#xff0c;输入词令官方网站地址&#xff1a;ciling.cn ; 3、打开词令官网后&#xff0c;点击Safari…

Maven的配置亲测有效

文章目录 前言一、maven网址二、操作步骤三.配置环境变量四.配置本地仓库五.找到mirror 和配置JDK六.胜利七.提醒⏰;总结 前言 &#xff08;我讲一下什么是maven&#xff0c;不想看跳到下一步就行了&#xff0c;也没必要看&#xff09; Maven&#xff08;Apache Maven&#x…

使用策略模式彻底消除if-else

文章目录 使用策略模式彻底消除if-else1. 场景描述2. if-else方式3. 策略模式 使用策略模式彻底消除if-else 如果一个对象有很多的行为&#xff0c;如果不用恰当的模式&#xff0c;这些行为就只好使用多重的条件选择语句来实现&#xff0c;这样会显得代码逻辑很臃肿&#xff0c…

【广州华锐视点】机械零件拆装VR仿真教学系统

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐走进我们的生活。在教育领域&#xff0c;VR技术的应用也日益广泛&#xff0c;为学生提供了更加生动、直观的学习体验。广州华锐视点开发的机械零件拆装VR仿真教学系统作为一种新兴的教学方式&…

Vision Pro即将量产之际,苹果还是放不下中国供应链

发布半年后&#xff0c;苹果口中的“革命性新产品”Vision Pro终于有了新消息。 图源&#xff1a;苹果 根据多家消费电子供应链公司核心人士消息&#xff0c;苹果计划于12月正式量产Vision Pro&#xff0c;首批备货40万台左右&#xff0c;2024年的销量目标为100万台&#xff0…

网络篇---第九篇

系列文章目录 文章目录 系列文章目录前言一、说说TCP/IP四层网络模型二、说说域名解析详细过程?三、 IP 地址分为几类,每类都代表什么,私网是哪些?四、说说TCP 如何保证可靠性的?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家…

W1R3S

信息收集 主机发现 利用nmap -sn参数进行主机发现&#xff0c;该参数是当发现存活主机的时候&#xff0c;不进行端口的探测&#xff0c;其中的n并不是network的含义&#xff0c;而是not port的意思&#xff01; nmap -sn 192.168.217.0/24 -oA ./hosts 这种方式和arp-scan -…

JOSEF约瑟 DY-34 型电压继电器,15-30V 柜内安装,板前接线

DY-30系列电压继电器 DY-32电压继电器&#xff1b; DY-36电压继电器&#xff1b; DY-33电压继电器&#xff1b; DY-37电压继电器&#xff1b; DY-34电压继电器&#xff1b; DY-38电压继电器&#xff1b; DY-31电压继电器&#xff1b; DY-35电压继电器&#xff1b; DY-32/60C电压…

c语言-浅谈指针(4)

文章目录 1.回调函数概念举例 2.qsort函数qsort的使用 3.通过冒泡排序来模拟qsort函数排序int类型排序结构体类型 这是指针最后一篇了喔&#xff0c;完结撒花 ! 前三篇&#xff1a; 浅谈指针&#xff08;1&#xff09;http://t.csdnimg.cn/JTRjW 浅谈指针&#xff08;2&#xf…

社区工作者在哪里啊?真救命了

社区工作者&#xff0c;每天各种写材料啊啊啊&#xff01;&#xff01; 有时候真的写麻掉了啊&#xff0c;家人们&#xff0c;太难了&#xff0c;谁懂啊&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 这个好东西真的救我大命啊&#xff0c;只要输入关键词和…

linux基础五:linux 系统(进程状态2:)

linux 系统 一.进程状态&#xff1a;1.睡眠状态(sleep)&#xff1a;2.磁盘休眠状态(disk sleep)&#xff1a;3.停止状态(stoped --- T)&#xff1a;4.死亡状态&#xff1a;5.控制状态&#xff08;t&#xff09; 二.僵尸进程和孤儿进程&#xff1a;1.僵尸状态&#xff1a;2.孤儿…

管理员配置Jupterhub

在Ubuntu上演示如何部署R语言环境&#xff0c;包括 posit的已经编译了一些R的安装 系统已经装了R&#xff0c;我额外编译的R如何让大家都能用到 如何配置RStudio jupyterhub的配置和使用 管理员如何配置jupyterhub 用户如何配置自己的jupyter环境 Ubuntu上的R部署 这一次…

Mendix UI页面布局以案说法

一、前言 试着回想最近一次与公司网站交互的情况&#xff0c;访问了多个页面&#xff0c;并且可能使用了某些功能。有可能基于这种互动&#xff0c;可以向某人介绍公司的一些主要功能。其中一些可能是更肤浅的东西&#xff0c;比如他们的标志是什么样子或他们的主要配色方案是…

笔记二十四、剖析Redux的工作流程

24.1 定义 用做于状态管理的第三方 js 库react框架中使用&#xff0c;也可应用于其他的框架 使用场景 组件间需要共享状态和改变另一个组件的状态在react项目中可以不使用就尽量不用&#xff0c;复杂场景下才使用 24.2 原理图 24.3 代码 安装 yarn add reduxjs/toolkit rea…

GPIO的使用--操作PE02 PE03 PE04实现开关控制灯泡亮灭

效果&#xff1a; 开关控制灯的亮灭 目录 1.找到引脚组别(DEFG) led灯硬件结构 开关硬件结构 2.时钟使能 3.GPIO时钟控制 4.控制实现思路 5. 完整代码 6.视频演示 1.找到引脚组别(DEFG) 开关的引脚组别--E&#xff1b;LED灯的引脚组别--F led灯硬件结构 开关硬件结构…

【linux】基本指令(上篇)

1.快速认识5~6个指令 pwd指令 ls指令 touch指令 cd指令 clear指令 touch指令 详细讲解 首先有一个问题就是当我们创建一个文件&#xff0c;但是没有往里面写内容&#xff0c;那么磁盘上会有该文件吗&#xff1f; 磁盘上会保存&#xff0c;因为创建好的文件&#xff0c;没有…

IDEA安装python插件并配置

目录 一、Mac1. 安装插件2. 新建项目3. 下载第三方库4. 配置镜像源 一、Mac 1. 安装插件 在plugins中搜索python 2. 新建项目 使用本项目独享的虚拟环境&#xff0c;选择解释器 如果需要修改解释器可以进入project structure&#xff0c;在SDKs中点击&#xff0c;选择add py…

clip-path,css裁剪函数

https://www.cnblogs.com/dzyany/p/13985939.html clip-path - CSS&#xff1a;层叠样式表 | MDN 我们看下这个例子 polygon里有四个值分别代表这四个点相对于原图左上方的偏移量。 裁剪个五角星