Docker搭建yolov8并训练、验证、推理化学仪器数据集

目录

1、安装docker

2、创建yolov8镜像

3、下载代码包

4、下载模型预训练权重

5、制作数据集

6、训练、验证及推理

(1)训练

(2)验证

(3)推理

中文标签显示问题


本文通过docker的方式搭建yolov8运行环境,并成功训练了化学仪器数据集,其中训练数据215张,验证数据65张,推理数据10张,类别一共14。

1、安装docker

在一台通往的服务器上安装docker,建议参考我之前的文章:Docker基础学习-CSDN博客

2、创建yolov8镜像

首先编写Dockerfile文件(为啥不用yolov8自带的Dockerfile文件,主要是因为试过但报错太多,不好解决,所以换一种风险低的方式),内容如下所示:

# 使用与CUDA 11.2兼容的PyTorch官方镜像作为基础镜像
# 使用nvidia-smi查看服务器CUDA 版本,然后参考PyTorch官方说明来选择合适的镜像,否则会出错!
FROM pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime

# 所需要的包
RUN pip install scipy -i https://mirrors.aliyun.com/pypi/simple
RUN pip install numpy -i https://mirrors.aliyun.com/pypi/simple
RUN pip install matplotlib -i https://mirrors.aliyun.com/pypi/simple
RUN pip install tqdm -i https://mirrors.aliyun.com/pypi/simple
RUN pip install PyYAML -i https://mirrors.aliyun.com/pypi/simple
RUN pip install Pillow -i https://mirrors.aliyun.com/pypi/simple
RUN pip install opencv_python -i https://mirrors.aliyun.com/pypi/simple
RUN pip install tensorboard -i https://mirrors.aliyun.com/pypi/simple
RUN pip install h5py -i https://mirrors.aliyun.com/pypi/simple
RUN pip install Seaborn -i https://mirrors.aliyun.com/pypi/simple
RUN pip install ultralytics -i https://mirrors.aliyun.com/pypi/simple
RUN pip install yolo -i https://mirrors.aliyun.com/pypi/simple

然后依次运行以下脚本:

[root@hcs my_docker]# pwd
/data/ai/my_docker

[root@hcs my_docker]# ls
Dockerfile

[root@hcs my_docker]#  docker build -t yolov8 .

出现了successful时说明镜像创建成功。

3、下载代码包

下载地址:https://github.com/ultralytics/ultralytics

4、下载模型预训练权重

我选择了yolov8n的预训练权重,地址:https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt

然后将下载好的yolov8n.pt放在ultralytics-main代码包文件夹下,如下所示:

5、制作数据集

拍摄化学仪器照片,并对图片进行剪裁、旋转、降噪等操作,增加样本数量。图片保存的位置很有讲究,将采集的图片数据集放在ultralytics-main文件夹的datasets下面的images文件夹,分为train和val,都要放入图片。如下所示(命名一致):

然后使用LabelImg工具进行数据标注,打开cmd或者conda虚拟环境下安装:

C:\Users\coke> pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple 

等待下载安装成功之后,继续输入以下代码打开labelimg。

C:\Users\coke> labelimg

上传的文件夹就是刚刚/data/ai/ultralytics-main/datasets/chemical/images/train文件夹,保存就是

/data/ai/ultralytics-main/datasets/chemical/labels/train文件夹,一一对应,验证集也是如此。其中Create RectBox就是标记识别方框,然后对每张图片标记得到相应的标签文本,如下图所示。

最后编写chemical.yaml文件,注意path路径写绝对路径,names代表分类,我的数据集分为两类,因此就是0:类别1,1:类别2,2:类别3....以此类推。

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: /data/ai/ultralytics-main/datasets/chemical # dataset root dir
train: images/train # train images (relative to 'path') 128 images
val: images/val # val images (relative to 'path') 128 images
test: # test images (optional)

nc: 14
names:
  ['烧杯',
   '三角烧瓶',
   '三角漏斗',
   '试管',
   '分液漏斗',
   '蒸发皿',
   '量筒',
   '酒精灯',
   '托盘天平',
   '坩埚',
   '胶头滴管',
   '玻璃棒',
   '滴瓶',
   '冷凝管'
  ]

至此,数据集准备结束,如下所示:

6、训练、验证及推理

(1)训练

进入容器,其中端口映射可以改成你服务器空闲端口号,/data/ai/ultralytics-main换成你ultralytics-main文件夹地址,yolov8换成你容器名称。

[root@hcs ~]# docker run --gpus all --ipc=host -p 8888:8888 -v /data/ai/ultralytics-main:/data/ai/ultralytics-main -it yolov8 /bin/bash

