目录
前言
问题解答
问题一:远程服务器有哪些,怎么选?
问题二:如何进行连接?
问题三:如何成功运行模型?
问题四:No module named 'ultralytics'?
问题五:如何更改配置?
问题六:训练过程中可能出现显存不够的情况
前言
本文主要记录笔者在利用运用远程服务器训练YOLOv8过程中遇到的问题,希望能帮助想要利用云算力进行训练的小白。注意:只有专业版的Pycharm才能连接远程服务器!
问题解答
问题一:远程服务器有哪些,怎么选?
问题二:如何进行连接?
回答:首先需要购买可用的云服务器(根据需求选取)
购买好并正常开机后会出现以下信息,图中可以看到有登录指令和密码,之后会用到
打开Pycharm,利用SSH创建新的解释器
复制AutoDL提供的登录指令和密码,例如登录指令为ssh -p 50529 root@region-5.autodl.com,则端口为50529,用户名为root
连接成功后,需要配置解释器的位置,一般均位于/root/miniconda3/bin/python
最后,等待一段时间就连接成功了,连接成功后会自动上传当前项目的所有文件
问题三:如何成功运行模型?
回答:YOLOv8官方的代码可以从github上获取(ultralytics/ultralytics: NEW - YOLOv8)。首先需要准备数据集(AutoDL也提供部分数据集,可参考另一篇文章的介绍here),并准备相关目录,需要新建runs文件夹用于存储训练结果等文件(运行过程会自动保存),在ultralytics/datasets中添加准备好的数据集,同时需要新建yaml配置文件
yaml配置文件内容如下。本文以目标检测为例,nc即表示需要检测的类别数,names存放类别名称(注意类别标号要和顺序一致),同时一定要注意path的路径,由于使用的远程服务器,需要知道当前项目存储在服务器的位置,并使用绝对路径的写法,否则后续会出现很多问题!
path: /tmp/pycharm_project_7/ultralytics/datasets/VOC2012/imageSet # 数据集的根路径
train: ./train.txt # 训练集的相对路径
val: ./val.txt # 验证集的相对路径
#test: test # test images (optional)
# Classes
nc: 20 # 写自己的类别数
names: ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair',
'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train',
'tvmonitor'] # 对应类别名称
训练集与验证集的存放:
新建train.py文件,编写训练语句(也可以在终端输入命令进行训练),注意路径的写法,与上述一致,需要用绝对路径!
from ultralytics import YOLO
import time
# 加载模型
model = YOLO("yolov8-p2.yaml") # 从头开始构建新模型,根据需要可更改为其他的模型
# model = YOLO("yolov8s.pt") # 加载预训练模型(建议用于训练)
#model = YOLO('yolov8s-cls.yaml').load('yolov8s-cls.pt') # 从 YAML加载 然后再加载权重
begin = time.perf_counter()
# 使用模型
model.train(data="/tmp/pycharm_project_7/ultralytics/datasets/VOC2012/VOC2012.yaml") # 训练模型
end = time.perf_counter()
# metrics = model.val() # 在验证集上评估模型性能
# print(metrics.box.map) # map50-95
# print(metrics.box.map50) # map50
# print(metrics.box.map75) # map75
# print(metrics.box.maps) # 包含每个类别的map50-95列表
# print(metrics.box.mp) # 所有类别的平均精度
# print(metrics.box.mean_results) # 结果平均值
# print(metrics.speed)
# print(metrics.results_dict) # 输出包含分类指标和适应性的字典
# print(metrics.keys) # 输出结果字典的键列表
#results = model("https://ultralytics.com/images/bus.jpg") # 对图像进行预测
success = model.export(format="onnx") # 将模型导出为 ONNX 格式
print('训练时间: ', end-begin)
最后,开始训练即可。当训练完成后,需要将训练结果从远程服务器下载下来。注意需要下载到runs文件夹中
问题四:No module named 'ultralytics'?
回答:解释器中没有ultralytics库,需要进行安装,将终端切换为远程服务器,在终端输入:pip install ultralytics即可
如果安装后没有解决问题,可尝试在解释器中搜索安装。若有其他的库没有安装,可采取相同的方式解决
问题五:如何更改配置?
回答:在default.yaml文件中修改即可
问题六:训练过程中可能出现显存不够的情况
回答:需要根据所购买的云服务器的显存大小来调整batch_size的大小,对于YOLOv8s一般batch=32大概需要7-8G显存左右,batch_size越大一般需要越多的显存,当然不同的模型占用的显存肯定也是不一样的,具体的信息可能需要在官方文档中查看,例如README.md文件