YOLOv5 SSH远程部署教程:云服务器接入详细步骤

1. 引言:为什么需要远程部署YOLOv5?

如果你正在学习或使用YOLOv5进行目标检测,可能会遇到一个很实际的问题:自己的电脑性能不够。训练模型时显卡太慢,跑推理时内存不足,或者想随时随地访问自己的开发环境——这些都是本地部署的痛点。

这时候,云服务器就成了一个绝佳的解决方案。把YOLOv5部署到云端,你可以获得更强大的计算资源,还能通过SSH随时随地连接操作,就像在本地一样方便。更重要的是,很多云服务商提供按需付费的模式,用多少算多少,成本可控。

本文将手把手教你如何通过SSH远程部署YOLOv5到云服务器。我会用最直白的方式,从零开始带你完成整个流程,即使你是第一次接触云服务器和SSH,也能跟着一步步做下来。

2. 准备工作:你需要什么?

在开始之前,我们先看看需要准备哪些东西。其实很简单,就三样:

2.1 云服务器选择

你需要一台云服务器。现在市面上选择很多,比如阿里云、腾讯云、华为云等。对于YOLOv5来说,我建议选择这样的配置:

  • CPU:至少2核
  • 内存:至少4GB(8GB更佳)
  • 硬盘:至少20GB
  • 操作系统:Ubuntu 20.04或22.04(最常用,社区支持好)
  • GPU:可选。如果有训练需求,建议选择带GPU的实例;如果只是推理,CPU也够用

如果你是学生,很多云服务商都有学生优惠,价格很划算。第一次使用的话,建议先买个按量付费的实例试试水。

2.2 SSH客户端安装

SSH(Secure Shell)是远程连接服务器的工具。不同操作系统有不同的SSH客户端:

  • Windows用户:推荐安装Git Bash(自带SSH)或者使用Windows Terminal
  • macOS/Linux用户:系统自带SSH,直接在终端里用就行

2.3 了解YOLOv5镜像

本文使用的是预置的YOLOv5镜像,它已经帮你做好了这些事:

  • 预装了PyTorch深度学习框架
  • 集成了YOLOv5的完整代码库
  • 配置好了Python环境
  • 安装了常用的计算机视觉库

这意味着你不需要自己从头配置环境,省去了很多麻烦。

3. 第一步:获取并启动YOLOv5镜像

3.1 找到YOLOv5镜像

首先,你需要找到YOLOv5的预置镜像。不同的云平台可能有不同的入口,一般可以在“镜像市场”、“应用镜像”或“容器服务”中找到。

以常见的云平台为例,搜索“YOLOv5”应该就能找到对应的镜像。选择最新版本,确保功能完整。

3.2 启动云服务器实例

找到镜像后,按照以下步骤创建实例:

  1. 选择镜像:在创建实例时,选择“从镜像市场选择”,然后找到YOLOv5镜像
  2. 配置实例:根据你的需求选择CPU、内存、硬盘大小
  3. 设置网络:确保开放SSH端口(默认是22端口)
  4. 设置登录方式:选择密码登录或密钥对登录(建议密钥对,更安全)
  5. 完成创建:等待几分钟,实例就会启动完成

创建成功后,你会获得两个重要信息:

  • 公网IP地址:用来连接服务器
  • 登录密码或密钥:用来验证身份

记下这些信息,下一步就要用到。

4. 第二步:通过SSH连接服务器

4.1 Windows用户连接方法

如果你用的是Windows,打开Git Bash或Windows Terminal,输入以下命令:

ssh root@你的服务器IP地址

比如你的服务器IP是123.123.123.123,就输入:

ssh root@123.123.123.123

第一次连接时,系统会问你是否信任这个主机,输入yes继续。

然后会提示你输入密码。输入你在创建实例时设置的密码(输入时不会显示字符,正常输入后按回车就行)。

如果一切顺利,你会看到命令行提示符变成了类似这样:

root@your-server-name:~#

恭喜!你已经成功连接到远程服务器了。

4.2 macOS/Linux用户连接方法

macOS和Linux用户更简单,直接打开终端,输入同样的命令:

ssh root@你的服务器IP地址

