当前位置: 首页 > news >正文

centos7 基于yolov10的推理程序环境搭建

这篇文章的前提是系统显卡驱动已经安装
安装步骤参照前一篇文章centos7安装NVIDIA显卡

安装Anaconda

下载地址anaconda.com
需要注册账号获取下载地址

wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh

赋予权限

chmod a+x Anaconda3-2024.10-1-Linux-x86_64.sh

安装

sh Anaconda3-2024.10-1-Linux-x86_64.sh

敲一下Enter健
在这里插入图片描述
然后会出现一个协议,翻到最后一页或者Ctrl+C,输入yes
在这里插入图片描述
会出先三个选项,我们自定义下安装路径/home/apps/anaconda3,然后Enter确认
在这里插入图片描述
等待一段时间后输入yes确认
在这里插入图片描述

配置环境变量

vim ~/.bashrc

在最后插入

export PATH=/home/apps/anaconda3/bin:$PATH

使配置生效

source  ~/.bashrc

检测

conda -V

输出

conda 24.9.2

创建虚拟环境

  1. 创建
    yolov10 为自定义的名字,python=3.12是指定python的版本(也可指定另外的版本)
conda create -n yolov10 python=3.12

等待一段时间后输入y即可

  1. 查看是否安装成功
conda env list

输出

base /home/apps/anaconda3
yolov10 * /home/apps/anaconda3/envs/yolov10

  1. 激活
conda activate yolov10

查看python版本

python -v

最后输出

