介绍
目标检测是计算机视觉中的一个大领域,也是计算机视觉“在野外”更重要的应用之一。 一方面,它可以用来构建在环境中导航代理的自主系统——无论是执行任务的机器人还是自动驾驶汽车,但这需要与其他领域的交叉。 然而,异常检测(例如生产线上的缺陷产品)、在图像中定位对象、面部检测和对象检测的各种其他应用都可以在不与其他领域相交的情况下完成。
对象检测不像图像分类那样标准化,主要是因为大多数新开发通常是由个人研究人员、维护人员和开发人员完成的,而不是大型库和框架。 很难将必要的实用程序脚本打包到 TensorFlow 或 PyTorch 等框架中,并维护迄今为止指导开发的 API 指南。
这使得对象检测稍微复杂一些,通常更冗长(但并非总是如此),并且比图像分类更不易接近。 在生态系统中的主要好处之一是它为您提供了一种无需搜索有关良好实践、工具和使用方法的有用信息的方法。 使用对象检测——大多数人必须对该领域的景观进行更多的研究才能获得良好的抓地力。
Meta AI 的 Detectron2 – 实例分割和对象检测
侦探2 是 Meta AI(前身为 FAIR – Facebook AI Research)的开源对象检测、分割和姿势估计包——集于一身。 给定输入图像,它可以返回对象的标签、边界框、置信度分数、掩码和骨架。 这在存储库的页面上得到了很好的体现:
它旨在用作一个库,您可以在其上构建研究项目。 它提供了一个 模型动物园 大多数实现通常依赖于 Mask R-CNN 和 R-CNN,以及 RetinaNet。 他们也有相当不错的 文件. 让我们运行一个示例推理脚本!
首先,让我们安装依赖项:
$ pip install pyyaml==5.1
$ pip install 'git+https://github.com/facebookresearch/detectron2.git'
接下来,我们将导入 Detectron2 实用程序——这是框架领域知识发挥作用的地方。 您可以使用 DefaultPredictor
类,通过传入一个设置它的配置对象。 这 Visualizer
提供对结果可视化的支持。 MetadataCatalog
和 DatasetCatalog
属于 Detectron2 的数据 API,并提供有关内置数据集及其元数据的信息。
让我们导入我们将使用的类和函数:
import torch, detectron2
from detectron2.utils.logger import setup_logger
setup_logger()
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
运用 requests
,我们将下载一个图像并将其保存到我们的本地驱动器:
import matplotlib.pyplot as plt
import requests
response = requests.get('http://images.cocodataset.org/val2017/000000439715.jpg')
open("input.jpg", "wb").write(response.content)
im = cv2.imread("./input.jpg")
fig, ax = plt.subplots(figsize=(18, 8))
ax.imshow(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))
结果是:
现在,我们加载配置,根据需要进行更改(模型默认在 GPU 上运行,因此如果您没有 GPU,您需要在配置中将设备设置为“cpu”):
cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")
在这里,我们指定要从哪个模型运行 model_zoo
. 我们已经导入了一个基于 Mask R-CNN 架构和 ResNet50 主干的实例分割模型。 根据您想要实现的目标(关键点检测、实例分割、全景分割或对象检测),您将加载适当的模型。
最后,我们可以用这个构造一个预测器 cfg
并在输入上运行它! 这 Visualizer
类用于在图像上绘制预测(在这种情况下,分段实例、类和边界框:
predictor = DefaultPredictor(cfg)
outputs = predictor(im)
v = Visualizer(im[:, :, ::-1], MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=1.2)
out = v.draw_instance_predictions(outputs["instances"].to("cpu"))
fig, ax = plt.subplots(figsize=(18, 8))
ax.imshow(out.get_image()[:, :, ::-1])
最后,这导致:
查看我们的 Git 学习实践指南,其中包含最佳实践、行业认可的标准以及随附的备忘单。 停止谷歌搜索 Git 命令,实际上 学习 它!
走得更远——计算机视觉的实用深度学习
你好奇的天性让你想走得更远? 我们建议查看我们的 套餐: “使用 Python 进行计算机视觉的实用深度学习”.
另一个计算机视觉课程?
我们不会对 MNIST 数字或 MNIST 时尚进行分类。 他们很久以前就发挥了作用。 在让高级黑盒架构承担性能负担之前,太多的学习资源专注于基本数据集和基本架构。
我们想专注于 揭秘, 实际性, 理解, 直觉 和 真实项目. 想学 形成一种 你可以有所作为? 我们将带您从大脑处理图像的方式到编写研究级的乳腺癌深度学习分类器,再到“产生幻觉”的深度学习网络,通过实际工作教您原理和理论,为您配备成为应用深度学习解决计算机视觉问题的专家的专业知识和工具。
里面是什么?
- 视觉的首要原则以及如何教计算机“看”
- 计算机视觉的不同任务和应用
- 让您的工作更轻松的交易工具
- 为计算机视觉寻找、创建和利用数据集
- 卷积神经网络的理论与应用
- 处理数据集中的域转移、共现和其他偏差
- 迁移学习并利用他人的训练时间和计算资源为您谋取利益
- 构建和训练最先进的乳腺癌分类器
- 如何将健康的怀疑态度应用于主流思想并理解广泛采用的技术的含义
- 使用 t-SNE 和 PCA 可视化 ConvNet 的“概念空间”
- 公司如何使用计算机视觉技术取得更好结果的案例研究
- 适当的模型评估、潜在空间可视化和识别模型的注意力
- 执行领域研究,处理您自己的数据集并建立模型测试
- 尖端架构、想法的发展、是什么让它们与众不同以及如何实现它们
- KerasCV – 用于创建最先进的管道和模型的 WIP 库
- 如何解析和阅读论文并自己实现它们
- 根据您的应用选择型号
- 创建端到端机器学习管道
- 使用 Faster R-CNN、RetinaNets、SSD 和 YOLO 进行对象检测的景观和直觉
- 实例和语义分割
- 使用 YOLOv5 进行实时对象识别
- 训练 YOLOv5 目标检测器
- 使用 KerasNLP(行业强大的 WIP 库)使用 Transformers
- 将 Transformers 与 ConvNet 集成以生成图像的标题
- 深梦
结论
实例分割比语义分割更进一步,并注意到一个类的各个实例(人 1、人 2 等)之间的质量差异,而不仅仅是它们是否属于一个。 在某种程度上——它是像素级分类。
在这个简短的指南中,我们快速了解了 Detectron2 如何使用 Mask R-CNN 使实例分割和对象检测变得容易且易于访问。