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

打印 上一主题 下一主题

主题 1097|帖子 1097|积分 3291

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目录
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文件,重要是由于试过但报错太多,不好解决,所以换一种风险低的方式),内容如下所示:
  1. # 使用与CUDA 11.2兼容的PyTorch官方镜像作为基础镜像
  2. # 使用nvidia-smi查看服务器CUDA 版本,然后参考PyTorch官方说明来选择合适的镜像,否则会出错!
  3. FROM pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime
  4. # 所需要的包
  5. RUN pip install scipy -i https://mirrors.aliyun.com/pypi/simple
  6. RUN pip install numpy -i https://mirrors.aliyun.com/pypi/simple
  7. RUN pip install matplotlib -i https://mirrors.aliyun.com/pypi/simple
  8. RUN pip install tqdm -i https://mirrors.aliyun.com/pypi/simple
  9. RUN pip install PyYAML -i https://mirrors.aliyun.com/pypi/simple
  10. RUN pip install Pillow -i https://mirrors.aliyun.com/pypi/simple
  11. RUN pip install opencv_python -i https://mirrors.aliyun.com/pypi/simple
  12. RUN pip install tensorboard -i https://mirrors.aliyun.com/pypi/simple
  13. RUN pip install h5py -i https://mirrors.aliyun.com/pypi/simple
  14. RUN pip install Seaborn -i https://mirrors.aliyun.com/pypi/simple
  15. RUN pip install ultralytics -i https://mirrors.aliyun.com/pypi/simple
  16. RUN pip install yolo -i https://mirrors.aliyun.com/pypi/simple
复制代码
然后依次运行以下脚本:
  1. [root@hcs my_docker]# pwd
  2. /data/ai/my_docker
  3. [root@hcs my_docker]# ls
  4. Dockerfile
  5. [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假造环境下安装:
  1. C:\Users\coke> pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码
等待下载安装成功之后,继承输入以下代码打开labelimg。
  1. 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....以此类推。
  1. # 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, ..]
  2. path: /data/ai/ultralytics-main/datasets/chemical # dataset root dir
  3. train: images/train # train images (relative to 'path') 128 images
  4. val: images/val # val images (relative to 'path') 128 images
  5. test: # test images (optional)
  6. nc: 14
  7. names:
  8.   ['烧杯',
  9.    '三角烧瓶',
  10.    '三角漏斗',
  11.    '试管',
  12.    '分液漏斗',
  13.    '蒸发皿',
  14.    '量筒',
  15.    '酒精灯',
  16.    '托盘天平',
  17.    '坩埚',
  18.    '胶头滴管',
  19.    '玻璃棒',
  20.    '滴瓶',
  21.    '冷凝管'
  22.   ]
复制代码
至此,数据集预备竣事,如下所示:


6、练习、验证及推理

(1)练习

进入容器,其中端口映射可以改成你服务器空闲端标语,/data/ai/ultralytics-main换成你ultralytics-main文件夹地址,yolov8换成你容器名称。
  1. [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,代码如下:
  1. from ultralytics import YOLO
  2. # Load a model
  3. model = YOLO('yolov8n.yaml')  # load a pretrained model (recommended for training)
  4. model.load('yolov8n.pt')
  5. # Train the model
  6. model.train(
  7.     data='datasets/chemical/chemical.yaml',
  8.     epochs=50,   # 根据数据量调整
  9.     batch=4,   # 根据实际调整
  10.     workers=2,
  11.     device=0,
  12.     imgsz=(640,640),
  13.     lr0=0.01,
  14.     resume=True,
  15.     )
复制代码
wq生存退出后,运行python train.py,出现下面的界面就表示运行成功:



末告终果会生存在runs/detect/train文件夹下(因练习的次数而异)。

至此,通过docker容器利用yolov8练习自己的数据集就完成啦~
(2)验证

验证脚本val.py,代码如下:
  1. from ultralytics import YOLO
  2. if __name__ == "__main__":
  3.     # 加载刚刚训练好的模型地址(注意路径!)
  4.     model = YOLO('runs/detect/train6/weights/best.pt')
  5.     # Validate the model
  6.     metrics = model.val(
  7.         val = True,
  8.         data = 'datasets/chemical/chemical.yaml',
  9.         split = 'val',
  10.         batch = 4,
  11.         imgsz = (640,640),
  12.         workers = 2,
  13.         device = 0
  14.             )  # no arguments needed, dataset and settings remembered
  15.     print(f"mAP50-95: {metrics.box.map}") # map50-95
  16.     print(f"mAP50: {metrics.box.map50}")  # map50
  17.     print(f"mAP75: {metrics.box.map75}")  # map75
复制代码
然后再python val.py即可成功!结果在runs/detect/val2文件夹下(因现实环境而异)。

(3)推理

推理脚本detect.py,代码如下:
  1. from ultralytics import YOLO
  2. if __name__ == "__main__":
  3.     # 加载刚刚训练好的模型地址,注意路径!
  4.     model = YOLO("runs/detect/train6/weights/best.pt")  
  5.     # Predict with the model
  6.     results = model(
  7.         source = "/data/ai/ultralytics-main/datasets/chemical/pre_img",
  8.         save=True,
  9.         imgsz=640,
  10.         conf=0.5)  # 用于检测的目标置信度阈值(默认为0.25,用于预测,0.001用于验证
复制代码
然后再python detect.py即可成功!


中文标签表现问题

参考文章:
YOLOv5,v8中文标签表现问题_yolo8中文标签-CSDN博客
YOLOv8中文标签表现不了如何解决_yolov8混淆矩阵中文标签-CSDN博客
SimHei字体(永久有用)_simhei字体怎么下载-CSDN博客


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

种地

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表