后续步骤和Windows一样。

4.3 常见连接问题解决

第一次连接可能会遇到一些问题,这里有几个常见情况的解决方法:

问题1:连接超时

  • 检查IP地址是否正确
  • 检查服务器是否已经启动完成(等几分钟再试)
  • 检查本地网络是否正常

问题2:权限被拒绝

  • 检查用户名是否正确(一般是root
  • 检查密码是否正确(注意大小写)
  • 如果是密钥登录,确保密钥文件权限正确(chmod 400 密钥文件)

问题3:端口被防火墙阻挡

  • 检查云服务器的安全组设置,确保22端口是开放的
  • 有些网络环境可能屏蔽了22端口,可以尝试换端口

5. 第三步:验证YOLOv5环境

连接成功后,我们先确认一下环境是否正常。

5.1 检查Python和PyTorch

在SSH终端里,输入以下命令检查Python版本:

python3 --version

应该能看到Python 3.8或更高版本。

然后检查PyTorch是否安装:

python3 -c "import torch; print(f'PyTorch版本: {torch.__version__}')"

如果看到版本号输出,说明PyTorch安装正常。

5.2 进入YOLOv5项目目录

预置镜像通常已经把YOLOv5代码放在特定目录了。输入以下命令进入项目目录:

cd /root/yolov5/

ls命令看看目录里有什么:

ls -la

你应该能看到YOLOv5的源代码文件,比如detect.pytrain.py等。

5.3 运行一个简单测试

为了确保一切正常,我们运行一个最简单的测试。在/root/yolov5/目录下,创建一个测试Python脚本:

# test_yolo.py
import torch

print("=== YOLOv5环境测试 ===")
print(f"PyTorch版本: {torch.__version__}")
print(f"CUDA是否可用: {torch.cuda.is_available()}")
if torch.cuda.is_available():
    print(f"GPU设备: {torch.cuda.get_device_name(0)}")
    
print("\n导入YOLOv5模型...")
try:
    model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True)
    print("✓ YOLOv5模型加载成功!")
    print(f"模型类别数: {len(model.names)}")
except Exception as e:
    print(f"✗ 模型加载失败: {e}")

保存后运行:

python3 test_yolo.py

如果看到“模型加载成功”的消息,说明YOLOv5环境完全正常。

6. 第四步:运行YOLOv5示例

环境验证通过后,我们来实际运行YOLOv5的官方示例。

6.1 基础推理示例

在YOLOv5目录下,直接运行官方提供的示例代码:

import torch

# 加载YOLOv5模型(可选:yolov5n, yolov5s, yolov5m, yolov5l, yolov5x)
# yolov5s是默认的小模型,速度快,精度也不错
model = torch.hub.load("ultralytics/yolov5", "yolov5s")

# 定义输入图像(可以是URL、本地文件、PIL图像等)
# 这里用YOLOv5官方提供的示例图片
img = "https://ultralytics.com/images/zidane.jpg"

# 执行推理(自动处理批处理、缩放、归一化等)
results = model(img)

# 处理结果(有多种方式:打印、显示、保存、裁剪、转pandas等)
results.print()  # 打印结果到控制台
results.save()   # 保存结果到runs/detect/exp目录

print("推理完成!结果已保存。")

把这段代码保存为demo.py,然后运行:

python3 demo.py

你会看到控制台输出检测结果,类似这样:

image 1/1: 720x1280 2 persons, 1 tie
Speed: 10.2ms pre-process, 12.3ms inference, 1.2ms NMS per image at shape (1, 3, 384, 640)

6.2 查看检测结果

运行完成后,结果图片保存在runs/detect/exp目录下。我们可以用命令行查看:

ls runs/detect/exp/

你应该能看到一个图片文件,比如zidane.jpg。这就是YOLOv5检测后的结果,在原图上画出了检测框。

如果你想在服务器上直接查看图片,可以安装一个简单的图片查看工具:

# 安装feh(轻量级图片查看器)
apt-get update && apt-get install -y feh

# 查看结果图片
feh runs/detect/exp/zidane.jpg

不过更常见的做法是,把图片下载到本地查看。

7. 第五步:文件传输与结果获取

