机器学习-CV

 搜索

会员中心 

消息

历史

创作中心

创作

CV -- YOLOv8 图像分割(GPU环境)

Edward-tan

于 2025-02-19 23:25:52 发布

阅读量530

 收藏 14

点赞数 14

分类专栏: 人工智能--CV 文章标签: YOLO

版权

​编辑人工智能--CV专栏收录该内容

4 篇文章1 订阅

已订阅

目录

参考视频:

标注

JSON转为TXT

训练

验证


参考视频:

使用 Yolov8 自定义数据集进行图像分割_哔哩哔哩_bilibili

标注

 数据集:

我使用的是一些苹果数据集,可以在我的csdn资源中下载:

https://download.csdn.net/download/2403_83182682/90405543?spm=1001.2014.3001.5503

这里标注使用的 labelme 标注软件,下载和使用都很简单,下载需要打开 cmd 控制台,输入下载代码:

pip install labelme
labelme

输入 labelme 打开软件页面:

中文版的自己玩玩就会了,常用按钮如下

点击【打开目录】,输入苹果文件夹,点击【创建多边形】,绘制多边形,点击保存,然后继续绘制下一张

标记完成后是这样的

需要将 jpg 文件和 json文件分别放入文件夹中,方便后面数据转换。

JSON转为TXT

