一、前言

sam或者mobilesam的python推理都存在一些前处理,如下所示:

sam.to(device='cuda')
predictor = SamPredictor(sam)
predictor.set_image(image)
image_embedding = predictor.get_image_embedding().cpu().numpy()
    checkpoint = "./weights/mobile_sam.pt"
    model_type = "vit_t"
    
    sam = sam_model_registry[model_type](checkpoint=checkpoint)
    
    # export onnx
    onnx_model_path = "sam_onnx_example_new.onnx"
    
    onnx_model = SamOnnxModel(sam, return_single_mask=True)
    
    print(checkpoint)
    
    export_onnx_model(onnx_model)
    
    """
    如果需要,还可以对模型进行量化和优化。我们发现,这显著改善了web运行时,
    而性能的变化可以忽略不计。
    """
    
    result_quantized = quantized_model(onnx_model_quantized_path = "sam_onnx_quantized_example.onnx")
    
    
    image = cv2.imread('images/test/picture2.jpg')
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    plt.figure(figsize=(10,10))
    plt.imshow(image)
    plt.axis('on')
    plt.show()
    
    
    ort_session = onnxruntime.InferenceSession(onnx_model_path)
    
    """
    要使用ONNX模型,必须首先使用SAM图像编码器对图像进行预处理。
    这是一个较重的过程ÿ
11-22 16:42