在服务器上运行完YOLOv5后,你需要把结果文件(图片、视频、数据等)传输到本地电脑。这里介绍几种常用方法。

7.1 使用SCP传输文件(推荐)

SCP(Secure Copy)是基于SSH的文件传输工具,使用简单又安全。

从服务器下载文件到本地:

本地电脑的终端中(不是在SSH连接里),输入:

# 下载单个文件
scp root@你的服务器IP:/root/yolov5/runs/detect/exp/zidane.jpg ./本地目录/

# 下载整个目录
scp -r root@你的服务器IP:/root/yolov5/runs/detect/exp ./本地目录/

从本地上传文件到服务器:

# 上传单个文件
scp ./本地图片.jpg root@你的服务器IP:/root/yolov5/data/images/

# 上传整个目录
scp -r ./本地目录 root@你的服务器IP:/root/yolov5/data/

7.2 使用SFTP客户端

如果你更喜欢图形化界面,可以用FileZilla、WinSCP等SFTP客户端。

连接设置:

  • 主机:你的服务器IP
  • 用户名:root
  • 密码:你的服务器密码
  • 端口:22
  • 协议:SFTP

连接成功后,就可以像操作本地文件一样拖拽上传下载了。

7.3 直接在浏览器查看

如果你通过Jupyter使用YOLOv5镜像,还有更简单的方法。很多云平台提供了Web终端或文件浏览器,可以直接在网页里查看和下载文件。

具体方法取决于你的云平台,一般可以在实例管理页面找到“文件管理”或“Web终端”功能。

8. 第六步:使用自己的图片和视频

学会了基础用法后,你一定想用YOLOv5检测自己的图片。方法很简单:

8.1 准备自己的图片

首先,把你的图片上传到服务器。假设你有一张叫my_photo.jpg的图片:

# 在本地电脑执行,上传图片到服务器
scp ./my_photo.jpg root@你的服务器IP:/root/yolov5/data/images/

8.2 修改检测代码

创建一个新的Python脚本detect_my_image.py

import torch
import os

# 加载模型
model = torch.hub.load("ultralytics/yolov5", "yolov5s")

# 使用自己的图片
# 方法1:直接指定图片路径
img_path = "/root/yolov5/data/images/my_photo.jpg"

# 方法2:检测目录下的所有图片
# img_path = "/root/yolov5/data/images/"  # 检测该目录下所有图片

# 方法3:使用多个图片路径
# img_path = ["/root/yolov5/data/images/img1.jpg", 
#             "/root/yolov5/data/images/img2.jpg"]

# 执行推理
results = model(img_path)

# 保存结果
results.save()  # 保存到runs/detect/exp(自动创建新实验目录)

# 打印详细信息
results.print()
print(f"\n检测完成!结果保存在: {results.save_dir}")

8.3 检测视频文件

YOLOv5也支持视频检测。假设你有一个视频文件my_video.mp4

import torch

# 加载模型
model = torch.hub.load("ultralytics/yolov5", "yolov5s")

# 检测视频
video_path = "/root/yolov5/data/videos/my_video.mp4"
results = model(video_path)

# 保存结果视频
results.save()

print(f"视频检测完成!输出视频: {results.save_dir}/my_video.mp4")

视频检测会比图片慢一些,因为要处理每一帧。

9. 第七步:使用Jupyter Notebook(可选)

如果你更喜欢用Jupyter Notebook来交互式地使用YOLOv5,镜像也提供了这个选项。

9.1 启动Jupyter服务

在SSH终端中,进入YOLOv5目录并启动Jupyter:

cd /root/yolov5
jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser --allow-root

你会看到类似这样的输出:

[I 10:00:00.000 NotebookApp] Serving notebooks from local directory: /root/yolov5
[I 10:00:00.000 NotebookApp] Jupyter Notebook 6.4.0 is running at:
[I 10:00:00.000 NotebookApp] http://0.0.0.0:8888/?token=你的token

记下这里的token,下一步要用。

9.2 通过浏览器访问

