手把手教你实现基于丹摩智算的YoloV8自定义数据集的训练、测试。

news2024/11/24 16:34:39

摘要

DAMODEL(丹摩智算)是专为AI打造的智算云,致力于提供丰富的算力资源与基础设施助力AI应用的开发、训练、部署。

官网链接:https://damodel.com/register?source=6B008AA9

平台的优势

  • 💡 超友好!

配备124G大内存和100G大空间系统盘,一键部署,三秒启动,让AI开发从未如此简单!

  • 💡 资源多!

从入门级到专业级GPU全覆盖,无论初级开发还是高阶应用,你的需求,我们统统Cover!

  • 💡 性能强!

自建IDC,全新GPU,每一位开发者都能体验到顶级的计算性能和专属服务,大平台值得信赖!

  • 💡 超实惠!

超低价格体验优质算力服务,注册即送优惠券!还有各类社区优惠活动,羊毛薅不停!

支持的GPU

不仅有常用的RTX 4090,还有 H800 PCle和H800 SXM这样的高端GPU,这些都是国内买不到的!

显卡显存-GB内存-GB/卡CPU-核心/卡存储简介
RTX 4090246011100G系统盘
50G数据盘
性价比配置,推荐入门用户选择,适合模型推理场景
RTX 40902412415100G系统盘
50G数据盘
性价比配置,推荐入门用户与专业用户选择,适合模型推理场景
H800 SXM8025227100G系统盘
50G数据盘
顶级配置,推荐专业用户选择,适合模型训练与模型推理场景
H800 PCle8012421100G系统盘
50G数据盘
顶级配置,推荐专业用户选择,适合模型训练与模型推理场景
L40S4812421100G系统盘
50G数据盘
专业级配置,推荐专业用户选择,适合模型训练与模型推理场景
P4024126100G系统盘
50G数据盘
性价比配置,推荐入门用户选择,适合模型推理场景

制作数据集

Labelme数据集

数据集选用我以前自己标注的数据集。下载链接:
https://download.csdn.net/download/hhhhhhhhhhwwwwwwwwww/63242994
类别如下: [‘c17’, ‘c5’, ‘helicopter’, ‘c130’, ‘f16’, ‘b2’,
‘other’, ‘b52’, ‘kc10’, ‘command’, ‘f15’, ‘kc135’, ‘a10’,
‘b1’, ‘aew’, ‘f22’, ‘p3’, ‘p8’, ‘f35’, ‘f18’, ‘v22’, ‘f4’,
‘globalhawk’, ‘u2’, ‘su-27’, ‘il-38’, ‘tu-134’, ‘su-33’,
‘an-70’, ‘su-24’, ‘tu-22’, ‘il-76’]

格式转换

将Lableme数据集转为yolov8格式的数据集,转换代码如下:

import os
import shutil

import numpy as np
import json
from glob import glob
import cv2
from sklearn.model_selection import train_test_split
from os import getcwd


def convert(size, box):
    dw = 1. / (size[0])
    dh = 1. / (size[1])
    x = (box[0] + box[1]) / 2.0 - 1
    y = (box[2] + box[3]) / 2.0 - 1
    w = box[1] - box[0]
    h = box[3] - box[2]
    x = x * dw
    w = w * dw
    y = y * dh
    h = h * dh
    return (x, y, w, h)


def change_2_yolo5(files, txt_Name):
    imag_name=[]
    for json_file_ in files:
        json_filename = labelme_path + json_file_ + ".json"
        out_file = open('%s/%s.txt' % (labelme_path, json_file_), 'w')
        json_file = json.load(open(json_filename, "r", encoding="utf-8"))
        # image_path = labelme_path + json_file['imagePath']
        imag_name.append(json_file_+'.jpg')
        height, width, channels = cv2.imread(labelme_path + json_file_ + ".jpg").shape
        for multi in json_file["shapes"]:
            points = np.array(multi["points"])
            xmin = min(points[:, 0]) if min(points[:, 0]) > 0 else 0
            xmax = max(points[:, 0]) if max(points[:, 0]) > 0 else 0
            ymin = min(points[:, 1]) if min(points[:, 1]) > 0 else 0
            ymax = max(points[:, 1]) if max(points[:, 1]) > 0 else 0
            label = multi["label"].lower()
            if xmax <= xmin:
                pass
            elif ymax <= ymin:
                pass
            else:
                cls_id = classes.index(label)
                b = (float(xmin), float(xmax), float(ymin), float(ymax))
                bb = convert((width, height), b)
                out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')
                # print(json_filename, xmin, ymin, xmax, ymax, cls_id)
    return imag_name