通过 LabelMe 工具绘制多边形标注后生成的 JSON 文件是一种结构化的数据文件,它遵循了一定的格式来存储图像标注信息。但是 yolov8 官方规定需要的是标注文件,即 .txt 文件,我这里提供一段 json 转 txt  文件的 Python 代码:

 
  1. # -*- coding: utf-8 -*-

  2. from tqdm import tqdm

  3. import shutil

  4. import random

  5. import os

  6. import argparse

  7. from collections import Counter

  8. import yaml

  9. import json

  10. def mkdir(path):

  11. if not os.path.exists(path):

  12. os.makedirs(path)

  13. def convert_label_json(json_dir, save_dir, classes):

  14. json_paths = os.listdir(json_dir)

  15. classes = classes.split(',')

  16. mkdir(save_dir)

  17. for json_path in tqdm(json_paths):

  18. # for json_path in json_paths:

  19. path = os.path.join(json_dir, json_path)

  20. with open(path, 'r') as load_f:

  21. json_dict = json.load(load_f)

  22. h, w = json_dict['imageHeight'], json_dict['imageWidth']

  23. # save txt path

  24. txt_path = os.path.join(save_dir, json_path.replace('json', 'txt'))

  25. txt_file = open(txt_path, 'w')

  26. for shape_dict in json_dict['shapes']:

  27. label = shape_dict['label']

  28. label_index = classes.index(label)

  29. points = shape_dict['points']

  30. points_nor_list = []

  31. for point in points:

  32. points_nor_list.append(point[0] / w)

  33. points_nor_list.append(point[1] / h)

  34. points_nor_list = list(map(lambda x: str(x), points_nor_list))

  35. points_nor_str = ' '.join(points_nor_list)

  36. label_str = str(label_index) + ' ' + points_nor_str + '\n'

  37. txt_file.writelines(label_str)

  38. def get_classes(json_dir):

  39. '''

  40. 统计路径下 JSON 文件里的各类别标签数量

  41. '''

  42. names = []

  43. json_files = [os.path.join(json_dir, f) for f in os.listdir(json_dir) if f.endswith('.json')]

  44. for json_path in json_files:

  45. with open(json_path, 'r') as f:

  46. data = json.load(f)

  47. for shape in data['shapes']:

  48. name = shape['label']

  49. names.append(name)

  50. result = Counter(names)

  51. return result

  52. def main(image_dir, json_dir, txt_dir, save_dir):

  53. # 创建文件夹

  54. mkdir(save_dir)

  55. images_dir = os.path.join(save_dir, 'images')

  56. labels_dir = os.path.join(save_dir, 'labels')

  57. img_train_path = os.path.join(images_dir, 'train')

  58. img_val_path = os.path.join(images_dir, 'val')

  59. label_train_path = os.path.join(labels_dir, 'train')

  60. label_val_path = os.path.join(labels_dir, 'val')

  61. mkdir(images_dir)

  62. mkdir(labels_dir)

  63. mkdir(img_train_path)

  64. mkdir(img_val_path)

  65. mkdir(label_train_path)

  66. mkdir(label_val_path)

  67. # 数据集划分比例,训练集75%,验证集15%,测试集15%,按需修改

  68. train_percent = 0.90

  69. val_percent = 0.10

  70. total_txt = os.listdir(txt_dir)

  71. num_txt = len(total_txt)

  72. list_all_txt = range(num_txt) # 范围 range(0, num)

  73. num_train = int(num_txt * train_percent)

  74. num_val = int(num_txt * val_percent)

  75. train = random.sample(list_all_txt, num_train)

  76. # 在全部数据集中取出train

  77. val = [i for i in list_all_txt if not i in train]

  78. # 再从val_test取出num_val个元素,val_test剩下的元素就是test

  79. # val = random.sample(list_all_txt, num_val)

  80. print("训练集数目:{}, 验证集数目:{}".format(len(train), len(val)))

  81. for i in list_all_txt:

  82. name = total_txt[i][:-4]

  83. srcImage = os.path.join(image_dir, name + '.jpg')

  84. srcLabel = os.path.join(txt_dir, name + '.txt')

  85. if i in train:

  86. dst_train_Image = os.path.join(img_train_path, name + '.jpg')

  87. dst_train_Label = os.path.join(label_train_path, name + '.txt')

  88. shutil.copyfile(srcImage, dst_train_Image)

  89. shutil.copyfile(srcLabel, dst_train_Label)

  90. elif i in val:

  91. dst_val_Image = os.path.join(img_val_path, name + '.jpg')

  92. dst_val_Label = os.path.join(label_val_path, name + '.txt')

  93. shutil.copyfile(srcImage, dst_val_Image)

  94. shutil.copyfile(srcLabel, dst_val_Label)

  95. obj_classes = get_classes(json_dir)

  96. classes = list(obj_classes.keys())

  97. # 编写yaml文件

  98. classes_txt = {i: classes[i] for i in range(len(classes))} # 标签类别

  99. data = {

  100. 'path': os.path.join(os.getcwd(), save_dir),

  101. 'train': "images/train",

  102. 'val': "images/val",

  103. 'names': classes_txt,

  104. 'nc': len(classes)

  105. }

  106. with open(save_dir + '/segment.yaml', 'w', encoding="utf-8") as file:

  107. yaml.dump(data, file, allow_unicode=True)

  108. print("标签:", dict(obj_classes))

  109. if __name__ == "__main__":

  110. """

  111. python json2txt_nomalize.py --json-dir my_datasets/color_rings/jsons --save-dir my_datasets/color_rings/txts --classes "cat,dogs"

  112. """

  113. classes_list = 'apple' # 类名

  114. parser = argparse.ArgumentParser(description='json convert to txt params')

  115. parser.add_argument('--image-dir', type=str, default='D:\OneDrive\桌面\yolov8-segment\datasets\segment\images', help='图片地址')

  116. parser.add_argument('--json-dir', type=str, default='D:\OneDrive\桌面\yolov8-segment\datasets\segment\json', help='json地址')

  117. parser.add_argument('--txt-dir', type=str, default='D:\OneDrive\桌面\yolov8-segment\datasets\segment\\txt', help='保存txt文件地址')

  118. parser.add_argument('--save-dir', default='D:\OneDrive\桌面\yolov8-segment\datasets\segment\seg', type=str, help='保存最终分割好的数据集地址')

  119. parser.add_argument('--classes', type=str, default=classes_list, help='classes')

  120. args = parser.parse_args()

  121. json_dir = args.json_dir

  122. txt_dir = args.txt_dir

  123. image_dir = args.image_dir

  124. save_dir = args.save_dir

  125. classes = args.classes

  126. # json格式转txt格式

  127. convert_label_json(json_dir, txt_dir, classes)

  128. # 划分数据集,生成yaml训练文件

  129. main(image_dir, json_dir, txt_dir, save_dir)