在ultralytics-main文件夹下,按理说运行终端命令yolo detect train data=datasets/chemical/chemical.yaml model=yolov8n.yaml pretrained=./yolov8n.pt epochs=100 batch=4 lr0=0.01 resume=True就能成功运行,但是提示yolo没有detect命令等相关错误,因此查询yolo官网,我换成以python脚本的形式来进行训练。

在ultralytics-main文件夹下新建train.py,代码如下:

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.yaml')  # load a pretrained model (recommended for training)
model.load('yolov8n.pt')
# Train the model
model.train(
    data='datasets/chemical/chemical.yaml',
    epochs=200,
    batch=16,
    workers=2,
    device=0,
    imgsz=(640,640),
    lr0=0.01,
    resume=True,
    )

然后运行:

root@8cb5eda9707f:/data/ai/ultralytics-main# python train.py 

出现下面的界面就表示运行成功:

最后结果会保存在runs/detect/train文件夹下(因训练的次数而异)。

至此,通过docker容器使用yolov8训练自己的数据集就完成啦~

(2)验证

验证脚本val.py,代码如下:

from ultralytics import YOLO

if __name__ == "__main__":
    # 加载刚刚训练好的模型地址(注意路径!)
    model = YOLO('runs/detect/train6/weights/best.pt') 
    # Validate the model
    metrics = model.val(
        val = True,
        data = 'datasets/chemical/chemical.yaml',
        split = 'val',
        batch = 4,
        imgsz = (640,640),
        workers = 2,
        device = 0
            )  # no arguments needed, dataset and settings remembered
    print(f"mAP50-95: {metrics.box.map}") # map50-95
    print(f"mAP50: {metrics.box.map50}")  # map50
    print(f"mAP75: {metrics.box.map75}")  # map75

然后再python val.py即可成功!结果在runs/detect/val2文件夹下(因实际情况而异)。

(3)推理

推理脚本detect.py,代码如下:

from ultralytics import YOLO

if __name__ == "__main__":
    # 加载刚刚训练好的模型地址,注意路径!
    model = YOLO("runs/detect/train6/weights/best.pt")  

    # Predict with the model
    results = model(
        source = "/data/ai/ultralytics-main/datasets/chemical/pre_img",
        save=True,
        imgsz=640,
        conf=0.5)  # 用于检测的目标置信度阈值(默认为0.25,用于预测,0.001用于验证

然后再python detect.py即可成功!

中文标签显示问题

参考文章:

YOLOv5,v8中文标签显示问题_yolo8中文标签-CSDN博客

YOLOv8中文标签显示不了如何解决_yolov8混淆矩阵中文标签-CSDN博客

SimHei字体(永久有效)_simhei字体怎么下载-CSDN博客

下篇文章将介绍输出文件以及各个指标分别代表什么意思。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言入门课程学习笔记10:结构体联合体位域

C语言入门课程学习笔记10 第48课 - 自定义数据类型(上)实验-typedef实验小结 第49课 - 自定义数据类型(中)实验实验小结 第50课 - 自定义数据类型(下)实验实验小结 第51课 - 多文件程序设计实验实验实验小结…

python项目加密和增加时间许可证

1.bat,执行如下的命令,第一句是更新或增加许可证 第二句是加密draw_face.py python offer.py pyarmor obfuscate -O dist draw_face.py绘制自制人脸.py,调用加密的代码draw_face代码 import sys import os import cv2# 添加加密模块所在的路…

[MYSQL] 数据库基础

1.什么是数据库 从数据库的名字可以看出,它是用来操作(增删查改....)数据的,事实上也的确如此,通过数据库,我们可以更方便.更高效的来操作.管理数据 以文件形式存储数据的缺点 文件的安全问题文件不利于数据的查询和删除文件不利于存储海量数据操作文件并不方便 为了解决上述问…

煤矿运输新篇章:数字孪生模型引领智能化转型

在科技日新月异的今天,煤矿行业也迎来了前所未有的发展机遇。在这个充满挑战与机遇的时代,煤矿运输数字孪生模型以其独特的魅力和巨大的潜力,引领着煤矿运输领域走向智能化、高效化的新时代。 数字孪生模型,就是在虚拟世界中构建一…

喜讯:ISO年度审核通过!

在数字化时代,质量是我们不变的追求。近日,矩阵起源迎来了一个值得庆祝的时刻——三项ISO体系年度考核顺利通过!分别为:ISO9001 质量管理体系标准认证、ISO20000信息技术服务管理体系认证及ISO27001 信息安全管理体系认证。 ISO标…

【分布式事务】分布式事务理论

