一、前言
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图像编码器对图像进行预处理。
这是一个较重的过程ÿ