Skip to content

关于yolov5在mac设备上使用mps加速出现的各种问题 #13226

Open
@xxxkkw

Description

@xxxkkw

Search before asking

  • I have searched the YOLOv5 issues and found no similar bug report.

YOLOv5 Component

Training, Detection

Bug

首先从训练模型讲起,我使用的设备是一台MacOS 14的设备,m1max芯片,如果使用

python train.py --device mps

也就是仅使用官方的训练数据,训练的过程中会出现

  Epoch    GPU_mem   box_loss   obj_loss   cls_loss  Instances       Size
  0%|          | 0/8 [00:00<?, ?it/s]/Users/xiongkaiwen/yolov5/train.py:414: FutureWarning: `torch.cuda.amp.autocast(args...)` is deprecated. Please use `torch.amp.autocast('cuda', args...)` instead.
  with torch.cuda.amp.autocast(amp):

虽然这并不影响训练的过程,最终还是可以正常的输出训练好的模型。
在我使用这个训练好的模型对 yolov5/data/images 文件夹内的图片进行检测,检测结果是正常的,但当我使用这个训练好的模型进行检测的时候,最终输出的视频文件是乱的,体现在
截屏2024-07-28 21 04 31
这个是我在视频里面截取的一帧,并且整个视频中框都呈现类似的错误,而我如果换用cpu进行检测的时候,检测结果就正常了
截屏2024-07-28 21 02 45
并且,如果我使用yolov5文件夹内的yolov5s.pt进行检测的时候,这种问题又消失了,检测的结果就是正常的,这就让人非常不能理解,我认为yolov5s.pt文件的训练集与我使用该命令的数据集

python train.py --device mps

应该是一致的,为什么会出现这样的错误?

还有,我在使用我自己的数据集的过程中,我曾经在服务器上训练好了一个模型,并且在那边使用的是cuda,并且确定这个模型文件是可用的,在服务器上对视频进行识别是正常的,但在我的设备上,使用这个模型对视频文件进行检测,结果就类似于我给出的图片一致,如果使用mps加速,结果就出现错乱,但使用cpu,结果就是符合预期的,我想知道这到底是什么问题。

Environment

YOLOv5 🚀 v7.0-348-g6deb2d75 Python-3.11.9 torch-2.5.0.dev20240727 CPU
Apple M1 Max 32G
MacOS 14.5 (23F79)

Minimal Reproducible Example

我使用的是anaconda创建版本为Python 3.11.9的虚拟环境,并使用

git clone https://github.com/ultralytics/yolov5.git
pip install -r requirements.txt
cd yolov5

在此时,删除现有的pytorch,安装最新版的nightly版

pip uninstall torch
pip uninstall torchvision
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu

此时我所有包的版本如下:

Package            Version
------------------ ------------------
certifi            2024.7.4
charset-normalizer 3.3.2
contourpy          1.2.1
cycler             0.12.1
filelock           3.15.4
fonttools          4.53.1
fsspec             2024.6.1
gitdb              4.0.11
GitPython          3.1.43
idna               3.7
Jinja2             3.1.4
kiwisolver         1.4.5
MarkupSafe         2.1.5
matplotlib         3.9.1
mpmath             1.3.0
networkx           3.3
numpy              1.26.4
opencv-python      4.10.0.84
packaging          24.1
pandas             2.2.2
pillow             10.4.0
pip                24.1.2
psutil             6.0.0
py-cpuinfo         9.0.0
pyparsing          3.1.2
python-dateutil    2.9.0.post0
pytz               2024.1
PyYAML             6.0.2rc1
requests           2.32.3
scipy              1.14.0
seaborn            0.13.2
setuptools         71.1.0
six                1.16.0
smmap              5.0.1
sympy              1.13.1
thop               0.1.1-2209072238
torch              2.5.0.dev20240727
torchaudio         2.4.0
torchvision        0.20.0.dev20240727
tqdm               4.66.4
typing_extensions  4.12.2
tzdata             2024.1
ultralytics        8.2.66
ultralytics-thop   2.0.0
urllib3            2.2.2
wheel              0.43.0

按照这个步骤应该就能跟我的环境一致,然后就能按照我的步骤还原问题

Additional

No response

Are you willing to submit a PR?

  • Yes I'd like to help by submitting a PR!

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions