使用Detectron2分6步进行目标检测

让我们看看如何在涉及文本识别的自定义数据集上使用FAIR(Facebook AI Research)的Detectron 2进行实例检测 。
使用Detectron2分6步进行目标检测文章插图
你是否尝试过使用你自己选择的自定义数据集从头开始训练对象检测模型?
如果是的话 , 你就会知道这个过程有多乏味 。 如果我们选择基于区域建议的方法 , 如更快的R-CNN , 或者我们也可以使用SSD和YOLO等一次性检测器算法 , 我们需要从使用特征金字塔网络和区域建议网络来构建模型 。
【使用Detectron2分6步进行目标检测】如果我们想从头开始实现的话 , 它们中的任何一个都有点复杂 。 我们需要一个框架 , 在这个框架中 , 我们可以使用最先进的模型 , 例如Fast , Faster和Mask R-CNN 。 然而 , 重要的是我们需要从头开始构建一个模型 , 以理解其背后的数学原理 。
如果我们想使用自定义数据集快速训练对象检测模型 , Detectron 2就可以提供帮助 。 Detectron 2库的模型库中存在的所有模型都在COCO Dataset上进行了预训练 。 我们只需要在预先训练的模型上微调我们的自定义数据集 。
Detectron 2完全重写了2018年发布的第一款Detectron 。 其前身是在Caffe2上编写的 , Caffe2是一个深度学习框架 , 也得到了Facebook的支持 。 Caffe2和Detectron现在都不推荐使用 。 Caffe2现在是PyTorch的一部分 , 它的继承者Detectron 2完全是在PyTorch上编写的 。
Detectron2旨在通过提供快速的训练并解决公司从研究到生产的过程中面临的问题 , 来促进机器学习的发展 。
以下是Detectron 2提供的各种类型的目标检测模型 。
使用Detectron2分6步进行目标检测文章插图
让我们直接研究实例检测 。
实例检测是指对象的分类和定位 , 并带有边界框 。 在本文中 , 我们将使用Detectron 2的模型库中的Faster RCNN模型来识别图像中的文本语言 。
请注意 , 我们将语言限制为2种 。
我们识别北印度语和英语文本 , 并为其他语言提供了一个名为“Others”的类 。
使用Detectron2分6步进行目标检测文章插图
使用Detectron2分6步进行目标检测文章插图
我们将实现一个以这种方式输出的模型 。
让我们开始吧!
使用Detectron 2 , 可以使用七个步骤对任何自定义数据集执行对象检测 。 所有这些步骤都可以在此Google Colab Notebook 中轻松找到 , 你可以立即运行!
使用Google Colab进行这项工作很容易 , 因为我们可以使用GPU进行更快的训练 。
步骤1:安装Detectron 2首先安装一些依赖项 , 例如Torch Vision和COCO API , 然后检查CUDA是否可用 。 CUDA有助于跟踪当前选择的GPU 。 然后安装Detectron2 。
# install dependencies: !pip install -U torch==1.5 torchvision==0.6 -f !pip install cython pyyaml==5.1!pip install -U 'git+#subdirectory=PythonAPI'import torch, torchvisionprint(torch.__version__, torch.cuda.is_available())!gcc --version# install detectron2:!pip install detectron2==0.1.3 -f 步骤2:准备和注册数据集导入一些必要的程序包 。
# You may need to restart your runtime prior to this, to let your installation take effectimport detectron2from detectron2.utils.logger import setup_loggersetup_logger()# import some common librariesimport numpy as npimport cv2import randomfrom google.colab.patches import cv2_imshow# import some common detectron2 utilitiesfrom detectron2 import model_zoofrom detectron2.engine import DefaultPredictorfrom detectron2.config import get_cfgfrom detectron2.utils.visualizer import Visualizerfrom detectron2.data import MetadataCatalog内置数据集中列出了detectron2具有内置支持的数据集 。 如果要使用自定义数据集 , 同时还要重用detectron2的数据加载器 , 则需要注册数据集(即 , 告诉detectron2如何获取数据集) 。

  • 内置数据集:
我们使用具有三个类别的文本检测数据集:
  1. 英语
  2. 印地语
  3. 其他
我们将从在COCO数据集上预先训练的现有模型训练文本检测模型 , 该模型可在detectron2的模型库中使用 。
如果你有兴趣了解从原始数据集格式到Detectron 2接受的格式的转换 , 请查看:
如何将数据输入模型?输入数据要求属于某些格式 , 如YOLO格式、PASCAL VOC格式、COCO格式等 。 Detectron2接受COCO格式的数据集 。 数据集的COCO格式由一个JSON文件组成 , 该文件包含图像的所有细节 , 如大小、注释(即边界框坐标)、与其边界框对应的标签等 。 例如 ,