程序员如何学习计算机视觉?你需要了解这五大技术!( 四 )


如下图所示,MD Net 可分为两个部分,即 K 个特定目标分支层和共享层:每个分支包含一个具有 softmax 损失的二进制分类层,用于区分每个域中的对象和背景;共享层与所有域共享,以保证通用表示 。

程序员如何学习计算机视觉?你需要了解这五大技术!

文章插图
 
近年来,深度学习研究人员尝试使用了不同的方法来适应视觉跟踪任务的特征,并且已经探索了很多方法:
  • 应用到诸如循环神经网络( RNN )和深度信念网络(DBN )等其他网络模型;
  • 设计网络结构来适应视频处理和端到端学习,优化流程、结构和参数;
  • 或者将深度学习与传统的计算机视觉或其他领域的方法(如语言处理和语音识别)相结合 。
▌4、语义分割
程序员如何学习计算机视觉?你需要了解这五大技术!

文章插图
 
计算机视觉的核心是分割,它将整个图像分成一个个像素组,然后对其进行标记和分类 。特别地,语义分割试图在语义上理解图像中每个像素的角色(比如,识别它是汽车、摩托车还是其他的类别) 。如上图所示,除了识别人、道路、汽车、树木等之外,我们还必须确定每个物体的边界 。因此,与分类不同,我们需要用模型对密集的像素进行预测 。
与其他计算机视觉任务一样,卷积神经网络在分割任务上取得了巨大成功 。最流行的原始方法之一是通过滑动窗口进行块分类,利用每个像素周围的图像块,对每个像素分别进行分类 。但是其计算效率非常低,因为我们不能在重叠块之间重用共享特征 。
解决方案就是加州大学伯克利分校提出的全卷积网络( FCN ),它提出了端到端的卷积神经网络体系结构,在没有任何全连接层的情况下进行密集预测 。
这种方法允许针对任何尺寸的图像生成分割映射,并且比块分类算法快得多,几乎后续所有的语义分割算法都采用了这种范式 。

程序员如何学习计算机视觉?你需要了解这五大技术!

文章插图
 
但是,这也仍然存在一个问题:在原始图像分辨率上进行卷积运算非常昂贵 。为了解决这个问题,FCN 在网络内部使用了下采样和上采样:下采样层被称为条纹卷积( striped convolution );而上采样层被称为反卷积( transposed convolution ) 。
尽管采用了上采样和下采样层,但由于池化期间的信息丢失,FCN 会生成比较粗糙的分割映射 。SegNet 是一种比 FCN (使用最大池化和编码解码框架)更高效的内存架构 。在 SegNet 解码技术中,从更高分辨率的特征映射中引入了 shortcut/skip connections,以改善上采样和下采样后的粗糙分割映射 。
程序员如何学习计算机视觉?你需要了解这五大技术!

文章插图
 
目前的语义分割研究都依赖于完全卷积网络,如空洞卷积 ( Dilated Convolutions ),DeepLab 和 RefineNet。
▌5?、实例分割
程序员如何学习计算机视觉?你需要了解这五大技术!

文章插图
 
除了语义分割之外,实例分割将不同类型的实例进行分类,比如用 5 种不同颜色来标记 5 辆汽车 。分类任务通常来说就是识别出包含单个对象的图像是什么,但在分割实例时,我们需要执行更复杂的任务 。我们会看到多个重叠物体和不同背景的复杂景象,我们不仅需要将这些不同的对象进行分类,而且还要确定对象的边界、差异和彼此之间的关系!
到目前为止,我们已经看到了如何以多种有趣的方式使用卷积神经网络的特征,通过边界框有效定位图像中的不同对象 。我们可以将这种技术进行扩展吗?也就是说,对每个对象的精确像素进行定位,而不仅仅是用边界框进行定位? Facebook AI 则使用了 Mask R-CNN 架构对实例分割问题进行了探索 。
程序员如何学习计算机视觉?你需要了解这五大技术!

文章插图
 
就像 Fast R-CNN 和 Faster R-CNN 一样,Mask R-CNN 的底层是鉴于 Faster R-CNN 在物体检测方面效果很好,我们是否可以将其扩展到像素级分割?
Mask R-CNN 通过向 Faster R-CNN 添加一个分支来进行像素级分割,该分支输出一个二进制掩码,该掩码表示给定像素是否为目标对象的一部分:该分支是基于卷积神经网络特征映射的全卷积网络 。将给定的卷积神经网络特征映射作为输入,输出为一个矩阵,其中像素属于该对象的所有位置用 1 表示,其他位置则用 0 表示,这就是二进制掩码 。
程序员如何学习计算机视觉?你需要了解这五大技术!


推荐阅读