基于AutoDL服务器从零搭建YOLOv11目标检测算法训练推理环境(详细教程)
目录
基于AutoDL服务器从零搭建YOLOv11目标检测算法训练推理环境(详细教程)
1、启动容器
2、准备数据
3、准备依赖环境
4、开始训练
5、开始预测
6、总结
基于AutoDL服务器从零搭建YOLOv11目标检测算法训练推理环境(详细教程)
★工欲善其事,必先利其器。
选择一款简单易用的服务器环境,是深度学习算法开发的基础,也是重中之重。服务器环境选择恰当,会起到事半功倍的作用,会避免许多因环境不兼容引发的问题!
因此,此处不得不提到AutoDL 服务器。它优势显著,提供多种 NVIDIA 系列 GPU 型号卡,镜像丰富且更新快,环境配置便捷,网速快,服务稳定。最重要的是性价比极高,是我们研究生搞学术研究的不二之选。
”
1、启动容器
进入官网:https://www.autodl.com/home,选择算力市场按钮

按需选择一款资源满足需求的机器设备,此处选择的设备为RTX 2080 Ti x2 / 22 GB
选择所需要的基础镜像环境,此处选择的环境为pytorch2.0+python3.8+cuda11.8

耐心等待片刻,等待环境创建完成
如下所示,即基础环境启动成功

2、准备数据
选用公共数据集演示,如下流程

进入容器,选择数据集,复制到开发目录下
执行指令如下
root@autodl-container-6d25459816-d8aa3cc4:~/autodl-tmp# ls
root@autodl-container-6d25459816-d8aa3cc4:~/autodl-tmp# ls /root/autodl-pub/VOCdevkit/VOC2007.tar.gz
/root/autodl-pub/VOCdevkit/VOC2007.tar.gz
root@autodl-container-6d25459816-d8aa3cc4:~/autodl-tmp# cp -r /root/autodl-pub/VOCdevkit/VOC2007.tar.gz ./
root@autodl-container-6d25459816-d8aa3cc4:~/autodl-tmp# du -h ./VOC2007.tar.gz
837M ./VOC2007.tar.gz
root@autodl-container-6d25459816-d8aa3cc4:~/autodl-tmp# pwd
/root/autodl-tmp
root@autodl-container-6d25459816-d8aa3cc4:~/autodl-tmp# ls
VOC2007.tar.gz
root@autodl-container-6d25459816-d8aa3cc4:~/autodl-tmp#
解压数据集,得到数据集目录/root/autodl-tmp/VOC2007,分布如下

python编码voc2yolo.py脚本,实现voc格式转换yolo标签格式
import os
import xml.etree.ElementTree as ET
from tqdm import tqdm
import shutil
def voc2yolo(voc_root, yolo_root, classes, use_symlink=True):
"""
将VOC格式数据集转换为YOLO格式,支持训练集、验证集和测试集
:param voc_root: VOC数据集根目录
:param yolo_root: 转换后YOLO数据集保存目录
:param classes: 类别列表
:param use_symlink: 是否使用软链接而非复制图像,节省空间
"""
# 创建YOLO数据集目录结构,增加test集支持
for phase in ["train", "val", "test"]:
os.makedirs(os.path.join(yolo_root, "images", phase), exist_ok=True)
os.makedirs(os.path.join(yolo_root, "labels", phase), exist_ok=True)
# 处理训练集、验证集和测试集
for phase in ["train", "val", "test"]:
# 读取图像列表文件
img_set_path = os.path.join(voc_root, "ImageSets", "Main", f"{phase}.txt")
# 检查测试集文件是否存在,某些VOC版本可能命名不同
if not os.path.exists(img_set_path) and phase == "test":
# 尝试常见的测试集文件名变体
for test_variant in ["test.txt", "testset.txt"]:
img_set_path = os.path.join(voc_root, "ImageSets", "Main", test_variant)
if os.path.exists(img_set_path):
break
else:
print(f"警告: 未找到测试集文件,跳过测试集处理")
continue
with open(img_set_path, "r") as f:
# 过滤空行和注释行
img_names = [line.strip() for line in f.readlines() if line.strip() and not line.startswith('#')]
# 处理每张图像
for img_name in tqdm(img_names, desc=f"Processing {phase} set"):
# 处理图像文件
src_img_path = os.path.join(voc_root, "JPEGImages", f"{img_name}.jpg")
&n