def image_txt_copy(files,scr_path,dst_img_path,dst_txt_path):
    """
    :param files: 图片名字组成的list
    :param scr_path: 图片的路径
    :param dst_img_path: 图片复制到的路径
    :param dst_txt_path: 图片对应的txt复制到的路径
    :return:
    """
    for file in files:
        img_path=scr_path+file
        print(file)
        shutil.copy(img_path, dst_img_path+file)
        scr_txt_path=scr_path+file.split('.')[0]+'.txt'
        shutil.copy(scr_txt_path, dst_txt_path + file.split('.')[0]+'.txt')


if __name__ == '__main__':
    classes = ['c17', 'c5', 'helicopter', 'c130', 'f16', 'b2',
               'other', 'b52', 'kc10', 'command', 'f15', 'kc135', 'a10',
               'b1', 'aew', 'f22', 'p3', 'p8', 'f35', 'f18', 'v22', 'f4',
               'globalhawk', 'u2', 'su-27', 'il-38', 'tu-134', 'su-33',
               'an-70', 'su-24', 'tu-22', 'il-76']

    # 1.标签路径
    labelme_path = "USA-Labelme/"
    isUseTest = True  # 是否创建test集
    # 3.获取待处理文件
    files = glob(labelme_path + "*.json")

    files = [i.replace("\\", "/").split("/")[-1].split(".json")[0] for i in files]
    for i in files:
        print(i)
    trainval_files, test_files = train_test_split(files, test_size=0.1, random_state=55)
    # split
    train_files, val_files = train_test_split(trainval_files, test_size=0.1, random_state=55)
    train_name_list=change_2_yolo5(train_files, "train")
    print(train_name_list)
    val_name_list=change_2_yolo5(val_files, "val")
    test_name_list=change_2_yolo5(test_files, "test")
    #创建数据集文件夹。
    file_List = ["train", "val", "test"]
    for file in file_List:
        if not os.path.exists('./VOC/images/%s' % file):
            os.makedirs('./VOC/images/%s' % file)
        if not os.path.exists('./VOC/labels/%s' % file):
            os.makedirs('./VOC/labels/%s' % file)
    image_txt_copy(train_name_list,labelme_path,'./VOC/images/train/','./VOC/labels/train/')
    image_txt_copy(val_name_list, labelme_path, './VOC/images/val/', './VOC/labels/val/')
    image_txt_copy(test_name_list, labelme_path, './VOC/images/test/', './VOC/labels/test/')

运行完成后就得到了yolov8格式的数据集。
在这里插入图片描述

本地调试

在官网上下载YoloV8,GitHub链接: GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite 或者直接执行命令pip install ultralytics,如果你打算修改模型,或者二次创新,不建议使用安装命令安装。

下载到本地后解压,将生成的yolo数据集放到datasets(需要创建datasets文件夹)文件夹下面,如下图:
在这里插入图片描述
安装必要的库文件,安装命令:

pip install opencv-python
pip install numpy==1.23.5
pip install pyyaml
pip install tqdm
pip install matplotlib

上面这些安装命令,缺哪些就安装哪些,注意numpy的版本,如果是2.0以上版本一定要把版本降下来。

然后在根目录新建VOC.yaml文件,如下图:
在这里插入图片描述

添加内容:

train: ./VOC/images/train # train images
val: ./VOC/images/val # val images
test: ./VOC/images/test # test images (optional)

