首页 > 其他分享 >yoloV8训练标注数据生成模型

yoloV8训练标注数据生成模型

时间:2024-07-09 16:29:43浏览次数:16  
标签:img os 模型 yoloV8 path data image dir 标注

1、标注工具:vott

2、yoloV8

2.1 仓库地址

https://github.com/ultralytics/ultralytics

2.2 参考教程文档

文档地址:
https://github.com/ultralytics/ultralytics/wiki

3、数据集|标注数据格式


3.1 数据集格式【coco128】


3.1.1 下载地址:

https://cocodataset.org/#download

3.1.2 官网示例:

3.2 项目配置coco128数据集

将下载的数据集解压至指定位置,*文件路径固定【跟路径下datasets】

path: ../datasets/coco8 
train: images/train
val: images/val

3.2.1 数据集格式转化

该数据集是使用labelme,对单图进行标注的json格式。转为yolo可以使用的格式

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/6/3
# @Author : CCM
# @Describe : 该数据集是使用labelme,对单图进行标注的json格式。转为yolo可以使用的格式

import os
import json
import base64
from PIL import Image
from io import BytesIO


# 辅助函数解码base64图像数据
def decode_image(image_data):
    img_data = base64.b64decode(image_data)
    img = Image.open(BytesIO(img_data))
    return img


# 将多边形点转换为YOLO bbox格式
def polygon_to_yolo_bbox(points, img_width, img_height):
    x_coords = [point[0] for point in points]
    y_coords = [point[1] for point in points]
    xmin = min(x_coords)
    xmax = max(x_coords)
    ymin = min(y_coords)
    ymax = max(y_coords)
    x_center = (xmin + xmax) / 2.0 / img_width
    y_center = (ymin + ymax) / 2.0 / img_height
    width = (xmax - xmin) / img_width
    height = (ymax - ymin) / img_height
    return [x_center, y_center, width, height]


# Paths
input_dir = r'C:\Users\ccm\Documents\印章数据集\印章标注\印章标注'  # 标注文件夹路径
images_dir = '../datasets/seal/images/train2017'
labels_dir = '../datasets/seal/labels/train2017'

# 如果目录不存在,创建目录
os.makedirs(images_dir, exist_ok=True)
os.makedirs(labels_dir, exist_ok=True)

# 处理输入目录中的每个JSON文件
for filename in os.listdir(input_dir):
    if filename.endswith('.json'):
        json_path = os.path.join(input_dir, filename)
        with open(json_path, 'r', encoding='utf-8') as file:
            data = json.load(file)
        image_name = data['imagePath']
        image_data = decode_image(data['imageData'])
        image_path = os.path.join(images_dir, os.path.basename(image_name))
        # 存图
        image_data.save(image_path)
        # 准备标签文件
        label_path = os.path.join(labels_dir, os.path.splitext(os.path.basename(image_name))[0] + '.txt')
        img_width, img_height = image_data.size
        with open(label_path, 'w') as label_file:
            for shape in data['shapes']:
                label = shape['label']
                points = shape['points']
                bbox = polygon_to_yolo_bbox(points, img_width, img_height)
                # 假设所有标签都是'stamp',类id为0
                label_file.write(f"0 {' '.join(map(str, bbox))}\n")
        print(f"处理和保存图像和标签 {image_name}")
print("完成")

3.2.2 项目配置摘要

4、训练|验证|推理|存储模型

我使用yolov8n.pt 模型进行,根据自身条件选择合适的模型进行训练。

4.1 训练

学习率|训练次数深度|使用模型|数据集配置yaml|等参数 自我配置

yolo detect train data=coco8.yaml model=yolov8n.pt epochs=100 imgsz=640 device=0,1
yolo detect train data=datasets/seal/seal_ccm.yaml model=yolov8n.yaml pretrained=ultralytics/yolov8n.pt epochs=100 batch=2 lr0=0.01 resume=True 

4.2 验证

yolo detect val  data=datasets/seal/seal_ccm.yaml model=runs/detect/train/weights/best.pt batch=2

4.3 训练验证结果

4.4 评估模型

results = detect.run(weights='runs/train/exp/weights/best.pt', source='data/images', img_size=img_size)
print(results)

4.5 进行推理

detect.run(weights='runs/train/exp/weights/best.pt', source='path/to/your/test/images', img_size=img_size)

4.6 导出为ONNX或其它格式

python export.py --weights runs/train/exp/weights/best.pt --img 640 --batch 1

4.7 模型使用

import torch
from yolov5 import detect

# 加载模型
model = torch.hub.load('ultralytics/yolov5', 'custom', path='runs/train/exp/weights/best.pt')

