近年来,卷积神经网络(Convolutional Neural Networks, CNNs)在图像识别方面取得了显著进展,尤其是在一些重要比赛中的表现甚至超越了人类水平。CNNs 的成功并非一蹴而就,而是经过长期发展和完善的结果。本文将探讨 CNNs 在图像识别领域的发展历程,重点介绍 CNNs 在图像实例分割中的应用。
CNNs 除了用于图像分类,还在许多其他领域得到广泛应用。本文将详细介绍 CNNs 在图像实例分割中的重要作用。
2012年,Alex Krizhevsky、Geoff Hinton 和 Ilya Sutskever 在 ImageNet 挑战赛中取得了优异成绩,自此 CNNs 成为了图像分类的标准工具。随后,CNNs 不断改进,如今在 ImageNet 挑战赛中的表现甚至超过了人类水平。
在 ImageNet 挑战赛中,CNNs 的表现已经超过了人类水平。这些成果令人震惊,但图像分类相对于人类视觉理解的复杂性和多样性来说还显得不足。
现实生活中的场景通常由许多不同的、重叠的物体、背景和动作组成。我们不仅需要识别这些不同的物体,还要识别它们的边界、差异和它们之间的关系。
CNNs 能否帮助我们完成如此复杂的任务?即,给出一张复杂的图像,能否利用 CNNs 识别图像中的不同目标及其边界?Ross Girshick 和他的同事们的研究表明,答案是肯定的。
本文将介绍目标检测和分割中所用到的主要技术及其演变过程,特别是 R-CNN(区域 CNN)、Fast R-CNN 和 Faster R-CNN,以及 Mask R-CNN。这些技术的论文链接如下:
2014年,R-CNN 开始应用于目标检测。受多伦多大学 Hinton 实验室的启发,加州大学伯克利分校的 Jitendra Malik 教授团队提出了将 Krizhevsky 的研究成果扩展到目标检测的方法。R-CNN 通过选择性搜索生成边界框,然后使用改进后的 AlexNet 判断这些区域建议是否有效。
R-CNN 采用选择性搜索方法生成边界框或区域建议,然后使用 AlexNet 进行分类。在 CNN 的最终层,增加了支持向量机(SVM),用于判断区域中是否包含目标及其类别。最后,通过线性回归调整边界框。
2015年,Ross Girshick 解决了 R-CNN 的效率问题,提出了 Fast R-CNN。Fast R-CNN 通过引入感兴趣区域池(RoIPool)减少了重复计算,并将所有模型整合到一个网络中,提高了整体效率。
RoIPool 通过一次完整的前向传播,从前向传播结果中提取每个感兴趣区域的特征。这样,我们只需要一次原始图像的 CNN 前向传播,而不是多次。
Fast R-CNN 将 CNN、分类器和边界框线性回归融合到单一模型中,使用 softmax 层取代 SVM 分类器,增加一个平行的线性回归层,以输出边界框坐标。
2016年,微软研究团队提出了 Faster R-CNN,进一步优化了区域建议的生成速度。Faster R-CNN 使用一个单独的 CNN 完成区域建议和分类,大大提高了效率。
Faster R-CNN 在 CNN 的基础上增加了一个区域建议网络(Region Proposal Network),该网络在 CNN 特征图上滑动窗口,输出 k 个潜在的边界框和分数。这些锚点框根据常见物体的长宽比构建,用于指导区域建议。
2017年,Kaiming He 和 Ross Girshick 在 Facebook AI 上提出了 Mask R-CNN,将 Faster R-CNN 扩展到像素级分割。Mask R-CNN 增加了一个全卷积网络(Fully Convolutional Network,FCN),用于生成 mask(分割输出结果)。
Mask R-CNN 通过 RoIAlign 方法解决了 RoIPool 引起的对齐问题,提高了分割精度。RoIAlign 使用双线性插值来精确对齐特征图和原始图像,避免了偏差。
Mask R-CNN 能够对图像中的目标进行分割和分类,提供精确的分割结果。
如果你想自己试验这些算法,这里有相关的源码库:
短短几年内,从 R-CNN 到 Mask R-CNN 的发展展示了计算机视觉的巨大进步。未来几年,在持续的资金、关注和支持下,计算机视觉技术有望取得更多突破,使我们更接近人类水平的视觉。
如果你对 CNN 感兴趣,不妨跟随拥有十余年数据科学经验的 Stephen 老师,一起在线解析代码,亲自搭建一个属于你的 CNN 应用。本活动完全免费!
扫码报名或点击阅读原文报名。
希望以上内容能帮助你更好地理解 CNN 在图像识别和分割中的应用。