names: ['c17', 'c5', 'helicopter', 'c130', 'f16', 'b2',
    'other', 'b52', 'kc10', 'command', 'f15', 'kc135', 'a10',
    'b1', 'aew', 'f22', 'p3', 'p8', 'f35', 'f18', 'v22', 'f4',
    'globalhawk', 'u2', 'su-27', 'il-38', 'tu-134', 'su-33',
    'an-70', 'su-24', 'tu-22', 'il-76']

然后新建train.py,如下图:
在这里插入图片描述

在train.py添加代码:

from ultralytics import YOLO
if __name__ == '__main__':
    # 加载模型
    model = YOLO("ultralytics/cfg/models/v8/yolov8l.yaml")  # 从头开始构建新模型
    print(model.model)

    # Use the model
    results = model.train(data="VOC.yaml", epochs=100, device='0', batch=16,workers=0)  # 训练模型

然后就可以看是训练了,点击run开始运行train.py。
在这里插入图片描述

基于丹摩智算的训练

创建账号,登录官网后,就可以看到主页面了。
在这里插入图片描述
点击GPU云实例,然后再点击创建实例,进入创建实例的页面。

在这里插入图片描述

付费类型:可以选择按量付费,也可以选择包日,包月等。根据自己的需求选择。
实例配置:可以选择GPU的数量,CPU的核数等信息来筛选列表的中配置。

选择具体的配置后,配置合适容量的数据盘。

在已选配置栏中,可以看到目前的详细配置信息。

在这里插入图片描述
接下来选择镜像,目前主流平台的框架都是支持的,选择Pytorch,就可以看到Pytorch的镜像信息。

在这里插入图片描述
点击创建密钥对,弹出创建密钥的窗口,创建密钥或者导入公钥!
在这里插入图片描述
点击立即创建就可以创建实例了。

在这里插入图片描述

我创建了一个P40的实例,因为4090被抢没了!等待一会就可以了!
在这里插入图片描述
创建好后,点击 JupyterLab 进入控制台。
在这里插入图片描述
将我们刚才创建的工程压缩成zip的压缩包,等待上传。
在这里插入图片描述

在这里插入图片描述
点击,文件夹样子的标签,进入根目录,然后点击,进入上传文件的页面。

在这里插入图片描述
选择文件,点击打开。
在这里插入图片描述

在这里插入图片描述
上传完成后,点击Terminal,就可以进入我们熟悉的命令行界面。
在这里插入图片描述
输入ls,就可以看到我们刚才上传的压缩包!

然后,输入:

unzip ultralytics-main.zip

解压文件,如下图:

在这里插入图片描述

解压后就可以在左侧的目录中看到解压后的文件夹。点击进入。

在这里插入图片描述
点击train.py,Open With→Editor。

在这里插入图片描述
打开train.py后就可以修改train.py里面的参数了。

安装YoloV8运行所需要的库:

pip install opencv-python

在这里插入图片描述
如果遇到ImportError: libGL.so.1: cannot open shared object file: No such file or direc,这样的错误,需要安装:

pip install opencv-python-headless
pip install pyyaml
pip install tqdm
pip install matplotlib
pip install pandas

如果遇到有些苦文件下载不下来,可以尝试设置源,命令:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

在这里插入图片描述
然后,执行命令,python train.py就可以运行了.

测试

test.py代码如下:

from ultralytics import YOLO


if __name__ == '__main__':
    # Load a model
    # model = YOLO('yolov8m.pt')  # load an official model
    model = YOLO('runs/detect/train/weights/best.pt')  # load a custom model
    results = model.predict(source="ultralytics/assets", device='0')  # predict on an image
    print(results)

在这里插入图片描述
执行测试,就可以测试图片了。

问题

在运行过程中卡死的问题

我在第二次测试的时候,遇到了卡死的情况。后来新建了python3.9的环境,安装了cuda11.3版本。切换到python3.9的虚拟环境,过了一段时间开始运行了。如果大家遇到卡死的情况,可以尝试更换版本。并将问题反映给官方,查一下问题。

优惠活动

h800上线了,全场最低价,链接:https://damodel.com/register?source=6B008AA9
在这里插入图片描述

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

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