# 进行推理
img = 'path/to/your/image.jpg'
results = model(img)
results.show()  # 展示结果
results.save()  # 保存结果

5、倾斜弯曲文字识别算法解析

相关流程和代码【后续更新】

标签:img,os,模型,yoloV8,path,data,image,dir,标注
From: https://blog.csdn.net/weixin_41828071/article/details/140289635

相关文章

  • PointNet——源码调试(模型训练+可视化测试显示)
    因为项目涉及到3D点云项目,故学习下PointNet这个用来处理点云的神经网络论文的话,大致都看了下,网络结构有了一定的了解,本博文主要为了下载调试PointNet网络源码,训练和测试调通而已,不涉及后续的改进优化。我是在Anaconda下创建一个新的虚拟环境空间部署项目测试大概用到的就......
  • 开源大模型对比
    随着chatgpt诞生,开源大模型的也获得了突飞猛进的进展,值得关注的是国内本地私有大模型已经在很多真实的场景中落地,比如智能客服。美国的技术研发能力遥遥领先,但是不得不说落地应用这块是我们的强项。企业使用大模型一般需要考虑数据隐私和安全的问题,所以一般会选择开源大模型......
  • 分类模型的算法性能评价
    一、概述  分类模型是机器学习中一种最常见的问题模型,在许多问题场景中有着广泛的运用,是模式识别问题中一种主要的实现手段。分类问题概况起来就是,对一堆高度抽象了的样本,由经验标定了每个样本所属的实际类别,由特定算法训练得到一个分类器,输入样本属性即自动计算出其所属类别,从......
  • [大数据][机器学习]之Model Card(模型卡片)介绍
    每当我们在公有云或者私有云发布训练好的大数据模型,为了方便大家辨识、理解和运用,参照huggingface所制定的标准制作一个ModelCard展示页,是种非常好的模型展示和组织形式。下面就是一个ModelCard的示例,我试着把它翻译成了中文,源网址,并且提供了Markdown的模板,供大家参考。在这里......
  • Java智能之Spring AI:5分钟打造智能聊天模型的利器
    前言尽管Python最近成为了编程语言的首选,但是Java在人工智能领域的地位同样不可撼动,得益于强大的Spring框架。随着人工智能技术的快速发展,我们正处于一个创新不断涌现的时代。从智能语音助手到复杂的自然语言处理系统,人工智能已经成为了现代生活和工作中不可或缺的一部分。在这样......
  • RocketMQ概念与模型
    为啥要用MQ?这个都应该会背了,6个字解耦、异步、削峰RocketMQ的优缺点?适用场景?主要与Kafka相比单机吞吐量:十万级(类似kafka)消息堆积:支持10亿级别消息堆积源码是Java天生为金融互联网领域而生,对于可靠性要求很高的场景,尤其电商里订单扣款、业务削峰,业务场景在阿里双11经历过......
  • 拆解LangChain的大模型记忆方案
    之前我们聊过如何使用LangChain给LLM(大模型)装上记忆,里面提到对话链ConversationChain和MessagesPlaceholder,可以简化安装记忆的流程。下文来拆解基于LangChain的大模型记忆方案。1.安装记忆的原理1.1.核心步骤给LLM安装记忆的核心步骤就3个:在对话之前调取之前的历史消息。......
  • 深度学习 - 模型剪枝技术详解
    模型剪枝简介模型剪枝(ModelPruning)是一种通过减少模型参数来降低模型复杂性的方法,从而加快推理速度并减少内存消耗,同时尽量不显著降低模型性能。这种技术特别适用于资源受限的设备,如移动设备和嵌入式系统。模型剪枝通常应用于深度神经网络,尤其是卷积神经网络(CNNs)。模型剪......
  • 大模型算法方向实习会经常提问哪些问题?看完手撕面试官拿下offer!
    现互联网研发一枚,曾拿过多个算法/研发岗SPoffer,简要介绍一下大模型算法岗面试内容和如何准备面试。大模型算法岗的面试内容,实际上可以拆解成两部分,一是算法岗通用的面试内容,二是大模型专有相关部分。算法岗通用面试内容这部分内容很重要,因为通用的面试内容可以适用于不同......
  • 职场人该如何学习使用AI大模型(非常详细)零基础入门到精通,收藏这一篇就够了
    非技术背景的职场人想要学习和使用AI大模型,可以遵循以下步骤:基础学习:首先,需要掌握人工智能的基础知识,包括但不限于机器学习、深度学习等领域。可以通过阅读《ArtificialIntelligence:AModernApproach》和《MachineLearning》等书籍来了解这些概念[1]。此外,高等数学、......