现在你需要通过浏览器访问Jupyter。由于Jupyter运行在服务器的8888端口,你需要:

  1. 确保安全组开放8888端口:在云服务器控制台,找到安全组设置,添加一条规则允许8888端口
  2. 在浏览器中访问:打开浏览器,输入http://你的服务器IP:8888
  3. 输入token:粘贴刚才记下的token

现在你就能在浏览器里使用Jupyter Notebook了,可以创建新的notebook,交互式地运行YOLOv5代码。

9.3 创建YOLOv5 Notebook

在Jupyter中新建一个Python notebook,然后输入:

# 第一个单元格:导入库
import torch
import cv2
from PIL import Image
import matplotlib.pyplot as plt
%matplotlib inline

print("环境检查:")
print(f"PyTorch版本: {torch.__version__}")
print(f"OpenCV版本: {cv2.__version__}")

# 第二个单元格:加载模型
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
print("模型加载完成!")

# 第三个单元格:检测图片
img_url = "https://ultralytics.com/images/bus.jpg"
results = model(img_url)

# 显示结果
results.show()
results.print()

每个单元格可以单独运行,非常适合调试和实验。

10. 实用技巧与问题排查

10.1 性能优化建议

如果你的服务器配置不高,可以试试这些优化方法:

使用更小的模型:

# yolov5n是最小的模型,速度最快
model = torch.hub.load('ultralytics/yolov5', 'yolov5n')

# 或者用yolov5s,平衡速度和精度
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')

调整推理尺寸:

# 默认是640像素,调小可以加快速度
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
model.conf = 0.25  # 置信度阈值
model.iou = 0.45   # IOU阈值
model.max_det = 1000  # 最大检测数

# 推理时指定尺寸
results = model(img, size=320)  # 使用320x320输入

批量处理图片:

# 一次处理多张图片,比一张张处理效率高
image_paths = ['img1.jpg', 'img2.jpg', 'img3.jpg']
results = model(image_paths)

10.2 常见问题解决

问题:内存不足

  • 使用更小的模型(yolov5n)
  • 减小输入图片尺寸(size=320)
  • 分批处理图片,不要一次性加载太多

问题:速度太慢

  • 检查是否在使用CPU而不是GPU
  • 使用更小的模型
  • 减小图片尺寸
  • 关闭不必要的可视化(results.show()比较耗时)

问题:检测精度不够

  • 使用更大的模型(yolov5l或yolov5x)
  • 增加输入尺寸(size=1280)
  • 调整置信度阈值(model.conf = 0.4)

问题:连接断开 SSH连接可能因为不活动而断开,可以配置保持连接:

# 在本地电脑的 ~/.ssh/config 文件中添加(没有就创建)
Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

10.3 常用命令备忘

# 查看GPU信息
nvidia-smi

# 查看内存使用
free -h

# 查看磁盘空间
df -h

# 查看进程
htop  # 需要先安装:apt install htop

# 后台运行Jupyter
nohup jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser --allow-root > jupyter.log 2>&1 &

# 查看Jupyter日志
tail -f jupyter.log

# 结束Jupyter进程
pkill -f jupyter

11. 总结

通过这篇教程,你应该已经掌握了YOLOv5 SSH远程部署的完整流程。我们来回顾一下关键步骤:

  1. 准备阶段:选择云服务器,记住SSH客户端是连接工具
  2. 启动实例:选择YOLOv5镜像创建云服务器,获取IP和密码
  3. SSH连接:用一行命令连接远程服务器,就像操作本地电脑一样
  4. 验证环境:检查Python、PyTorch和YOLOv5是否正常
  5. 运行示例:从简单测试开始,确保一切工作正常
  6. 使用自己的数据:上传图片视频,用YOLOv5进行检测
  7. 获取结果:用SCP或SFTP把结果文件下载到本地
  8. 可选功能:使用Jupyter进行交互式开发

远程部署YOLOv5的最大好处是灵活性和可扩展性。你可以在低配电脑上开发,在云端高性能服务器上运行,随时随地访问你的开发环境。当需要更多计算资源时,只需升级云服务器配置,不需要换电脑。

现在你已经有了一个随时可用的YOLOv5开发环境,可以开始你的计算机视觉项目了。无论是做目标检测实验,还是开发实际应用,这个云端环境都能提供稳定的支持。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

更多推荐