You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Coral USB Accelerator推理报错:'Delegate'对象无'_library'属性

修复MacOS下Coral USB Accelerator推理时的AttributeError错误

问题场景

MacOS系统中,使用适配Edge TPU的全量化TensorFlow Lite模型,通过Coral USB Accelerator执行人检测推理时,运行代码出现以下错误,已安装所有必要依赖但问题仍未解决:

AttributeError: 'Delegate' object has no attribute '_library'

运行代码

import argparse
import cv2
import os

from pycoral.adapters.common import input_size
from pycoral.adapters.detect import get_objects
from pycoral.utils.dataset import read_label_file
from pycoral.utils.edgetpu import make_interpreter
from pycoral.utils.edgetpu import run_inference

def main():
    default_model_dir = 'parents dir'
    default_model = 'model dir'
    default_labels = 'labels dir'
    parser = argparse.ArgumentParser()
    parser.add_argument('--model', help='.tflite model path',
                        default=os.path.join(default_model_dir,default_model))
    parser.add_argument('--labels', help='label file path',
                        default=os.path.join(default_model_dir, default_labels))
    parser.add_argument('--top_k', type=int, default=3,
                        help='number of categories with highest score to display')
    parser.add_argument('--camera_idx', type=int, help='Index of which video source to use. ', default = 0)
    parser.add_argument('--threshold', type=float, default=0.3,
                        help='classifier score threshold')
    args = parser.parse_args()

    print('Loading {} with {} labels.'.format(args.model, args.labels))
    interpreter = make_interpreter(args.model)
    interpreter.allocate_tensors()
    labels = read_label_file(args.labels)
    inference_size = input_size(interpreter)

    cap = cv2.VideoCapture(args.camera_idx)

    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break
        cv2_im = frame

        cv2_im_rgb = cv2.cvtColor(cv2_im, cv2.COLOR_BGR2RGB)
        cv2_im_rgb = cv2.resize(cv2_im_rgb, inference_size)
        run_inference(interpreter, cv2_im_rgb.tobytes())
        objs = get_objects(interpreter, args.threshold)[:args.top_k]
        cv2_im = append_objs_to_img(cv2_im, inference_size, objs, labels)

        cv2.imshow('frame', cv2_im)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    cap.release()
    cv2.destroyAllWindows()

def append_objs_to_img(cv2_im, inference_size, objs, labels):
    height, width, channels = cv2_im.shape
    scale_x, scale_y = width / inference_size[0], height / inference_size[1]
    for obj in objs:
        bbox = obj.bbox.scale(scale_x, scale_y)
        x0, y0 = int(bbox.xmin), int(bbox.ymin)
        x1, y1 = int(bbox.xmax), int(bbox.ymax)

        percent = int(100 * obj.score)
        label = '{}% {}'.format(percent, labels.get(obj.id, obj.id))

        cv2_im = cv2.rectangle(cv2_im, (x0, y0), (x1, y1), (0, 255, 0), 2)
        cv2_im = cv2.putText(cv2_im, label, (x0, y0+30),
                             cv2.FONT_HERSHEY_SIMPLEX, 1.0, (255, 0, 0), 2)
    return cv2_im

if __name__ == '__main__':
    main()

修复方案

  • 版本兼容性修复
    该错误多由TensorFlow Lite与PyCoral版本不匹配导致,执行以下步骤重新安装兼容版本:

    pip uninstall -y pycoral tflite-runtime
    pip install tflite-runtime==2.14.0 pycoral==2.0.0
    
  • 重新安装Edge TPU运行时库
    MacOS下可能存在库加载异常,重新部署官方运行时库:

    1. 清理现有库文件:
      sudo rm -rf /usr/local/lib/libedgetpu*
      
    2. 下载对应Mac架构(arm64/x86_64)的Edge TPU运行时包,解压后复制并链接库文件:
      sudo cp libedgetpu.1.dylib /usr/local/lib/
      sudo ln -s /usr/local/lib/libedgetpu.1.dylib /usr/local/lib/libedgetpu.dylib
      
  • 验证设备连接
    确保Coral USB Accelerator被系统识别:

    system_profiler SPUSBDataType | grep -i "Coral"
    

    无输出则尝试更换USB端口或重新插拔设备。

  • 显式指定Edge TPU设备
    修改代码中解释器初始化逻辑,显式指定使用USB设备的Edge TPU:
    将原代码中interpreter = make_interpreter(args.model)替换为:

    interpreter = make_interpreter(args.model, device='usb')
    

内容的提问来源于stack exchange,提问作者V Mukund

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:24:50