png

图像探测与分割

这部分是我此次学习的初衷,在见识了人工智能中深度学习的强大后,开始思考它们在哪里能够应用。以下图片均来自于 github。

图像探测与分割

如图所示,就是探测图像中存在什么内容,将其识别并标记出其区域。

图像探测与分割

原理

如何用前几天学的内容做到呢?

流行的图像识别算法

目标探测主流的算法分为两个类型:(1)提取获取关键部位(region proposal),然后对这些部位进行分类与回归,如R-CNN算法;(2)均匀的密集采样,如Yolo和SSD,主要是均匀地在图片的不同位置进行密集抽样,采用不同尺度和长宽比,利用CNN提取特征后进行分类与回归,速度快,但是训练数据量大且不均衡。算法的准确度和速度性能如图所示。

[](ssd_eccv2016_slide.pdf)

事实上,上述分类稍微有些过时了,下面是新一点的算法介绍(到2017年底)

M-RCNN

  • 1.锚定

框出特征区域

  • 2.提取

细化提取

  • 3.musk生成

生成的掩码并将它们缩放在正确位置的图像上。

  • 4.Layer激活

  • 5.权重直方图

SSD

  • 输入图片到网络,生成一系列feature map
  • 在此基础上生成 box,然后将这些 box回归到正确的位置上(一次前向传播就可以完成)。
  • 输入 W×H 的feature map,生成均匀分布的 W×H 个box中心,每个中心上,生成多个不同长宽比的 box,如[13, 12, 1, 2,3]。一个feature map上可以生成的 box总数是 W×H×不同长宽比数量。

这是在Python 3,Keras和TensorFlow上实现Mask R-CNN。该模型为图像中对象的每个实例生成边界框和分割蒙版。它基于特征金字塔网络(FPN)和ResNet101骨干网。

实例分割示例

存储库包括: *基于FPN和ResNet101构建的Mask R-CNN的源代码。 * MS COCO的培训代码 * MS COCO的预训练重量 * Jupyter笔记本可以在每一步都可视化检测管道 *用于多GPU培训的ParallelModel类 *评估MS COCO指标(AP) *您自己的数据集培训示例

代码记录在案,设计易于扩展。如果您在研究中使用它,请考虑引用此存储库(下面的bibtex)。如果您从事3D视觉工作,您可能会发现我们最近发布的Matterport3D数据集也很有用。 该数据集是由我们的客户捕获的3D重建空间创建的,这些客户同意将其公开用于学术用途。您可以在此处查看更多示例。

# 入门 * demo.ipynb是最简单的开始方式。它显示了使用在MS COCO上预训练的模型来分割您自己图像中的对象的示例。 它包括在任意图像上运行对象检测和实例分割的代码。

  • train_shapes.ipynb显示了如何在您自己的数据集上训练Mask R-CNN。本笔记本介绍了一个玩具数据集(形状),以演示对新数据集的培训。

*(model.pyutils.pyconfig.py):这些文件包含主屏蔽RCNN实现。

  • inspect_data.ipynb。这款笔记本可视化不同的预处理步骤 准备培训数据。

  • inspect_model.ipynb本笔记本深入探讨了检测和分割对象的步骤。它提供了管道每个步骤的可视化。

  • inspect_weights.ipynb 这个笔记本检查训练模型的权重,并寻找异常和奇怪的模式。

#逐步检测 为了帮助调试和理解模型,有3个笔记本 (inspect_data.ipynbinspect_model.ipynbinspect_weights.ipynb)提供了大量可视化,并允许逐步运行模型以检查每个点的输出。这里有一些例子:

6.登录TensorBoard

TensorBoard是另一个很棒的调试和可视化工具。该模型配置为记录损失并在每个时期结束时保存权重。

6.将不同的部分组合成最终结果

#MS COCO培训 我们为MS COCO提供预先训练的砝码,使其更容易入手。您可以 使用这些权重作为起点来训练您自己在网络上的变化。 培训和评估代码在samples / coco / coco.py中。你可以导入它 Jupyter笔记本中的模块(请参阅提供的笔记本示例)或您 可以直接从命令行运行它:

``` #从预先训练的COCO重量开始训练新模型 python3 samples / coco / coco.py train –dataset = / path / to / coco / –model = coco

#从ImageNet权重开始训练一个新模型 python3 samples / coco / coco.py train –dataset = / path / to / coco / –model = imagenet

#继续训练您之前训练过的模型 python3 samples / coco / coco.py train –dataset = / path / to / coco / –model = / path / to / weights.h5

#继续训练您训练的最后一个模型。这会找到 #模型目录中最后训练的权重。 python3 samples / coco / coc