一、报错原因
首先,已经在大项目文件夹用pip install ultralytics下载了YOLO模型,在autoDL平台上上传了多项不同的YOLO项目(尽管多项,但是在同一个大文件夹项目下),对其中一个项目进行训练时,出现了如下图的报错。
二、原因及解决方法
1、原因
这并不是说Conda环境损坏有问题,而是服务器上存在多个Ultralytics项目,当Python执行如下命令时(通常是训练脚本的前几行有下列代码),错误导入了另一个项目中的ultralytics,造成当前模型的环境.yaml文件与解析代码版本不匹配。
from ultralytics import YOLO2、解决方法
重新搞一次环境非常麻烦非常不建议,我们可以通过改训练代码的方式让python为我们优先加载当前项目所在的yolo源码。这个操作不会影响其他文件夹的项目训练,亲测可行,大家有问题可以私聊,共同学习。
(1)打开自己要训练的train.py文件
(2)在训练文件最顶部加入sys.path首位代码,这段代码的含义是让python优先加载当前项目所带的Ultralytics源码,以此解决不同版本下源码的串用问题。
import sys from pathlib import Path PROJECT_ROOT = str(Path(__file__).resolve().parents[1]) if PROJECT_ROOT not in sys.path: sys.path.insert(0, PROJECT_ROOT) # 其他说明 # sys.path 为Python搜索模块的路径列表。 # insert(0, ...) 代表的是 优先从这个目录查找。(3)然后在linux终端输入下列的正常训练命令(注意自己的训练文件名字要正确),模型可正常训练,如图所示。
python train.py