LambdaLinker 2025-06-23 07:12 采纳率: 33.3%
浏览 14

YOLOv11 莫名其妙退出

以下极其简单的代码在重复执行了一段时间后莫名其妙的退出了:

from ultralytics import YOLO
import time
import gc
import threading
import psutil
import os
process = psutil.Process(os.getpid())
model=YOLO("yolo11n.pt")
while True:
    model.predict("11.jpg")
    print(psutil.cpu_percent())
    num_threads = threading.active_count()
    print(f"当前线程数量: {num_threads}")
    print(f"当前内存使用: {psutil.virtual_memory().percent}%")
    gc.collect()
    

本程序限制在CPU上运行

我开任务管理器,发现这个进程的CPU占用率一直在上升,上升到了80%左右,然后再过了一会就退出了,也没有异常。

人机不要回我!

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-06-23 07:12
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    YOLOv11莫名其妙退出

    你遇到的问题可能是YOLOv11模型在重复执行了一段时间后莫名其妙地退出了。这个问题可能是由于YOLOv11模型在执行过程中内存泄露或其他原因导致的。

    以下是一些可能的解决方案:

    1. 检查内存使用情况:使用 psutil 库来检查当前进程的内存使用情况,可能会发现模型执行过程中内存泄露。
    import psutil
    print(psutil.virtual_memory().percent)
    
    1. 使用 gc 模块:使用 gc 模块来手动回收内存,可能会解决内存泄露问题。
    import gc
    gc.collect()
    
    1. 检查线程是否存在死锁:使用 threading 模块来检查线程是否存在死锁,可能会导致模型退出。
    import threading
    threading.active_count()
    
    1. 检查模型是否存在 bug:可能是YOLOv11模型本身存在 bug,导致模型退出。可以尝试使用其他模型或版本来验证。

    以下是一个简单的示例代码,使用 gc 模块来手动回收内存:

    from ultralytics import YOLO
    import time
    import gc
    
    yolo = YOLO()
    while True:
        yolo.detect(im)
        gc.collect()
        time.sleep(1)
    

    如果你遇到的问题仍然无法解决,可能需要提供更多的信息和代码来帮助 debug。

    评论

报告相同问题?

问题事件

  • 创建了问题 6月23日