第 90 行左右可以修改数据集划分比例,默认是 90% 训练集,10%验证集。

第147到150行依次为图片地址、json文件地址、保存txt文件地址、分割好的数据集地址

我的项目创建目录如下(都是可以自己修改的):

运行代码

运行成功,训练集是19张图片,验证集是3张,检测到的标签总数量为 53。

运行成功后会帮您创建 Yolov8 训练所需的文件格式,并且将 txt文件放入正确的位置:

训练

训练环境使用的GPU,需要配置的可以看我前文:

CV -- 基于GPU版显卡CUDA环境+Pycharm YOLOv8 检测-CSDN博客

训练代码如下:

 
  1. from torch.cuda import device

  2. from ultralytics import YOLO

  3. model = YOLO('D:\OneDrive\桌面\yolov8-segment\weights\yolov8n-seg.pt')

  4. model.train(data='D:\OneDrive\桌面\yolov8-segment\datasets\segment\seg\segment.yaml',

  5. epochs=300, #训练轮次

  6. imgsz=640, #输入图片尺寸(会转换为该尺寸)

  7. batch=4, #每次训练的批量

  8. device='cuda:0', #使用GPU训练

  9. workers=0 #windows GPU训练需加上该参数,否则会报错

  10. )

  11. print("训练结束!")

这里使用的是预训练模型,yolov8n-seg.pt,大家可以在我的资源中获取到:

https://download.csdn.net/download/2403_83182682/90405472?spm=1001.2014.3001.5503

训练结束后会生成一些图表:

输出文件说明:
F1-置信度曲线 (BoxF1_curve.png)
观察方法: F1分数是模型准确度的度量,结合了精确度和召回率。在这个图表中,您应该寻找F1分数最高的点,该点对应的置信度阈值通常是模型最佳的工作点。


精确度-置信度曲线 (BoxP_curve.png)
观察方法: 精确度代表了模型预测为正类的样本中实际为正类的比例。在该曲线中,应关注随置信度增加,精确度如何提高,以及在哪个置信度水平上精确度开始下降,这有助于确定阈值设定。


精确度-召回率曲线 (BoxPR_curve.png)
观察方法: 该曲线展示了精确度与召回率之间的权衡。理想的模型应在高精确度和高召回率处达到平衡。通常查看曲线下面积来评估模型整体性能。


召回率-置信度曲线 (BoxR_curve.png)
观察方法: 召回率是指所有正类中模型正确预测的比例。这个图表中,召回率通常随着置信度阈值的降低而增加。理想的置信度阈值通常是召回率较高,但置信度不过低的点。


混淆矩阵 (confusion_matrix.png)
观察方法: 查看矩阵的对角线,对角线上的数值越高表示分类结果越准确。同时观察非对角线元素,了解哪些类别容易被误分类。


标准化混淆矩阵 (confusion_matrix_normalized.png)
观察方法: 与非标准化混淆矩阵类似,但通过标准化可以更容易地比较不同类别之间的分类准确率,特别是在类别样本量不均匀的情况下。


标签分布 (labels.jpg)
观察方法: 柱状图部分显示了每个类别的实例数量,有助于了解数据集中各类别的分布情况。散点图部分可以显示样本的位置分布,有助于了解样本在输入空间的分布特性。


标签相关图 (labels_correlogram.jpg)
观察方法: 相关图显示了数据标签之间的相关性,深色的格子表示较高的正相关,浅色表示较低的相关或负相关。这有助于了解不同类别之间的关系。


掩膜F1-置信度曲线 (MaskF1_curve.png)
观察方法: 类似于F1-置信度曲线,但特别用于评估模型在像素级分类或分割任务中的性能。寻找曲线中F1得分最高的点来确定最佳的置信度阈值。


精确度-召回率曲线 (Precision-Recall Curve) (MaskPR_curve.png)
如何观察理解: 此图表展示了在不同召回率水平上模型精确度的变化。蓝色的线表示所有类别的平均精确度。曲线下的面积(AUC)越大,模型性能越好。理想状态是曲线靠近右上角,即高召回率和高精确度。


召回率-置信度曲线 (Recall-Confidence Curve) (MaskR_curve.png)
如何观察理解: 该图标展示了模型在不同置信度阈值下召回率的变化。您应关注在召回率保持高的同时,置信度阈值的选择。最佳操作点通常是召回率开始显著下降之前的置信度值。


训练和验证指标图 (results.png)
如何观察理解: 这张图显示了多个指标的训练和验证过程,其中包括损失函数的变化和性能指标如精确度和mAP。下降的损失和上升的性能指标通常表明模型在学习过程中正在改进。平滑的曲线有助于识别趋势。


损失和性能指标图
如何观察理解: 类似于上一个图表,这个可能包含了不同的损失和性能指标。每个小图标展示了训练过程中的具体方面,如框体损失、分割损失、分类损失等。这有助于诊断模型在哪些方面表现良好,在哪些方面可能需要进一步优化。


Weights文件:这是一个模型权重文件,通常以.pt(PyTorch模型)格式保存。它包含了经过训练的神经网络的所有参数和权重。这个文件是模型训练过程的直接产物,用于后续的图像识别和分析任务。

Args.yaml文件:这个文件通常包含了模型训练时使用的配置参数。它详细记录了训练过程中使用的所有设置,如学习率、批大小、训练轮数等。这个文件的目的是为了提供一个清晰的训练配置概览,使得训练过程可以被复现或调整。

左半部分是损失函数图,损失函数下降,可能并不能说明训练结果很好,但如果损失函数上升,那训练结果一定不好,说明你的数据可能出现了很大的错误,或者一些其他不好的事情正在发生。

通过对测试数据的详细分析,我们可以观察到原始标注与模型预测的掩膜之间存在差异很小,这实际上体现了模型具备出色的语义分割能力。具体而言,尽管在某些局部细节上可能存在细微偏差,但模型整体能够准确捕捉并区分不同对象的边界和区域,展示了其在复杂场景下对图像内容的强大理解能力。这种高水平的分割精度不仅验证了模型训练的有效性,还为其在实际应用中的性能提供了有力保障。

验证

可以使用我们训练好的模型,对苹果图片进行图像分割,训练好的模型的权重文件中有两个模型文件,第一个是最好的模型,第二个是最后一次训练的模型,一般使用第一个模型。

训练代码:

 
  1. from ultralytics import YOLO

  2. import cv2

  3. import numpy as np

  4. # 模型路径和图像路径

  5. model_path = 'D:/OneDrive/桌面/yolov8-segment/runs/segment/train8/weights/best.pt'

  6. image_path = 'D:/OneDrive/桌面/apple2.jpg'

  7. # 加载模型并进行预测

  8. model = YOLO(model_path,task='segment')

  9. results = model.predict(source=image_path,save=True,show=True)

成功运行后就能得到分割图片:

可以看见分割效果是有的,但也有点瑕疵,把杯子也识别成 apple 了,可能是因为数据集太少或者标注问题。