Python 3.12.9 | packaged by Anaconda, Inc. | (main, Feb 6 2025, 18:56:27) [GCC 11.2.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.

Ctrl+D退出python命令

  1. 如果需要删除环境
conda remove -n yolov10 --all
  1. 退出当前环境
conda deactivate
  1. 卸载Anaconda
conda install anaconda-clean
anaconda-clean --yes
rm -rf ~/anaconda3
rm -rf /home/apps/anaconda3

安装GPU版本的torch

torch官网:Previous PyTorch Versions | PyTorch
这个网站打不开的话,试下热点

查看CUDA版本

nvidia-smi

在这里插入图片描述

选择相对应的版本
在这里插入图片描述

复制torch版本进行安装,我选择直接用coda安装

conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.4 -c pytorch -c nvidia

安装过程比较耗时,耐心等待输入即可,最终输出

Preparing transaction: done
Verifying transaction: done
Executing transaction: done

本地生成pip依赖

首先需要在本地生成依赖

  1. 激活环境
conda activate yolov10
  1. 生成依赖
conda env export > environment.yml
  1. 编写Dockerfile
    我尝试很多次如果不用Docker部署,pip依赖如果涉及到系统级别的包,会与服务器的系统环境冲突,比如Gcc等。稳妥期间还是用Docker部署,避免环境冲突
# 使用Miniconda作为基础镜像
FROM continuumio/miniconda3:latestRUN apt-get update -y && \apt-get install -y \build-essential \python3-dev \libegl1 \libgl1-mesa-glx \libgl1 \libgbm1 \libxcb-xinerama0 \libxkbcommon-x11-0 \libglvnd-dev \ffmpeg \libsm6 \libxext6 \mesa-utils \libx264-dev \&& apt-get clean \&& rm -rf /var/lib/apt/lists/*# 配置 OpenGL 环境变量
ENV LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH# 复制环境配置文件
COPY environment.yml /tmp/environment.yml# 创建Conda环境
RUN conda env create -f /tmp/environment.yml# 设置环境变量,激活Conda环境
ENV PATH /opt/conda/envs/yolov10/bin:$PATH# 设置工作目录
WORKDIR /app# 复制项目代码
COPY . /app# 验证库存在性(调试用)
RUN ldd /opt/conda/envs/yolov10/lib/python*/site-packages/PySide6/QtGui.abi3.so | grep EGL# 运行命令(运行的python入口文件)
CMD ["python", "fileapi.py"]

上面的libegl相关的包,是因为我的程序需要图形化界面,我又不想单独为linux版本修改代码,索性直接安装了,构建时间很长,镜像有16G。根据项目做修改即可

  1. yolov10补丁
    如果项目的算法是基于yolov10的,还需要打个补丁
    再项目根目录下创建补丁文件loss_patch.py
class v10DetectLoss:def __init__(self, model):self.one2many = v8DetectionLoss(model, tal_topk=10)self.one2one = v8DetectionLoss(model, tal_topk=1)def __call__(self, preds, batch):one2many = preds["one2many"]loss_one2many = self.one2many(one2many, batch)one2one = preds["one2one"]loss_one2one = self.one2one(one2one, batch)return loss_one2many[0] + loss_one2one[0], torch.cat((loss_one2many[1], loss_one2one[1]))

然后将补丁文件追加到容器内,Dockfile内追加以下内容

# 复制项目代码
COPY . /app
#追加内容,yolov10补丁
COPY loss_patch.py /tmp/loss_patch.pyRUN /bin/bash -c " \set -ex; \CONDA_ENV_PATH=/opt/conda/envs/yolov10; \LOSS_FILE=\"\${CONDA_ENV_PATH}/lib/python3.12/site-packages/ultralytics/utils/loss.py\"; \touch \"\${LOSS_FILE}\"; \chmod 666 \"\${LOSS_FILE}\"; \echo -e '\n\n# ===== YOLOv10 Custom Loss Patch =====\n' >> \"\${LOSS_FILE}\"; \cat /tmp/loss_patch.py >> \"\${LOSS_FILE}\"; \echo 'Patch verification passed' \"
# 运行命令(运行的python入口文件)
CMD ["python", "fileapi.py"]

服务器生成依赖

将项目代码打包,上传服务器,在服务器上再次生成依赖

  1. 激活环境
conda activate yolov10
  1. 生成依赖
conda env export > environment.yml
  1. 修改服务器生成的environment文件
    在这里插入图片描述
    在这里插入图片描述

  2. 构建镜像

在项目根目录下构建

docker build --no-cache -t yolo-real-detect .

可能需要修改个别依赖包,因为windows和linux构建,依赖的少数包有可能会不通

  1. 运行容器
docker run -it \-p 5000:5000 \-v /home/data/airuns:/home/data/airuns \yolo-real-detect
http://www.xdnf.cn/news/472411.html

相关文章:

  • 多语言支持的常见设计方案
  • C语言-指针函数和函数指针
  • 【Linux】网络基础与socket编程基础
  • 深入理解JavaScript中的闭包:原理、应用与常见问题
  • 【stata】xtreg VS reghdfe
  • 位运算题目:找到最接近目标值的函数值
  • 新手入门系列-springboot项目初体验
  • C盘清理秘籍:快速提升系统性能
  • Python 调试扩展版本兼容问题解决纪实
  • 在自动化脚本中使用找色实现精确定位目标区域
  • docker 学习记录
  • uniapp x
  • 软件安全测试报告:检测商业软件安全性,发现潜在风险点?
  • 修复“ImportError: DLL load failed while importing lib: 找不到指定的程序”笔记
  • MySQL 误删除数据恢复全攻略:基于 Binlog 的实战指南
  • 深度学习入门:深度学习(完结)
  • 张量与Python标量:核心区别与计算图断开解析
  • 白平衡模块中普朗克曲线拟合硬件实现的猜想
  • ElfBoard技术实战|ELF 2开发板本地部署DeepSeek大模型的完整指南
  • MyBatis 的分页插件 c
  • 国产芯片LH001-91为什么可以代替TI的ADS1291?
  • 观QFramework框架底层逻辑有感
  • 丝杆升降机限位失灵深度剖析:从故障机理到智能监测方案
  • 硬件创新新纪元:从算力怪兽到便携革命,2025 年如何重新定义计算体验
  • unordered_set和unordered_map
  • 详细解释api
  • 不同进制的数据展示(十进制、十六进制、编码方式)
  • 理解 Viewport:让网页在手机端正确显示的秘诀
  • 星形测试卡:射线摄影获取焦点星卡射线照片的工具
  • win11安装Joplin Server私有化部署(docker)