IDE程序卡死,求帮助

Viewed 39

问题描述


请问yolov8n训练的模型转化为.kmode后,IDE程序怎么编写,我这边编写的程序运行一段时间后,就会卡死

import os
import gc
import sys
import time

from libs.PipeLine import PipeLine, ScopedTiming
from libs.YOLO import YOLOv8


labels = [
    "steel-ball"
]

kmodel_path = "/sdcard/kmodel/best.kmodel"


if __name__ == "__main__":

    # 【修改点1】模型输入尺寸改为 640×640
    rgb888p_size = [640, 640]      

    # 【修改点2】预览显示尺寸保持不变(可调,不影响推理)
    display_size = [640, 480]      # 保持不变

    # 初始化管道
    pl = PipeLine(
        rgb888p_size=rgb888p_size,
        display_size=display_size,
        display_mode="lcd"
    )
    pl.create()

    print("加载YOLOv8模型")

    # 初始化YOLOv8
    yolo = YOLOv8(
        task_type="detect",
        mode="video",
        kmodel_path=kmodel_path,
        labels=labels,
        rgb888p_size=rgb888p_size,

        # 【修改点3】模型输入尺寸必须与转换一致,改为 640×640
        model_input_size=[640, 640],  

        display_size=display_size,

        # 【修改点4】量化后置信度会降低,建议从0.3降到0.1或0.05
        conf_thresh=0.1,               # 原为 0.3

        nms_thresh=0.45,

        debug_mode=0
    )

    yolo.config_preprocess()

    print("YOLOv8启动成功")

    try:
        while True:
            os.exitpoint()

            with ScopedTiming("total", 1):
                img = pl.get_frame()
                res = yolo.run(img)
                yolo.draw_result(res, pl.osd_img)
                pl.show_image()
                gc.collect()

    except Exception as e:
        sys.print_exception(e)

    finally:
        yolo.deinit()
        pl.destroy()
        print("结束")

硬件板卡


亚博智能K230

1 Answers

你好,云训练平台有对应的部署脚本,使用邮件内的脚本即可。

感谢,已解决

修改后的程序如下:

# -*- coding: utf-8 -*-
'''
结合示例的稳定管道 + YOLOv8 检测
'''

import os, gc, sys, time
from libs.PipeLine import PipeLine
from libs.Utils import ScopedTiming
from libs.YOLO import YOLOv8   # 使用你之前用的 YOLOv8 封装

# ---------- 配置 ----------
# 使用示例的显示模式(HDMI,更稳定),如需 LCD 可改为 "lcd"
display_mode = "lt9611"        # 或 "lcd"

# 管道输入尺寸(参考示例,用 1280x720,但 YOLO 内部会缩放到模型尺寸)
rgb888p_size = [1280, 720]     # 高分辨率输入,画面更清晰

# 模型配置
kmodel_path = "/sdcard/kmodel/best.kmodel"   # 你的 320 或 640 模型
labels = ["steel-ball"]
conf_thresh = 0.1              # 量化后调低
nms_thresh = 0.45
model_input_size = [640, 640]  # 与你的 kmodel 一致(如果用的是 640 则改)

# ---------- 初始化管道 ----------
pl = PipeLine(rgb888p_size=rgb888p_size, display_mode=display_mode)
pl.create()
display_size = pl.get_display_size()

# ---------- 初始化 YOLOv8 ----------
yolo = YOLOv8(
    task_type="detect",
    mode="video",
    kmodel_path=kmodel_path,
    labels=labels,
    rgb888p_size=rgb888p_size,
    model_input_size=model_input_size,
    display_size=display_size,
    conf_thresh=conf_thresh,
    nms_thresh=nms_thresh,
    debug_mode=0
)
yolo.config_preprocess()
print("YOLOv8 初始化完成")

# ---------- 主循环 ----------
try:
    while True:
        with ScopedTiming("total", 1):
            img = pl.get_frame()          # 获取图像
            res = yolo.run(img)           # 推理
            yolo.draw_result(res, pl.osd_img)  # 绘制结果
            pl.show_image()               # 显示
            gc.collect()                  # 垃圾回收
except KeyboardInterrupt:
    print("用户中断")
except Exception as e:
    sys.print_exception(e)
finally:
    yolo.deinit()
    pl.destroy()
    print("资源释放完毕")