在开始YOLO图像识别项目前,我们需要准备两个核心工具:Xshell和Xftp。这两个工具分别用于远程终端操作和文件传输,是云服务器开发的黄金搭档。
Xshell作为专业的SSH客户端,相比系统自带的终端工具具有以下优势:
Xftp则是专门为文件传输优化的工具,其特点包括:
安装时建议选择个人/学校免费版,完全满足开发需求。安装过程中需要注意:
FunHPC平台提供了多种GPU配置选项,针对YOLO这类计算机视觉任务,我的经验是:
GPU选型建议:
| GPU型号 | 显存 | 适合场景 | 性价比 |
|---|---|---|---|
| RTX 3090 | 24GB | YOLOv5/v7中等规模训练 | ★★★★☆ |
| RTX 4090 | 24GB | YOLOv8大规模训练 | ★★★☆☆ |
| A100 40G | 40GB | 超大规模数据集 | ★★☆☆☆ |
对于大多数YOLO应用场景,RTX 3090已经足够,除非你要训练自定义的大模型。选择时注意:
开发环境选择:
建议选择"PyTorch 1.12 + CUDA 11.6"或更新的环境,这能确保:
特别注意:某些老版本YOLO(如v3)可能需要特定版本的PyTorch,此时应选择对应环境或自行配置虚拟环境。
获取服务器SSH信息后,在Xshell中建立连接的规范流程:
新建会话:
用户认证:
高级设置:
bash复制# 在会话属性→终端→键盘中设置:
# 键盘类型:Linux
# DELETE键序列:^[[3~
# 退格键序列:^H
文件传输配置:
在Xftp中建立对应会话时,需要:
连接成功后,建议立即:
成功连接服务器后,首先应该验证基础环境:
bash复制# 检查GPU驱动
nvidia-smi
# 预期输出应显示GPU型号和CUDA版本
# 检查CUDA工具包
nvcc --version
# 应显示与租用环境匹配的版本
# 检查conda环境
conda --version
常见问题处理:
推荐使用官方YOLOv5仓库进行部署:
bash复制# 创建项目目录
mkdir ~/yolo_project && cd ~/yolo_project
# 克隆官方仓库(建议使用国内镜像加速)
git clone https://gitee.com/mirrors/YOLOv5.git
cd YOLOv5
# 安装依赖(使用清华源加速)
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
关键注意事项:
bash复制pip install torch==1.12.0+cu116 torchvision==0.13.0+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
bash复制pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
使用Xftp传输数据时的优化技巧:
压缩传输:
bash复制tar -xzf dataset.tar.gz
目录结构规范:
code复制datasets/
├── images/
│ ├── train/
│ └── val/
└── labels/
├── train/
└── val/
校验传输完整性:
bash复制# 在本地生成校验文件
md5sum dataset.tar.gz > checksum.txt
# 在服务器验证
md5sum -c checksum.txt
对于大型数据集,推荐使用rsync进行增量同步:
bash复制rsync -avzP --partial /local/path user@remote:/remote/path
典型的YOLOv5训练命令示例:
bash复制python train.py \
--img 640 \
--batch 16 \
--epochs 100 \
--data coco128.yaml \
--cfg models/yolov5s.yaml \
--weights yolov5s.pt \
--name my_first_run \
--cache
关键参数解析:
| 参数 | 推荐值 | 作用 | 调整策略 |
|---|---|---|---|
| --img | 640 | 输入图像尺寸 | 根据GPU显存调整 |
| --batch | 最大可能值 | 批处理大小 | 逐步增加直到显存占满 |
| --epochs | 100-300 | 训练轮次 | 简单数据集可减少 |
| --data | 自定义yaml | 数据配置 | 必须正确指向数据集 |
| --weights | 预训练模型 | 迁移学习 | 小数据集必选 |
| --cache | 启用 | 缓存图像 | 加速训练但占用内存 |
训练监控技巧:在Xshell中运行训练时,先执行
pip install wandb安装监控工具,然后添加--logdir wandb参数可视化训练过程。
基于经验的优化策略:
学习率调整:
yaml复制# 在data.yaml中添加
lr0: 0.01 # 初始学习率
lrf: 0.2 # 最终学习率系数
数据增强配置:
python复制# 在train.py中修改
augment: True
hsv_h: 0.015 # 色调增强
hsv_s: 0.7 # 饱和度增强
hsv_v: 0.4 # 明度增强
混合精度训练:
bash复制python train.py --device 0 --half
常见训练问题解决:
训练完成后,使用以下命令验证模型:
bash复制python val.py \
--weights runs/train/my_first_run/weights/best.pt \
--data coco128.yaml \
--img 640
模型导出为ONNX格式(用于部署):
bash复制python export.py \
--weights runs/train/my_first_run/weights/best.pt \
--img 640 \
--batch 1 \
--simplify \
--opset 12
导出时常见问题:
会话保持:
在Xshell中设置:
后台运行训练:
bash复制nohup python train.py > train.log 2>&1 &
# 查看日志
tail -f train.log
资源监控:
bash复制# 实时监控GPU
watch -n 1 nvidia-smi
# 监控CPU和内存
htop
连接问题:
训练问题:
torch.cuda.empty_cache()性能问题:
定时任务:
利用crontab在低价时段自动训练:
bash复制# 每天凌晨2点开始训练
0 2 * * * cd ~/yolo_project && python train.py
资源监控:
设置训练完成自动关机:
bash复制python train.py && shutdown -h now
模型压缩:
训练后使用剪枝技术减小模型:
python复制from torch_pruner import prune
prune(model, amount=0.3) # 剪枝30%的通道
最后分享一个实用技巧:在本地VSCode中安装Remote-SSH扩展,可以直接编辑服务器上的代码,配合Xftp管理文件,能显著提升开发效率。具体配置方法是先在Xshell中建立连接,然后在VSCode的Remote-SSH配置中使用相同的连接信息。