目标检测是深度学习的流行应用之一。让我们首先考虑一个现实生活中的例子。大多数人会在手机中使用 Google 相册,它会根据“事物”选项下的照片自动将照片分组。我在下面附上一个片段。
你可以观察到该应用程序能够从图片中识别对象并使用它们将它们分类为更广泛的类别。这是一个涉及对象检测的示例。
在本文中,我将使用名为 Detectron2 的最新稳健模型执行对象检测,使用 PyTorch 作为代码。
介绍 Detectron2
Facebook AI Research (FAIR) 提出了这个高级库,它在对象检测和分割问题上取得了惊人的结果。Detectron2 基于 maskrcnn 基准。它的实现是在 PyTorch 中。由于涉及大量计算,它需要 CUDA。
它支持边界框检测、实例分割、关键点检测、密集姿态检测等多项任务。它提供了预先训练的模型,你可以轻松地将其加载并用于新图像。
我将在下一节中介绍一个示例。
安装
第一步是安装detectron2库和需要的依赖
import torch
torch.__version__
import torchvision
#torchvision.__version__
!pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu102/torch1.7/index.html
现在,你必须导入detectron2 及其模块。
import detectron2
from detectron2.utils.logger import setup_logger
setup_logger()
%matplotlib inline
from detectron2 import model_zoo
from detectron2.engine import DefaultPredictor
from detectron2.config import get_cfg
from detectron2.utils.visualizer import Visualizer
from detectron2.data import MetadataCatalog, DatasetCatalog
from detectron2.structures import BoxMode
让我们也导入我们需要的公共库。
import numpy as np
import os, json, cv2, random
import matplotlib.pyplot as plt
使用预训练模型进行推理:代码
Detectron2 的许多预训练模型可以在MODEL_ZOO(https://github.com/facebookresearch/detectron2/blob/master/MODEL_ZOO.md)访问。这些模型已经在不同的数据集上进行了训练,可以随时使用。
即使人们在训练他们的自定义数据集时,他们也会使用这些预训练的权重来初始化他们的模型。事实证明,它可以减少训练时间并提高性能。我们将使用的模型是在 COCO 数据集上预训练的。
首先,我们必须定义对象检测模型的完整配置。我们从detectron2.config 模块中导入了'get_cfg' 函数,我们现在将使用它。
我选择了 Coco 实例分段配置