当然,也可使用代码将各个 apple 的掩膜提取出来:

 
  1. from ultralytics import YOLO

  2. import cv2

  3. import numpy as np

  4. # 模型路径和图像路径

  5. model_path = 'D:/OneDrive/桌面/yolov8-segment/runs/segment/train8/weights/best.pt'

  6. image_path = 'D:/OneDrive/桌面/apple2.jpg'

  7. # 加载模型并进行预测

  8. model = YOLO(model_path,task='segment')

  9. results = model.predict(source=image_path,save=True,show=True)

  10. # 读取图像

  11. img = cv2.imread(image_path)

  12. H, W, _ = img.shape

  13. print(img.shape)

  14. # # 遍历每个结果中的掩码

  15. for i, result in enumerate(results):

  16. for j, mask in enumerate(result.masks.data):

  17. # 将mask从GPU移动到CPU,并转换为numpy数组

  18. mask = mask.cpu().numpy()

  19. # 如果mask是多维的,选择第一个通道(假设单通道)

  20. if len(mask.shape) > 2:

  21. mask = mask[0]

  22. # 归一化到0-255范围,并转换为uint8类型

  23. mask = (mask * 255).astype(np.uint8)

  24. # 调整大小以匹配原图尺寸

  25. mask_resized = cv2.resize(mask, (W, H))

  26. # 保存掩码图像

  27. output_path = f'./mask_{i}_{j}.png'

  28. cv2.imwrite(output_path, mask_resized)

  29. print(f"Saved {output_path}")

得到各个掩膜的 png 文件:

这些掩膜文件在某些时候非常有用。

感谢您的三连!!!

​编辑Edward-tan

已关注

专栏目录

YoloV8改进策略:主干网络改进|CAS-ViT在YoloV8中的创新应用与显著性能提升

m0_47867638的博客

 879

在深度学习与计算机视觉领域,模型效率与性能之间的平衡一直是研究者和开发者关注的焦点。特别是在实时检测与识别任务中,如YoloV8这类高效的目标检测模型,其主干网络的选择对整体性能具有决定性作用。近期,我们通过将CAS-ViT(卷积加性自注意力视觉Transformer)创新性地引入到YoloV8中,替换其原有的主干网络,实现了令人瞩目的性能提升,这一改进不仅彰显了CAS-ViT的强大潜力,也为YoloV8的进一步优化开辟了新路径。

使用 YOLOv8 进行实时物体检测和图像分割(一)更快的 R-CNN

weixin_43199439的博客

 1322

在物体检测的世界里,算法的选择并非一成不变的。随着 YOLOv8 等新一代算法的出现,物体检测技术在精度和速度之间找到了更好的平衡。每种算法都有其独特的优势和适用场景,理解它们的优缺点对于实际应用至关重要。无论是需要高精度的静态图像处理,还是需要高速实时检测的动态场景,选择合适的物体检测算法能够帮助我们实现更精准、更高效的计算机视觉系统。通过不断的实践与优化,我们将能够在各种复杂的环境中实现更加智能的物体检测,推动计算机视觉技术的发展。目录介绍更快的 R-CNN单次多盒检测器(SSD)

Android ncnn-android-yolov8-seg源码解析 : 实现人像分割

朱豪凯的博客

 2461

讲解Android ncnn-android-yolov8-seg源码,如何实现人像分割 ?

超详细YOLOv8实例分割全程概述:环境、训练、验证与预测详解

热门推荐

CDBmax的博客

 4万+

这篇博客提供了一个全面的指南,介绍了如何使用 Ultralytics YOLOv8-seg 系列模型进行对象检测和分割任务。内容从环境搭建、模型选择、训练、验证到预测的完整流程都有详细说明。为想要使用 YOLOv8-seg 系列模型的开发者提供了一站式的解决方案。它不仅涵盖了从环境配置到模型部署的详细步骤,还解释了如何解读和使用模型输出,使得用户能够根据自己的需求选择合适的模型,并能够有效地训练和评估它们。

Mask R-CNN与YOLOv8的区别

2301_80317247的博客

 706

