关于提高yolov8模型在k230上运行的帧率

Viewed 144

我rgb888p_size参数在[1280,720]时只有4~6 FPS,调成[640,640]大概也只有10FPS左右,我是用官方yoolo大作战上的示例代码看的,用的是yolov8s.pt训的,我想到27、28帧左右,请问大佬们还有没有其他方法可以提高帧率。
附上代码:

from libs.PipeLine import PipeLine, ScopedTiming
from libs.YOLO import YOLOv8
import os,sys,gc
import ulab.numpy as np
import image

if __name__=="__main__":
  # 显示模式,默认"hdmi",可以选择"hdmi"和"lcd"
  display_mode="lcd"
  rgb888p_size=[640,640]
  display_size=[800,480]
#    if display_mode=="hdmi":
#        display_size=[1920,1080]
#    else:
#        display_size=[800,480]
  # 可以根据您的模型自行修改路径参数
  kmodel_path="/data/yolo_kmodels/jiuyuan14.kmodel"
  labels = ["red",
            "blue",
            "black",
            "yellow",
            "hong",
            "lan",
            "bai"]
  confidence_threshold = 0.65
  model_input_size=[640,640]
  # 初始化PipeLine
  pl=PipeLine(rgb888p_size=rgb888p_size,display_size=display_size,display_mode=display_mode)
  pl.create()
  # 初始化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=confidence_threshold,debug_mode=0)
  yolo.config_preprocess()
  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()
1 Answers

rgb888p_size只是摄像头出图的大小,而不是模型输入的大小,你需要调整的是模型输入的分辨率,是转模型时指定的imgsz,和部署代码里面的model_input_size。简单的颜色检测不需要这么大的分辨率,你现在用的是640的。

感谢大佬回复,抱歉没说清楚,我yolo模型是用来识别不同颜色小球的,模型输入尺寸降低后检测精度有很大影响,是不是我没开启kpu加速之类的,想知道还有没有从其他方面增大帧率的方法。

单纯颜色小球还好吧,又不是啥复杂场景,320够用了

如果精度有影响,换一下转换模型的量化方式,把命令里面的ptq_option换成1