今天想用yolov8来训练一下自己的数据集,按照步骤调试好之后,执行
yolo train data=ultralytics/cfg/datasets/data.yaml model=yolov8x.pt epochs=10 lr0=0.01 batch=4
出现两个报错:
1. OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
2. PermissionError: [WinError 5] 拒绝访问。
解决方法:
1. 对于第一个报错:
OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
是由于这是因为多个 libiomp5md.dll
版本被加载到同一进程中。通常是由于 PyTorch 和其他库(如 NumPy、Scipy)同时使用 OpenMP 导致的。
为什么会有多个libiomp5md.dll文件呢,因为我用于训练的Anaconda的虚拟环境以前训练过其他的项目。
所以我在D:\SelfDownload\Anaconda\envs\test\Lib\site-packages\torch\lib这个路径下找到一个已经存在的libiomp5md.dll文件,我们把它删除掉就好了!成功解决第一个问题。(大家找不到的话 可以直接去Anaconda对应的虚拟环境下搜索这个文件)
2. 对于第二个报错:
PermissionError: [WinError 5] 拒绝访问。
是由于这是 Windows 平台上 multiprocessing
模块的已知问题,通常发生在父进程试图在子进程间传递文件句柄时被拒绝访问。
我们可以避免使用多进程: 将 YOLO 的训练脚本限制为单进程运行:在训练命令最后加个workers=0,如下面代码所示。
train.py data=ultralytics/cfg/datasets/data.yaml model=yolov8x.pt epochs=10 lr0=0.01 batch=4 workers=0
这个方法我试过之后就好了,如果大家这个方法没用的话,可以试试下面这篇文章:
https://blog.youkuaiyun.com/o_Roger/article/details/98182994