[MMDetection]COCO数据集可视化验证

代码示例展示了如何在使用MMDetection训练模型前,通过Python对图像数据集进行可视化验证,包括查看图片和COCO数据集的标签匹配情况。通过显示图片及其对应的边界框,确保数据和标注的一致性。
摘要由CSDN通过智能技术生成


在使用MMDetection训练之前,需要对图像进行可视化验证,验证数据和标签是否对齐。

# 数据集可视化
import os
import matplotlib.pyplot as plt
from PIL import Image

original_images = []
images = []
texts = []
plt.figure(figsize=(16,12))

image_paths = [filename for filename in os.listdir(r"E:\****************************")][:8]   # 取前8张图片

for i, filename in enumerate(image_paths):
    name = os.path.splitext(filename)[0]

    image = Image.open(os.path.join(r"E:\***************************",filename)).convert("RGB")

    plt.subplot(4,2,i+1)
    plt.imshow(image)
    plt.title(f"{filename}")
    plt.xticks([])   # 设置坐标轴
    plt.yticks([])
plt.tight_layout()
plt.show()

以上代码 提供了数据集图片查看的功能,需要加入自己对应的图片路径。

以下代码 提供了COCO数据集标签与图片的显示功能,从数据集中随机选取了8张图片进行展示,以可视化数据集图片与标签是否对准。需要填入json路径和image的保存路径。

# COCO 数据集可视化
from pycocotools.coco import COCO
import numpy as np
import os.path as osp
from matplotlib.collections import PatchCollection
from matplotlib.patches import Polygon
from PIL import Image

def apply_exif_orientation(image):
    _ExIF_ORIENT = 274
    if not hasattr(image,'getexif'):
        return image
    
    try:
        exif = image.getexif()
    except Exception:
        exif = None
    
    if exif is None:
        return image
    
    orientation = exif.get(_ExIF_ORIENT)

    method = {
        2: Image.FLIP_LEFT_RIGHT,
        3: Image.ROTATE_180,
        4: Image.FLIP_TOP_BOTTOM,
        5: Image.TRANSPOSE,
        6: Image.ROTATE_270,
        7: Image.TRANSVERSE,
        8: Image.ROTATE_90,
    }.get(orientation)

    if method is not None:
        return image.transpose(method)
    return image


def show_bbox_only(coco, anns, show_label_bbox = True, is_filling = True):
    if len(anns) == 0:
        return
    
    ax = plt.gca()
    ax.set_autoscale_on(False) # 自动调整坐标轴范围

    image2color = dict()
    for cat in coco.getCatIds():
        image2color[cat] = (np.random.random((1, 3)) * 0.7 + 0.3).tolist()[0]

    polygons = []
    colors = []

    for ann in anns:
        color = image2color[ann["category_id"]]
        bbox_xmin, bbox_ymin, bbox_w, bbox_h = ann['bbox']
        poly = [[bbox_xmin, bbox_ymin],[bbox_xmin, bbox_ymin+bbox_h],
                [bbox_xmin+bbox_w, bbox_ymin+bbox_h], [bbox_xmin+bbox_w, bbox_ymin]]
        polygons.append(Polygon(np.array(poly).reshape((4,2))))
        colors.append(color)

        if show_label_bbox:
            label_bbox = dict(facecolor = color)
        else:
            label_bbox = None
        ax.text(
            bbox_xmin,
            bbox_ymin,
            "%s" % (coco.loadCats(ann['category_id'])[0]['name']),
            color = 'white',
            bbox = label_bbox)
    
    if is_filling:
        p = PatchCollection(
            polygons, facecolor = colors, linewidths = 0, alpha = 0.4)
        ax.add_collection(p)

    p = PatchCollection(
        polygons, facecolor = None, linewidths = 0, alpha = 0.4)
    ax.add_collection(p)

coco = COCO(r'E:\*******保存的json文件夹\test.json')
image_ids = coco.getImgIds()
np.random.shuffle(image_ids)

plt.figure(figsize=(16,12))

for i in range(8):
    image_data = coco.loadImgs(image_ids[i])[0]
    image_path = osp.join(r'E:\保存的图片文件夹',image_data['file_name'])
    annotation_ids = coco.getAnnIds(
        imgIds=image_data['id'], catIds=[], iscrowd=0
    )
    annotations = coco.loadAnns(annotation_ids)
    ax = plt.subplot(4,2,i+1)
    image = Image.open(image_path).convert('RGB')

    image = apply_exif_orientation(image)

    ax.imshow(image)
    show_bbox_only(coco, annotations)

    plt.title(f"{filename}")
    plt.xticks([])
    plt.yticks([])