Mask R-CNN在图像分析、自动驾驶汽车、机器人等领域有广泛应用,其代码实现通常基于深度学习框架如TensorFlow或Keras,并提供了训练和推理的功能。在应用代码案例方面,由于Mask R-CNN和YOLOv8都是深度学习模型,它们的代码实现通常涉及数据预处理、模型训练、推理和后处理等步骤。因此,虽然Mask R-CNN和YOLOv8都是基于深度学习的视觉框架,在应用场景和目标上有一定重叠,但它们在算法原理、实现方式和具体功能上存在差异。:向实时化发展(如Mask R-CNN Lite)

YOLOV8实例分割——详细记录环境配置、自定义数据处理到模型训练与部署

知来者逆的博客

 2万+

yolov8实例分割,从数据处理到模型训练与模型部署保姆级教程

CV实战01 YOLOv5实现图像分割

weixin_43490087的博客

 1304

你也可以选择其他变体,如 `yolov5n`, `yolov5m`, `yolov5l`, `yolov5x` 等。- 如果选择了`Comet`,则使用`%pip install -q comet_ml`静默地安装Comet ML库,并通过`import comet_ml`导入该库,然后调用`comet_ml.init()`初始化Comet。模型自动从最新的YOLOv5版本下载。- `"ultralytics/yolov5"` 是仓库的名称,这里是 Ultralytics 的 YOLOv5 仓库。

YOLOv8-Seg推理详解及部署实现

周同学的博客

 1万+

YOLOv8-Seg推理详解及部署实现

yolov8-seg 分割推理流程

整理ing

 3781

yolov8-seg 分割推理流程

OpenCV与AI深度学习 | CIB-SE-YOLOv8: 优化的YOLOv8, 用于施工现场的安全设备实时检测 !

csdn_xmj的博客

 1166

安全设备是确保建筑施工现场安全的关键组成部分,其中头盔尤为重要,能有效减少伤害和死亡。传统的监督和项目经理手动检查方法效率低下且劳动密集,往往无法预防因缺乏安全设备引发的事故。

YOLOv8-Pose推理详解及部署实现

周同学的博客

 1万+

YOLOv8-Pose推理详解及部署实现

云端炼丹手册-云端训练YOLOv5、YOLOv8、YOLOv8,分割 检测 姿态估计

05-24

YOLOv5、YOLOv8等是YOLO家族的重要成员,它们在图像检测、分割以及姿态估计等任务上表现卓越。利用云计算平台进行这些模型的训练,可以充分利用云端的强大计算资源,提高训练效率,同时降低硬件成本。以下将详细介绍...

X-AnyLabeling的yolov7-onnx自动标注模型

06-08

X-AnyLabeling 是一个强大的、灵活的图像标注工具,适用于各种计算机视觉任务,如物体检测、语义分割等。在本项目中,它与 yolov7 结合, yolov7 是 YOLO (You Only Look Once) 系列的最新版本,具有更快的推理速度...

【camera】YOLOV7实现实例分割+目标检测任务(训练、测试、量化、部署)

03-27

通过理解其训练、测试、量化和部署的过程,开发者能够有效地利用YOLOV7解决实际问题,为图像处理和计算机视觉应用带来更高的效率和准确度。在实际项目中,根据具体需求和环境,合理调整模型参数和优化策略,是实现...

使用 C++ 和 ONNX Runtime 框架对 YOLOv11-CLS 图像分类模型进行部署(包含详细的完整的程序和数据)

10-14

适合人群:有一定C++和深度学习基础的研发人员和工程师,特别是在计算机视觉、图像识别等领域从事实际项目的开发人士。 使用场景及目标:帮助开发者搭建起一套高效的本地化部署模型架构。目标应用场景包括但不限于...

YoloV8改进策略:Block改进|Mamba-UNet改进YoloV8,打造全新的Yolo-Mamba网络

m0_47867638的博客

 3808

