上篇我因为写太多,卡住了,吓我一身冷汗,码字不容易啊。。。
上一篇讲到哪里来着?“待会儿就调用它“ 对吧?
调用前,我给大家展示一下目前物理设备接入的状态:
然后打印了3D支架:
和一个max7219的点阵屏幕,顺便也打印了支架,接入了我之前一个摄像头,请忽略它叙利亚战损的效果。
我们赶紧创建一个python代码文件 benchmark_image.py内容为:
#!/usr/bin/env python3
"""YOLO26l INT8 (QNN 2.36) 单张图片基准测试 —— 犀牛派X1 / QCS8550。
用法:
python3 benchmark_image.py # 默认 bus.jpg,推理 20 次
python3 benchmark_image.py --imgs xxx.jpg --invoke_nums 50
"""
from __future__ import annotations
import argparse
from pathlib import Path
import cv2
from utils import draw_detect_res
from yolo import YoloModel
OUTPUT_SHAPES = [[1, 4, 8400], [1, 80, 8400]]
OUTPUT_LAYOUT = "split_xyxy"
CLASS_NUM = 80
DEFAULT_MODEL = "./models/QCS8550/W8A8/cutoff_yolo26l_qcs8550_w8a8.qnn236.ctx.bin"
def parse_args():
parser = argparse.ArgumentParser(description="Run YOLO26l QNN model with AidLite.")
parser.add_argument("--target_model", type=str, default=DEFAULT_MODEL)
parser.add_argument("--imgs", type=str, default="./bus.jpg")
parser.add_argument("--height", type=int, default=640)
parser.add_argument("--width", type=int, default=640)
parser.add_argument("--cls_num", type=int, default=CLASS_NUM)
parser.add_argument("--invoke_nums", type=int, default=20)
parser.add_argument("--model_type", type=str, default="QNN")
parser.add_argument("--conf_thres", type=float, default=0.25)
parser.add_argument("--iou_thres", type=float, default=0.45)
parser.add_argument("--save_path", type=str, default="./result.jpg")
return parser.parse_args()
def main() -> int:
args = parse_args()
frame = cv2.imread(args.imgs)
if frame is None:
raise FileNotFoundError(args.imgs)
model = YoloModel(
args.target_model,
OUTPUT_SHAPES,
OUTPUT_LAYOUT,
args.width,
args.height,
args.cls_num,
args.model_type,
)
detections = model(frame, args.invoke_nums, args.conf_thres, args.iou_thres)
print("===================")
print(f"Detect {len(detections)} targets.")
result = draw_detect_res(frame, detections)
Path(args.save_path).parent.mkdir(parents=True, exist_ok=True)
cv2.imwrite(args.save_path, result)
print(f"结果图已保存: {args.save_path}")
return 0
if __name__ == "__main__":
raise SystemExit(main())
然后在终端里面执行一下, 摄像头得对着自己。
python3 benchmark_image.py
顺利检测完成。
检测完成我们就可以继续向前推进了,每天一个裁员小技巧哈哈!