相关文章

Java 延迟消息

场景 6S后执行任务 7天后发送订单 从现有时间算延后多少时间开始执行&#xff0c;当然也可以转换为在以后某个时间执行。 Timer类 Java中的Timer类是一个定时器&#xff0c;它可以用来实现延时消息的功能。 import java.util.Timer; import java.util.TimerTask;public c…

uniapp微信小程序本地和真机调试文件图片上传成功但体验版不成功

文章目录 导文是因为要添加服务器域名&#xff01; 导文 uniapp微信小程序本地和真机调试文件图片上传成功但体验版不成功 uniapp微信小程序体验版上传图片不成功 微信小程序本地和真机调试文件图片上传成功但体验版不成功 是因为要添加服务器域名&#xff01; 先看一下 你小程…

android13 第三方桌面不能使用后台历史任务问题 任务键功能失效问题

总纲 android13 rom 开发总纲说明 目录 1.前言 2.复现现象 3.问题分析 4.解决方法 5.编译运行 6.彩蛋 1.前言 随着Android 13操作系统的发布,用户现在可以更加自由地选择和使用第三方Launcher来定制自己的设备。本文将介绍在Android 13上安装和使用第三方Launcher导致…

工信部哪些证书可以考,含金量高吗

随着科技的快速发展和行业的不断变化&#xff0c;市场对人才的需求也在不断更新。技能提升可以帮助个人适应这些变化&#xff0c;满足新的岗位要求。同时学习新技能可以拓宽思维&#xff0c;激发创新意识&#xff0c;帮助我们在工作中找到新的解决方案。 泰迪智能科技专注…

楼宇智能化仿真实训室解决方案

在信息技术的浪潮中&#xff0c;智慧城市作为未来城市发展的新形态&#xff0c;正以前所未有的速度在全球范围内兴起。其中&#xff0c;楼宇智能化作为智慧城市的关键构成&#xff0c;扮演着举足轻重的角色。它不仅提升了建筑的能源效率、安全性与舒适度&#xff0c;还促进了城…

SQL Server 端口配置

目录 默认端口 更改端口 示例&#xff1a;更改 TCP 端口 示例&#xff1a;验证端口设置 远程连接测试 示例&#xff1a;使用 telnet 测试连接 配置防火墙 示例&#xff1a;Windows 防火墙设置 远程连接测试 示例&#xff1a;使用 telnet 测试连接 默认端口 TCP/IP: …

【Github】Github 上commit后 contribution 绿格子不显示 | Github绿格子 | Github贡献度不显示

一、Github 消失的绿点 1、贡献值为什么没了&#xff1f; 2、选择要显示的贡献 如下配置 二、如何解决消失的绿点&#xff1f; 1、添加邮箱 确保邮箱的设置必须选择一个邮箱邮箱 2、git config 添加邮箱 设置邮箱如下&#xff1a; git config --local user.email 316434776…

Tomcat IntelliJ IDEA整合

一、下载及安装Tomcat 下载官网&#xff1a;Apache Tomcat - Welcome! 1.点击红色框中的任意一个版本 2.点击下载 3.解压后放在任意路径&#xff08;我的是放在D盘&#xff09; 4.在bin目录下找到startup.bat&#xff0c;点击启动Tomcat 5.如果双击启动后&#xff0c;终端出…

NC 缺失的第一个正整数

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 给定一个无重…

无人机之交通管理篇

无人机技术已经渗透到社会的各个领域&#xff0c;其中交通监控与管理便是其应用的重要方向之一。无人机凭借其独特的优势&#xff0c;如高效性、灵活性、实时性等&#xff0c;为交通监控与管理带来了革命性的变革。 一、无人机在交通监控中的应用 1、实时监控与数据采集 无人…

cdga|数据治理策略:击破壁垒,迈向纵向一体化的新纪元

在当今这个数据驱动的时代&#xff0c;企业数据的价值日益凸显&#xff0c;它不仅是企业决策的重要依据&#xff0c;更是推动业务创新、优化运营流程、增强市场竞争力的关键要素。然而&#xff0c;随着数据量的爆炸性增长和数据来源的多样化&#xff0c;企业面临着数据孤岛、数…