本文尝试使用Mamba的VSSBlock替换YoloV8的Bottleneck,打造最新的Yolo-Mamba网络。在医学图像分析的最新进展中,卷积神经网络(CNN)和视觉转换器(ViT)都取得了显著的基准成绩。前者通过其卷积操作在捕获局部特征方面表现出色,而后者则通过利用自注意力机制实现了出色的全局上下文理解。然而,这两种架构在有效建模医学图像中的长距离依赖关系时都存在局限,这对于精确分割至关重要。受到Mamba架构的启发,该架构因其处理长序列和全局上下文信息的能力以及作为国家空间模型(SSM)的增强计算

【YOLOv8改进 - 特征融合】FFCA-YOLO: 提升遥感图像中小目标检测的精度和鲁棒性

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。

 1681

在遥感中,小物体的检测任务由于特征表示不足和背景混淆等问题而变得艰难。特别是当算法需要部署在板载系统上进行实时处理时,需在有限的计算资源下进行准确性和速度的广泛优化。为了解决这些问题,本文提出了一种高效的检测器,称为特征增强、融合和上下文感知YOLO(FFCA-YOLO)。FFCA-YOLO包含三个创新的轻量级和即插即用的模块:特征增强模块(FEM)、特征融合模块(FFM)和空间上下文感知模块(SCAM)。这三个模块分别增强了网络的局部区域感知、多尺度特征融合和全局关联跨通道与空间的能力,同时尽量避免增加复

手把手教你YOLOv8/YOLOv11分割训练自己数据集和推理,并教你使用Labelme工具标注数据(附分割网络结构图)

weixin_44779079的博客

 1447

YOLOv8-seg 和 YOLOv11-seg 都是一种高效实例分割算法,实例分割模型的输出是一组勾勒出图像中每个物体的遮罩或轮廓,以及每个物体的类标签和置信度分数。当你不仅需要知道物体在图像中的位置,还需要知道它们的具体形状时,实例分割就非常有用了,功能非常强大,可以应对各种视觉任务。 YOLOv11-seg 则在 YOLOv8-seg 基础上进一步魔改了模型架构,相对分割速度可能更快,其他指标性能有待测试。实例分割可以用于自动驾驶、医疗图像处理、智能农业监控等领域。

C++实现yolov8+onnx+tensorrt模型转换

最新发布

奇华资料的博客

 340

使用TensorRT进行加速推理时,需要先将onnx格式转化为tensorrt格式,以下是使用C++来进行转化代码以及对应的CMakeLists.txt文件。本文主要为大家详细介绍了如何使用C++将yolov8 onnx格式转化为tensorrt格式,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下。以yolov8为例,使用cmake编译好后会生成build可执行文件,执行以下命令即可等待生成yolov8x.engine文件。

Edward-tan

码龄1年​编辑 高校学生

47

原创

102

周排名

6726

总排名

12万+

访问

等级

4792

积分

2287

粉丝

3343

获赞

1481

评论

2463

收藏

新秀勋章

持之以恒

勤写标兵

笔耕不辍

创作能手

私信

已关注

热门文章

最新评论

大家在看

最新文章

2025年20篇

2024年27篇

相关专栏

YOLOv:从理论到实践

专栏

0 人学习

YOLOv:从理论到实践 本专栏旨在为大家提供全面的 YOLOv 学习资源。无论你是初学者还是资深开发者,都能从中找到适合自己的学习路径。我们将深入分析 YOLOv 的架构、算法优化,并结合多个实际案例,帮助你快速掌握这一前沿技术。

2024年YoloV8改进创新指南

专栏

17 人学习

用2024年最新的成果改进YoloV8,打造YoloV8改进的精品专栏!

YOLOV8基础解析+创新改进+实战案例

专栏

182 人学习

YOLOYOLOV8基础解析+创新改进+实战案例: 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

目录

  1. 参考视频:
  2. 标注
  3. JSON转为TXT
  4. 训练
  5. 验证

分类专栏

AI提问

评论

笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值