CAP 理论 一致性(Consistency) 分布式系统中所有数据备份,在同一时刻是否是同样的值 可用性(Availability) 集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求 分区容错性(Partit…

移动硬盘损坏无法读取:故障解析与数据恢复策略

一、现象描述:移动硬盘损坏无法读取的困境 在数字化时代,移动硬盘作为数据存储的重要工具,广泛应用于个人和企业中。然而,当移动硬盘突然损坏,无法被系统正常读取时,往往会带来极大的困扰。用户可能会遇到…

《2024天猫618大促-首波男装销售报告》

这份报告主要分析了2024年天猫618大促期间的首波男装销售情况,从多个维度进行了深入的复盘和分析。报告中不仅包含了销售数据的统计分析,还对消费者行为、品牌表现、产品趋势等方面进行了详细的解读。通过对这些数据和信息的深入挖掘,报告揭示了当前男装市场的一些重要趋势和特…

冻干食品市场飙升至新高度,预计到 2030 年将达到 717 亿美元

冻干食品市场,近年来经历了显著增长,2021 年价值 372 亿美元,预计到 2030 年将达到 717 亿美元。 从2022年到2030年,这一强劲的扩张是由7.7%的复合年增长率推动的,这是由于多种因素造成的,包括食品加工行…

Linux命令重温

目录 Linux安装基础命令lsllcdpwdmkdirrmdirtouchcpmvrmvi/vim>和>>catheadlessmoretailechoclearwhich 进阶命令其他命令 Linux安装 通过vmware设置模拟硬件环境安装centos系统进行相应的网络配置安装xshell bin 存放二进制可执行文件(ls,cat,mkdir等) boot 存放用…

【STM32+FPGA】先进算力+强安全+边缘AI,64位STM32MP2聚焦工业4.0应用

工业应用数字化和智能化程度,是衡量新质生产力的重要标准。STM32最新一代64位微处理器STM32MP2凭借先进算力、丰富接口和高安全性,为高性能和高度互联的工业4.0应用赋能。 STM32MP2四大关键特性,为工业4.0应用赋能 STM32MP2系列的第一颗产品S…

Java项目:基于SSM框架实现的电子竞技管理平台【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的电子竞技管理平台 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能…

【Python时序预测系列】基于LSTM实现单变量时序序列多步预测(案例+源码)

这是我的第307篇原创文章。 一、引言 单站点单变量输入单变量输出多步预测问题----基于LSTM实现。 单输入就是输入1个特征变量 单输出就是预测出1个标签的结果 多步就是利用过去N天预测未来M天的结果 二、实现过程 2.1 读取数据集 # 读取数据集 data pd.read_csv(data.c…

超级内卷时代,这样做,刻不容缓

分享一个月入十万的赚钱项目 别再抱怨手上项目不好做,生意不好做了,这只是个开始,长远来看,2024应该是未来几年中经济环境最好的一年,我们所有人都已经进入到“超级内卷”时代! 随着竞争环境越来越激烈&…

欢乐钓鱼大师游戏攻略:内置免费辅助工具的云手机!自动钓鱼!

《欢乐钓鱼大师》是一款极具趣味性和挑战性的钓鱼模拟游戏,玩家可以在虚拟的世界中体验到真实钓鱼的乐趣。本文将详细介绍游戏的各个方面,包括基本操作、鱼种识别、装备选择、技巧提升等,帮助玩家快速上手并逐步提升钓鱼技能。 《欢乐钓鱼大师…

010-基于Sklearn的机器学习入门:聚类(上)

本节及后续章节将介绍深度学习中的几种聚类算法,所选方法都在Sklearn库中聚类模块有具体实现。本节为上篇,将介绍几种相对基础的聚类算法,包括K-均值算法和均值漂移算法。 目录 10.1 聚类概述 10.1.1 聚类的种类 10.1.2 Sklearn聚类子模…

前年升2区,去年升TOP,目前扩刊中,投稿难度较小,这本SSCI可纳入考虑~

【SciencePub学术】今天给大家推荐的是一本经济管理领域的SSCI,大家都称之为TOP刊中的易中“水刊”。据说很多人已经靠信息差吃上了这本TOP刊的红利,接下来给大家解析一下这本期刊。 《Socio-Economic Planning Sciences》是一本国际性的学术期刊&#x…

数据分析:微生物组差异丰度方法汇总

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2 介绍 微生物数据具有一下的特点,这使得在做差异分析的时候需要考虑到更多的问题&…

文本批量高效编辑神器:空格秒变分隔符,提升工作效率

在信息爆炸的时代,文本处理已成为我们日常工作中不可或缺的一部分。然而,面对海量的文本数据,如何高效、准确地进行编辑和整理,成为了我们面临的难题。今天,我要向大家介绍一款文本批量高效编辑神器——首助编辑高手&a…

员工不会写OKR,有没有好的方法可以帮助他们?

在做 OKR 辅导的过程中,我发现很多公司在 OKR 制定的环节出现了问题,比如目标的方向不清晰、关键结果不如何 SMART 原则、描述冗长复杂、不够聚焦等。他们可能会认为刚刚开始推行,制定上出现一些问题无伤大雅,但这会对之后的 OKR …