在 MMDetection 3.0 中,使用 visualizer 进行目标检测的真实框和检测框的可视化和绘制,并将结果保存为图像,是一个比较简便且高效的方法。以下是具体的实现步骤和代码示例。
步骤
加载必要的库和初始化模型。
加载测试图像和数据集。
进行推理。
使用 visualizer 绘制真实框和检测框。
保存绘制结果。
示例代码
首先,确保你的环境中安装了最新版本的 MMDetection。
bash
pip install mmdet==3.0.0
pip install -U openmim
mim install mmdet
以下是一个完整的代码示例:
python
import mmcv
import cv2
import numpy as np
import matplotlib.pyplot as plt
from mmdet.apis import init_detector, inference_detector
from mmdet.utils import register_all_modules
from mmdet.visualization import DetLocalVisualizer
from mmdet.datasets import build_dataset
from mmdet.datasets.pipelines import Compose
# 注册所有模块
register_all_modules()
# 配置文件和模型检查点的路径
config_file = 'path/to/your/config/file.py'
checkpoint_file = 'path/to/your/checkpoint/file.pth'
# 初始化模型
model = init_detector(config_file, checkpoint_file, device='cuda:0')
# 测试图像路径
img = 'path/to/your/test/image.jpg'
# 构建数据集
cfg = mmcv.Config.fromfile(config_file)
dataset = build_dataset(cfg.data.test)
# 获取样本数据
data = dataset[0]
# 提取图像和 ground truth boxes
img_path = data['img_metas'][0].data['filename']
gt_bboxes = data['gt_bboxes'][0].data.numpy()
gt_labels = data['gt_labels'][0].data.numpy()
# 加载图像
img = mmcv.imread(img_path)
# 绘制 ground truth boxes
visualizer = DetLocalVisualizer()
visualizer.dataset_meta = dataset.metainfo
# 创建 ground truth 数据
gt_data = {
'bboxes': gt_bboxes,
'labels': gt_labels
}
# 绘制 ground truth boxes
visualizer.add_datasample('ground_truth', img, gt_data, draw_gt=True)
# 推理检测
result = inference_detector(model, img)
# 绘制检测框
visualizer.add_datasample('detection', img, result, draw_pred=True, show=True)
# 保存结果图像
out_file = 'path/to/save/result_image.jpg'
visualizer.add_datasample('detection', img, result, draw_pred=True, show=False, out_file=out_file)