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 YOLOif __name__ == "__main__":# 加载刚刚训练好的模型地址(注意路径!)model = YOLO('runs/detect/train6/weights/best.pt') # Validate the modelmetrics = 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 rememberedprint(f"mAP50-95: {metrics.box.map}") # map50-95print(f"mAP50: {metrics.box.map50}")  # map50print(f"mAP75: {metrics.box.map75}")  # map75

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

(3)推理

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

from ultralytics import YOLOif __name__ == "__main__":# 加载刚刚训练好的模型地址,注意路径!model = YOLO("runs/detect/train6/weights/best.pt")  # Predict with the modelresults = 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博客

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

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

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

相关文章

OnlyOffice:现代办公的最佳选择

目录 安装 使用 评价 对比(与WPS) 总结 在当今的数字化办公时代,选择一款功能全面且易于使用的办公软件至关重要。OnlyOffice作为一款现代化的办公软件,凭借其强大的功能和友好的用户体验,逐渐成为了众多企业和个…

无线麦克风哪个品牌音质最好,一文告诉你无线领夹麦克风怎么挑选

随着直播带货和个人视频日志(Vlog)文化的兴起,以及自媒体内容创作的蓬勃发展,我们见证了麦克风行业的迅猛发展。在这一浪潮中,无线领夹麦克风以其无与伦比的便携性和操作效率,迅速赢得了广大视频制作者的喜…

前端HTML/CSS知识点系列

1. 什么是块级格式化上下文?【BFC(Block formatting context)】 BFC(Block FormattingContext,块级格式化上下文)是一个独立的渲染区域,其中的元素的布局不会受到外部元素的影响,反之亦然。BFC的创建有助于…

docker环境部署ruoyi系统前后端分离项目

创建局域网 docker network create net-ry 安装Redis 1 安装 创建两个目录 mkdir -p /data/redis/{conf,data} 上传redis.conf文件到/data/redis/conf文件夹中 cd /data/redis/conf 3.2 配置redis.conf文件 配置redis.conf文件: redis.conf文件配置注意&…

轻松两步,借助向量数据库 VectorDB 与千帆 Appbuilder 构建个性化本地问答知识库

在我们日常的工作和生活中,经常会遇到需要快速获取和管理大量信息的情况。无论是解答客户的问题,还是整理公司内部的资料,一个高效的知识库系统都能帮我们省下大量时间和精力。 为了帮助大家快速构建 RAG 应用,我们之前发布了一个…

虚拟机中VSCode+gcc环境配置

一、安装VSCode 1、在官网下载软件包: 地址:Documentation for Visual Studio Code 2、下载后在放置deb包的文件夹直接打开终端,然后输入sudo dpkg -i code_1.90.2-1718751586_amd64.deb 3、安装成功提示,并显示该图标 二、配…

nginx+keepalived+tomcat集群实验

如遇星河 | nginx+keepalived高可用集群实验 木子87 | Keepalived+Nginx+Tomcat 实现高可用Web集群 环境 192.168.40.204 tomcat-1 192.168.40.138 tomcat-2 安装tomcat [root@bogon local]# vim /etc/profile 添加环境变量 JAVA_HOME=/usr/local/java PATH=$J…

mac 常用工具命令集合

一、vim 快捷键 1、移动光标 h j k l 左 下 上 右 箭头上 上移一行 箭头下 下移一行 0 跳至行首,不管有无缩进,就是跳到第0个字符 ^ 跳至行首的第一个字符 $ 跳至行尾 gg 跳至文首 G 调至文尾 5gg/5G 调至第5行w 跳到下一个字首,按标点或…

微信小程序学习(十):生命周期

