Docker搭建yolov8并训练自己的数据集(包会)

本文通过docker的方式搭建yolov8运行环境,并成功训练了自己的数据集(化学仪器数据集)。

目录

1、安装docker

2、创建yolov8镜像

3、下载代码包

4、下载模型预训练权重

5、制作数据集

6、训练及验证数据集


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![](https://img-blog.csdnimg.cn/direct/1d998c3671264890966f01eae1580ef4.png)

然后将下载好的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)

names:
  0: beaker
  1: Triangular_flask

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

6、训练及验证数据集

进入容器,其中端口映射可以改成你服务器空闲端口号,/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=100, batch=4, lr0=0.01,resume=True, workers=0 )

然后运行:

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

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

最后结果会保存在runs/detect/train文件夹下。

至此,通过docker容器使用yolov8训练自己的数据集就完成啦,如果想要验证,可以再写一个验证脚本val.py,代码如下:

复制代码
from ultralytics import YOLO

# Load a model
model = YOLO('runs/detect/train/weights/best.pt')  # load a pretrained model (recommended for training)
# Train the model
model.val(data='datasets/chemical/chemical.yaml', epochs=100, batch=4, lr0=0.01, workers=0 )

然后再python val.py即可成功!结果同样在runs/detect/val文件夹下。

相关推荐
知来者逆18 小时前
YOLO目标检测应用——基于 YOLOv8目标检测和 SAM 零样本分割实现指定目标分割
yolo·目标检测·计算机视觉·图像分割·sam·yolov8
量子-Alex20 小时前
顶刊【遥感目标检测】【TGRS】LSKF-YOLO:面向高分辨率卫星遥感影像电力塔检测的大规模选择性核特征融合网络
人工智能·yolo·目标检测
深度学习lover2 天前
<数据集>苹果识别数据集<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果识别
云卷云舒___________2 天前
✅ Ultralytics YOLO 训练(Train)时实时获取 COCO 指标(AP):2025最新配置与代码详解 (小白友好 + B站视频)
人工智能·深度学习·yolo·模型训练·ultralytics·cocoapi·cooc指标
Coovally AI模型快速验证3 天前
告别水下模糊!SU-YOLO:轻量化+尖峰神经网络,用“类脑计算”实现水下目标毫秒级识别
人工智能·深度学习·神经网络·算法·yolo·机器学习·重构
MR_Colorful3 天前
YOLOv11改进 | YOLOv11引入MobileNetV4
yolo
云卷云舒___________4 天前
✅ Ultralytics YOLO验证(Val)时自动输出COCO指标(AP):2025最新配置与代码详解 (小白友好 + B站视频)
人工智能·yolo·模型评估·指标·ultralytics·coco api·pycocotools
承前智4 天前
基于pycharm的YOLOv11模型训练方法
ide·yolo·pycharm
LeeZhao@4 天前
【AGI】Llama4:大模型与多模态领域的里程碑,通往AGI的阶梯
人工智能·yolo·计算机视觉·aigc·agi
unix2linux4 天前
YOLO v5 Series - HTTP-FLV - FFmpeg & (HTML5 + FLV.js ) & (PyAV)
yolo·http·ffmpeg