时常在面试中被问到的JVM问题

文章目录 JVM 和 JDK、JRE 有什么区别&#xff1f;JVM 是如何工作的&#xff1f;JVM 主要组件JVM 执行流程JVM 的工作示例 说一下类加载机制类加载器&#xff08;Class Loader&#xff09;示例 什么是双亲委派模型&#xff1f;&#xff08;Parent Delegation Model&#xff09;…

时间同步的原理

1.问题来源&#xff1a; 设备A想要给设备B同步时间&#xff0c;最直接的办法&#xff0c;A发送当前时间到B&#xff0c;但这个问题会带来一些问题。 1.1 例子&#xff1a; 设备A&#xff08;后面叫Master设备&#xff09;现在拥有准确时间9点整, 设备B&#xff08;后面叫Sla…

TL-SEJ 方法:有效对抗语音伪造攻击

关键词&#xff1a;语音增强、迁移学习、模型鲁棒性、U-Net模型 随着人工智能技术的快速发展&#xff0c;基于深度学习的语音转换&#xff08;Voice Conversion, VC&#xff09;和文本到语音&#xff08;Text-to-Speech, TTS&#xff09;技术取得了显著的进步。这些语音合成技术…

性价比最高的蓝牙耳机有哪些推荐?四款高性价比蓝牙耳机盘点

目前蓝牙耳机已成为我们日常出行、工作乃至休闲娱乐的必备伴侣&#xff0c;它们不仅让我们摆脱了线缆的束缚&#xff0c;更以卓越的音质、高效的降噪能力和舒适的佩戴体验&#xff0c;极大地提升了我们的听觉享受&#xff0c;不过市面上耳机众多&#xff0c;性价比最高的蓝牙耳…

巴黎奥运会 为啥这么抠?

文&#xff5c;琥珀食酒社 作者 | 朱珀 你是不是挺无语的 这奥运会还没有开始呢 吐槽大会就停不下来了 接近40度的高温 公寓没有空调 奥运巴士也没空调 连郭晶晶老公霍启刚 这种见惯大场面的也破防了 你可能会问 好不容易搞个奥运会 干嘛还要抠抠搜搜的呀 在咱们看…

AI定制招聘策略:企业、候选人与市场三者融合之道

一、引言 在数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;已成为企业招聘的重要工具&#xff0c;能够根据企业需求、候选人特征和市场趋势制定个性化招聘策略。本文旨在探讨AI在招聘过程中的应用&#xff0c;分析它如何精准匹配企业与候选人&#xff0c;从而提高招…

根据空域图信息构造飞机航线图以及飞行轨迹模拟matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 航路网络建模 4.2 航线图构建 4.3 飞行轨迹模拟的具体步骤 5.完整程序 1.程序功能描述 空域图是指航空领域中的一种图形表示方式&#xff0c;它涵盖了空中交通管理所需要的各种信息&a…

Studying-代码随想录训练营day48| 739. 每日温度、496.下一个更大元素 I、503.下一个更大元素II

第48天&#xff0c;单调栈part01&#xff0c;栈的特殊应用场所&#xff01;编程语言&#xff1a;C 目录 739. 每日温度 496.下一个更大元素 I 503.下一个更大元素II 总结&#xff1a; 739. 每日温度 文档讲解&#xff1a;代码随想录每日温度 视频讲解&#xff1a;手撕每日…

龙迅LT8711GX 高性能Type-C/DP1.4/EDP转HDMI2.1转换器,内置MCU,支持8K30HZ

龙迅LT8711GX描述&#xff1a; LT8711GX是一个高性能的Type-C/DP1.4a到HDMI2.1转换器&#xff0c;设计用于连接一个USB Type-C源或一个DP1.4a源到一个HDMI2.1接收器。LT8711GX集成了一个与DP1.4a兼容的接收器&#xff0c;和一个与HDMI2.1兼容的发射机。此外&#xff0c;还包括…