1、应用生命周期 生命周期说明onLaunch监听小程序初始化,全局只会执行 1 次onShow监听小程序启动或切前台onHide监听小程序切后台 🔗应用生命周期官方文档 App({/*** 当小程序初始化完成时,会触发 onLaunch(全局只触发一次&…

固特超声波清洗机怎么样?三大超声波清洗机美的、固特、希亦谁更好?

眼镜是我们日常生活中不可或缺的用具,但随着使用时间的增长,眼镜上的灰尘和污垢也会逐渐积累,传统的清洗方法往往难以彻底清洁。为了解决这一难题,超声波清洗机出现了!它利用超声波振动原理,可以轻松、快速…

加载资源文件失败

背景 自己以前装了一个海康的深度学习算法平台,试用期是一个月,过了一个月之后,因为没有有效注册码或者加密狗的支持了导致无法使用,于是打算卸载掉,在卸载一个软件的时候,无论是使用控制面板还是软件自带的…

AI写文章生成器,这些工具都可以一键智能生成文章

在AI技术快速发展的今天,AI写作生成器成为我们创作内容的重要工具,它可以提高我们的写作效率,节省时间和精力。下面小编就来和大家分享几款优秀的AI写作生成器,帮助你快速生成高质量的文章。 1.专业AI写作工具-文章在线生成器 专…

计算机网络 访问控制列表以及NAT

一、理论知识 1. 单臂路由 单臂路由是一种在路由器上配置多个子接口的方法,每个子接口代表不同的 VLAN,用于在一个物理接口上支持多 VLAN 通信。此方法使得不同 VLAN 之间可以通过路由器进行通信。 2. NAT (网络地址转换) NAT 是一种在私有网络和公共…

步步精科技诚邀您参加2024慕尼黑上海电子展

尊敬的客户: 我们诚挚地邀请您参加即将于2024年7月8日至7月10日在上海新国际博览中心举办的2024慕尼黑上海电子展(electronica China)。此次展会汇聚了国内外优秀企业,展示从元器件到系统集成方案的完整产品链,为各行…

linux 下配置docker mirrors

一、配置mirrors vi /etc/docker/daemon.json {"registry-mirrors": ["https://docker.blfrp.cn"],"log-opts": {"max-size": "10m","max-file": "3"} }#完成配置后重启docker systemctl restart dock…

自学指南:必备书籍清单--近100本R语言及生物信息相关书籍

R语言是一种功能丰富的编程语言,数据处理、统计分析是大家所熟知的基本功能。开源免费、活跃的全球社区、灵活可扩展等优点促使R语言飞速发展。目前,CRAN 软件包存储库包含 20446 个可用软件包,涵盖了从生物信息到金融分析等广泛的应用领域。…

【uniapp】uniapp开发微信小程序入门教程

HBuilderx中uniapp开发微信小程序入门教程 一、 环境搭建 1. HBuilderx下载安装 HBuilderx下载安装地址 2. 微信开发者工具下载安装 微信开发者工地址具下载安装 二、创建uniapp项目 选择:文件>新建>项目>uni-app 输入项目名称>选择默认模板>…

【面试干货】Java方法重载规则

【面试干货】Java方法重载规则 1、方法重载的规则和注意事项1.1 方法名必须一致1.2 参数列表必须不同1.3 代码示例1.4 与方法的返回值无关1.5 存在于父类和子类或同类中1.6 可以抛出不同的异常1.7 可以有不同的修饰符 2、注意事项3、总结 💖The Begin💖点…

VLAN单臂路由

1、搭建网络 搭建拓扑、规划IP、划分网段 2、交换机配置 配置脚本(设置trunk和创建vlan很重要) Switch>enable Switch#conf t Enter configuration commands, one per line. End with CNTL/Z.//创建vlan20 Switch(config)#vlan 20 Switch(config…

如何区分应用所在的运行环境?

常见的应用运行环境主要有:物理机、虚拟机、容器或 K8s,那么如何确定应用运行在哪种未知环境下呢?本文主要介绍如何通过一种简单方式来判断应用当前所在的运行环境。 1 物理机 物理机和虚拟机因为都是完整的操作系统。因此可以用dmidecode来…