deployment - 保存经过训练的 Detectron2 模型并对单个图像进行预测

标签 deployment pytorch prediction fastapi detectron

我是 detectorron2 的新手,这是我的第一个项目。阅读文档并使用教程作为指导后,我在自定义数据集上训练了我的模型并执行了评估。

我现在想通过加载此保存的模型来对通过 API 收到的图像进行预测。我找不到任何可以帮助我完成这项任务的阅读 Material 。

为了保存我的模型,我使用此链接作为引用 - https://detectron2.readthedocs.io/en/latest/tutorials/models.html

我可以使用以下代码保存我训练过的模型-

from detectron2.modeling import build_model
model = build_model(cfg) # returns a torch.nn.Module

from detectron2.checkpoint import DetectionCheckpointer

checkpointer = DetectionCheckpointer(model, save_dir="output")
checkpointer.save("model_final") # save to output/model_final.pth

但我仍然对如何实现我想要的东西感到困惑。我可以使用一些指导来指导我下一步应该做什么。将非常感谢任何可以提供帮助的人。

最佳答案

对于单个图像,创建数据列表。将图像路径放入file_name中,如下所示:

test_data = [{'file_name': '.../image_1jpg',
              'image_id': 10}]

然后运行以下命令:

from detectron2.config import get_cfg
from detectron2.engine import DefaultPredictor
from detectron2.data import MetadataCatalog
from detectron2.utils.visualizer import Visualizer, ColorMode
import matplotlib.pyplot as plt
import cv2.cv2 as cv2


test_data = [{'file_name': '.../image_1jpg',
                  'image_id': 10}]

cfg = get_cfg()
cfg.merge_from_file("model config")
cfg.MODEL.WEIGHTS = "model_final.pth" # path for final model
predictor = DefaultPredictor(cfg)
im = cv2.imread(test_data[0]["file_name"])
outputs = predictor(im)
v = Visualizer(im[:, :, ::-1],
               metadata=MetadataCatalog.get(cfg.DATASETS.TRAIN[0]),
               scale=0.5,
               instance_mode=ColorMode.IMAGE_BW)
out = v.draw_instance_predictions(outputs["instances"].to("cpu"))
img = cv2.cvtColor(out.get_image()[:, :, ::-1], cv2.COLOR_RGBA2RGB)
plt.imshow(img)

这将显示单个图像的预测

关于deployment - 保存经过训练的 Detectron2 模型并对单个图像进行预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68343961/

相关文章:

machine-learning - PyTorch-BCELoss : ValueError: Target and input must have the same number of elements

machine-learning - 使用 Weka 预测 Google Play 评分

opencv - 使用卡尔曼滤波器的 3D 对象位置预测,可变时间段

iis - 在 IIS 中部署 Next Js 项目

javascript - 尝试在 digital ocean 上使用 meteor up

deployment - .NET Core 独立部署 (SCD) 在一个文件中

tensorflow - 训练 RNN,在每个时间步进行误差评估

ruby-on-rails - Capistrano 部署问题

python - 运行时错误: NCCL Error 2: unhandled system error

pytorch - 在 Pytorch 中对张量应用一维卷积