plt.tight_layout()
plt.show()

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: mmdetection是一个开源目标检测框架,可以用来训练COCO数据集。要使用mmdetection训练COCO数据集,需要先下载COCO数据集并将其转换为mmdetection可读的格式。然后,可以使用mmdetection提供的配置文件和训练脚本进行训练。具体步骤可以参考mmdetection官网上的文档和示例代码。 ### 回答2: MMDetection是一个基于PyTorch的开源深度学习工具箱,用于目标检测领域的研究和应用。而COCO数据集是一个用于检测、分割、图像描述、行为分类和人体关键点检测等多种计算机视觉任务的数据集MMDetection训练COCO数据集的流程如下: 1.获取COCO数据集:从COCO官网(http://cocodataset.org/#download)下载数据集,并按照需要的任务(如目标检测)进行预处理。 2.选择模型:对于目标检测任务,MMDetection提供了各种各样的预训练模型,包括Faster R-CNN、Mask R-CNN、RetinaNet等,可根据需求选择合适的模型。 3.准备代码:在MMDetection的官方代码中提供了训练、评估和测试的脚本。在开始训练前,需要根据数据集的实际情况对代码进行必要的修改。 4.准备模型参数:MMDetection提供了训练时的参数设置模板和训练过程中的参数存档,可以根据需要进行修改。 5.开始训练:通过运行命令行,启动训练过程。训练时需要注意学习率和训练轮数等超参数的设置,以达到最优的效果。 6.模型评估:在训练完成后,需要对模型进行评估,以了解其在测试集上的性能。 7.模型推理:最后,可以使用训练好的模型进行推理,对输入图像进行目标检测和分割等操作。 总的来说,使用MMDetection进行COCO数据集的训练并不复杂,关键在于对代码和参数的熟悉和调整,以及对数据集的预处理和评估的认真和细致。只有在这些方面做足功夫,才能得到高效、准确的目标检测模型。 ### 回答3: MMDetection是一种基于PyTorch深度学习框架的目标检测工具,它可以实现对于各种物体进行检测、识别和跟踪。COCO数据集是一个大规模的目标识别、检测和分割数据集,其中包含超过33万张图像、超过2.5万种物体。本文将介绍如何使用MMDetection训练COCO数据集。 1. 数据准备 首先,需要下载COCO数据集并进行解压缩。MMDetection支持COCO格式的标注文件,因此需要将每个图像的标注信息存储在一个JSON文件中。可以使用COCO API中的代码将标注文件转换为JSON格式。此外,在训练之前需要将数据集分割成训练集、验证集和测试集。可以使用COCO API提供的代码来完成此操作。 2. 模型选择 选择合适的模型是很关键的。MMDetection支持许多常用的目标检测模型,例如Faster R-CNN、Mask R-CNN、RetinaNet等。这些模型各有优缺点,可以根据具体任务需求和计算资源选择最适合的模型。在COCO数据集中,一般使用Faster R-CNN或Mask R-CNN等比较先进的模型。 3. 配置文件 配置文件是训练过程中最重要的文件之一。它定义了模型的架构、超参数、数据预处理和训练的其他参数。MMDetection提供了许多预先定义好的配置文件,我们可以选择合适的配置文件来满足具体的需求。如果需要对现有的配置文件进行修改,可以编辑和保存一个新的配置文件。 4. 训练 通过配置文件可以设置训练参数,例如学习率、优化器、训练轮数、batch size等。可以使用命令行运行MMDetection来开始训练模型。在训练过程中,可以监测模型的性能指标并进行调整。 5. 测试 在训练完成后,需要对模型进行测试以评估其性能。可以使用命令行运行MMDetection来测试模型,根据测试结果可以对模型进行调整和改进。 总之,使用MMDetection训练COCO数据集需要进行数据准备、模型选择、配置文件、训练和测试等一系列步骤。在这个过程中需要不断调整模型和超参数以获得最佳结果。MMDetection具有较高的灵活性和易用性,可以帮助用户快速实现目标检测任务。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开始学AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值