RK3588平台上YOLOv8模型转换与CentOS 7.8 Docker镜像拉取超时问题解决指南
RK3588平台上YOLOv8模型转换与CentOS 7.8 Docker镜像拉取超时问题解决指南
一、RK3588平台上YOLOv8模型从PT转换为RKNN
背景介绍
YOLOv8的原生模型包含了后处理步骤,其中一些形状超出了RK3588的矩阵计算限制,因此需要对输出层进行一些裁剪。本文将详细介绍如何在RK3588平台上将YOLOv8模型从PyTorch格式(.pt)转换为Rockchip的RKNN格式,以便在RK3588设备上高效运行。
步骤一:从PT转换为ONNX
-
克隆Ultralytics YOLOv8仓库并拉取Docker镜像
首先,你需要克隆Ultralytics的YOLOv8仓库,并拉取一个专门用于PT到ONNX转换的Docker镜像。
docker pull kaylor/rk3588_pt2onnx git clone https://github.com/airockchip/ultralytics_yolov8.git cd ultralytics_yolov8 git checkout 5b7ddd8f821c8f6edb389aa30cfbc88bd903867b
-
下载最新的模型文件
从YOLOv8的GitHub仓库下载最新的模型文件,例如
yolov8n.pt
。wget https://github.com/ultralytics/assets/releases/download/v8.1.0/yolov8n.pt
-
修改配置文件
编辑
./ultralytics/cfg/default.yaml
文件,将模型路径从yolov8m-seg.pt
替换为yolov8n.pt
。model: yolov8n.pt # (str, optional) path to model file, i.e. yolov8n.pt, yolov8n.yaml
-
执行PT到ONNX的转换
在主机上运行Docker容器,并在容器内执行转换脚本。
# 在主机上运行 docker run -it -v ${PWD}:/root/ws kaylor/rk3588_pt2onnx bash # 在容器内运行 cd /root/ws export PYTHONPATH=./ python ./ultralytics/engine/exporter.py exit
步骤二:从ONNX转换为RKNN
-
克隆RK3588转换到RKNN的仓库并拉取Docker镜像
接下来,你需要克隆一个专门用于ONNX到RKNN转换的仓库,并拉取相应的Docker镜像。
cd ../ docker pull kaylor/rk3588_onnx2rknn # 用于YOLOv8 # docker pull kaylor/rk3588_onnx2rknn:beta # 用于YOLOv10(如果需要) git clone https://github.com/kaylorchen/rk3588-convert-to-rknn.git cp ultralytics_yolov8/yolov8n.onnx rk3588-convert-to-rknn cd rk3588-convert-to-rknn
-
执行ONNX到RKNN的转换
在主机上运行Docker容器,并在容器内执行转换脚本。
# 在主机上运行(根据YOLO版本选择合适的镜像) docker run -it -v ${PWD}:/root/ws kaylor/rk3588_onnx2rknn bash # 用于YOLOv8 # docker run -it -v ${PWD}:/root/ws kaylor/rk3588_onnx2rknn:beta bash # 用于YOLOv10(如果需要) # docker run -it -v ${PWD}:/root/ws kaylor/rk3588_onnx2rknn:2.3.0 bash # 适用于所有YOLO版本(如果需要) # 在容器内运行 cd /root/ws python convert.py yolov8n.onnx rk3588 i8 yolov8n.rknn exit
二、CentOS 7.8 上 Docker 镜像拉取超时问题解决指南
问题描述
在 CentOS 7.8 系统上安装并配置完 Docker 服务后,很多用户会遇到一个常见的问题:直接尝试从 Docker Hub 拉取镜像时,经常因为网络原因而导致超时,无法成功获取镜像。这个问题通常是由于 Docker 默认使用的是国外的镜像源,而国内的网络环境在访问这些源时可能会遇到访问速度慢或无法访问的情况。
解决思路
为了解决这个问题,用户通常需要修改 Docker 的镜像源,将其设置为国内的镜像源,以加快访问速度并避免网络问题。选择一个稳定且可靠的镜像源至关重要。
具体操作步骤
-
编辑 Docker 配置文件
你需要编辑 Docker 的配置文件
daemon.json
。这个文件通常位于/etc/docker/
目录下。如果该文件不存在,你可以手动创建一个。使用你喜欢的文本编辑器(如
vi
、nano
等)打开或创建daemon.json
文件,并添加以下内容:{ "registry-mirrors": [ "https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com", "https://docker.m.daocloud.io", "https://hub-mirror.c.163.com", "https://mirror.baidubce.com", "https://your_preferred_mirror", "https://dockerhub.icu", "https://docker.registry.cyou", "https://docker-cf.registry.cyou", "https://dockercf.jsdelivr.fyi", "https://docker.jsdelivr.fyi", "https://dockertest.jsdelivr.fyi", "https://mirror.aliyuncs.com", "https://dockerproxy.com", "https://mirror.baidubce.com", "https://docker.m.daocloud.io", "https://docker.nju.edu.cn", "https://docker.mirrors.sjtug.sjtu.edu.cn", "https://docker.mirrors.ustc.edu.cn", "https://mirror.iscas.ac.cn", "https://docker.rainbond.cc" ] }
注意:由于加速器地址可能会随时间变化或失效,我无法在此直接提供一个固定的加速器地址。你可以从可信的第三方镜像源提供商(如阿里云、腾讯云、DaoCloud 等)获取最新的加速器地址。
-
重新加载 Docker 配置
编辑完
daemon.json
文件后,你需要重新加载 Docker 的配置。这可以通过运行以下命令来完成:systemctl daemon-reload
-
重启 Docker 服务
接下来,你需要重启 Docker 服务以使新的配置生效。运行以下命令:
systemctl restart docker
-
拉取 Docker 镜像
现在,你可以尝试再次拉取 Docker 镜像。运行以下命令:
docker pull <镜像名称>:<标签>
例如,要拉取官方的 Nginx 镜像,你可以运行:
docker pull nginx:latest
如果一切顺利,你应该能够成功拉取到镜像,而不会遇到超时问题。
总结
通过上述步骤,你可以成功地将YOLOv8模型从PyTorch格式转换为RKNN格式,并在RK3588设备上运行。同时,你也能够解决 CentOS 7.8 上 Docker 镜像拉取超时的问题。这两个过程分别涉及到了Docker的使用、模型的下载与配置、模型的格式转换以及Docker配置文件的修改等步骤。希望这篇博客能帮助你在RK3588平台上顺利部署YOLOv8模型,并解决Docker镜像拉取问题。如果你有任何问题或建议,请随时在评论区留言。