Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于深度学习的图像语义分割算法综述

基于深度学习的图像语义分割算法综述

作者头像
机器学习算法工程师
发布于 2018-08-06 09:53:19
发布于 2018-08-06 09:53:19
2.5K0
举报

作者: 叶 虎

编辑:赵一帆

前 言

本文翻译自An overview of semantic image segmentation,原作者保留版权。

这篇文章讲述卷积神经网络图像语义分割(semantic image segmentation)的应用。图像分割这项计算机视觉任务需要判定一张图片中特定区域的所属类别。

这个图像里有什么?它在图像中哪个位置?

更具体地说,图像语义分割的目标是将图像的每个像素所属类别进行标注。因为我们是预测图像中的每个像素,这个任务通常被称为密集预测(dense prediction)。

需要注意的一点是我们不对同一类的实例进行分离; 我们只关心每个像素的类别。 换句话说,如果输入图像中有两个相同类别的对象,则分割图本身并不一定将它们区分为单独的对象。 存在另外一类不同的模型,称为实例分割(instance segmentation)模型,其将分离同一类的各个对象。

分割模型广泛应用在各领域中,包括:

  • 自动驾驶(Autonomous vehicles)
    • 汽车需要安装必要的感知系统以了解它们的环境,这样自动驾驶汽车才能够安全地驶入现有的道路。
  • 影像诊断(Medical image diagnostics)
    • 机器在分析能力上比放射科医生更强,而且可以大大减少诊断所需时间。分割后的胸部X片,其中红色是心脏,绿色是肺,蓝色是锁骨。

章节目录

  • 任务描述
  • 架构设计
    • 上采样(upsampling)方法
    • 全卷积网络(Fully convolutional networks)
    • 添加短路连接(Adding skip connections)
    • 高级的U-Net变体(Advanced U-Net variants)
    • 空洞卷积(Dilated/atrous convolutions)
  • 损失函数
  • 常用数据集以及图像分割大赛
    • 数据集
    • 以往的Kaggle竞赛
  • 延伸阅读

01

任务描述

简单来说,我们的目标是输入一个RGB彩色图片 height X width X 3 或者一个灰度图 height X width X 1,然后输出一个包含各个像素类别标签的分割图height X width X 1。

注意:为了清晰起见,这里给出的是一个低分辨率的预测图。在现实中,分割标签的分辨率应该与原始输入的分辨率是一致的。

与我们处理标准分类值的方式类似,我们的预测目标可以采用one-hot编码,即为每一个可能的类创建一个输出通道。通过取每个像素点在各个channel的argmax可以得到最终的预测分割图(如上图所示)。

我们可以将分割图叠加到原始图像上可以检验分割效果。当我们将预测结果叠加到单个channel时,称这为一个mask,它可以给出一张图像中某个特定类的所在区域。

02

架构设

对于图像语义分割任务,构建神经网络架构的一种简单方法是简单地堆叠多个卷积层(使用same padding以维持维度大小)并输出最终的分割图。 这通过特征映射的连续变换直接学习从输入图像到其对应分割的映射关系;但是,在整个网络中保持图像原始分辨率的计算成本非常高。

缺点:在整个网络中维持图像原始维度计算成本很高(来源:cs231n)

回想一下,对于深度卷积网络,前面的层倾向于学习低级特征,而后面的层学习更高级的特征映射。为了保持表现力,我们通常需要在网络更深时增加特征图(channels)的数量。

这不一定对图像分类的任务造成问题,因为对于该任务,我们只关心图像中包含的物体(而不是它所在的位置)。 因此,我们可以通过通过池化或跨步卷积(即压缩空间分辨率)周期性地对特征图进行下采样来减轻计算负载。然而,对于图像分割,我们希望我们的模型最后给出全分辨率的语义预测。

用于图像分割模型的一种流行方法是遵循编码器/解码器(encoder/decoder)结构,其中我们先对输入进行下采样(downsample),得到较低分辨率的特征映射,其学习到了如何高效地区分各个类,然后对这些特征进行上采样(upsample)以得到一个全分辨率分割图。

上采样(upsampling)方法

可以采用不同的方法来上采样以提高特征图的分辨率。 pooling操作聚合一个局部区域(平均或最大池化)来下采样,相对应地,unpooling操作通过将单个值分配到更高的分辨率来上采样。

然而目前为止最流行的方法是转置卷积(transpose convolutions),因为它是通过学习得到的上采样方法。

而典型的卷积运算将视野中所有值求点积并在相应位置输出单个值,而转置卷积恰恰相反。对于转置卷积,低分辨率特征图中某个值,乘以卷积核中的权重值,将这些加权值映射到输出特征图。

某些卷积核可能在输出特征图中产生重叠(例如的卷积, 如下图所示),此时重叠值就简单地加在一起。 不好的是,这往往会在输出中形成棋盘效应(不均匀重叠,可以参考Deconvolution and Checkerboard Artifacts),这是不希望被看到的,因此最好确保选择的卷积核不会导致重叠。

全卷积网络(Fully convolutional networks)

2014年底,Long等人介绍了使用“全卷积”网络解决像素级图像分割任务,其实现了端到端的训练。 该论文的作者采用已有的较优图像分类网络(例如AlexNet)作为网络的编码器模块,并增加了带有转置卷积层的解码器模块,以便对粗粒度的特征图进行上采样以得到全分辨率分割图。

整个网络如下所示,它采用像素级交叉熵损失函数进行训练。

然而,由于编码器模块将输入的分辨率降低了32倍,所以解码器模块很难得到细粒度的分割(如下所示)。

作者对这种困境做出了如下评论:

语义分割面临语义和位置之间的内在矛盾:全局信息解决的是“是什么”问题,而局部信息解决的是“在哪里”的问题……结合细粒度层和粗粒度层使模型能在全局信息下做出局部预测。

添加短路连接(Adding skip connections)

作者对编码的特征缓慢上采样(分阶段)来解决上面的问题,并添加了从前面层的短路连接,最后对这样的两个特征图求和。

这些从网络中较早层的短路连接(在下采样操作之前)应该包含必要的细节,这样可以重建准确的分割边界。 因而,我们可以通过加上这些短路连接来恢复更精密的细节。

Ronneberger等人通过扩大网络解码器模块的容量来改进“全卷积”架构。更具体地说,他们提出了U-Net架构,它包括一个可以捕获上下文信息的收缩路径(contracting path)和一个能够实现精确定位的与收缩路径对称的扩展路径。这种更简单的架构已经变得非常流行,并且已经对一系列分割问题有效。

注意:由于使用了valid填充,原始网络会出现分辨率降低。然而,一些人会选择使用same填充来保证分辨率不变。

而Long等人(FCN论文)指出数据增强(随机镜像,或者通过将图像平移32像素来随机抖动)并没有导致性能的显着提升。Ronneberger等人(U-Net论文)却发现数据增强(对训练样本作随机的弹性变形)是训练成功的关键之一。似乎数据增强的有效性(和类型)取决于问题所在的领域。

高级的U-Net变体(Advanced U-Net variants)

标准U-Net模型的block中由一系列卷积层组成。有一些更高级的block可以替代这些堆栈卷积层。

Drozdzal等人(The Importance of Skip Connections in Biomedical Image Segmentation)采用了残差块(residual blocks)。除了标准U-Net结构中已有的长短路连接(在编码器和解码器模块的相应特征图之间),该残差块在块内引入短路连接。他们发现这种短路连接使得训练过程收敛更快,并可以训练更深层的网络模型。

更进一步,Jegou等人(Pattern Recognition The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation)采用了密集连接块(DenseNet网络单元),仍然使用U-Net架构,他们指出DenseNet的特点对语义分割很有效,因为它自然地引入短路连接,并实现了多尺度监督。这些密集块有效之处在于它们不仅包含从最近层得到的高级特征,还包含了从前面层传递的低级特征,这实现了高效的特征重用。

该架构的一个非常重要点是上采样路径在密集块的输入和输出之间没有短路连接。作者指出,由于上采样路径会增加特征图的空间分辨率,因此特征数量的线性增长对内存要求太高。因此,只有密集块的输出在解码器模块中被传递。

空洞卷积(Dilated/atrous convolutions)

对特征图进行下采样的一个好处是,在给定卷积核情况下,它会增加后续卷积的感受野(相对于输入)。由于大卷积核的参数效率低(在Rethinking the Inception Architecture for Computer Vision 的3.1节中讨论),这种方法比增加卷积核大小更好。 然而,这是以降低空间分辨率为代价的。

空洞卷积为获得宽感受野提供了另一种方法,其可以保持完整的空间维度。如下图所示,用于空洞卷积的值是在某个指定的扩张率(dilation rate)下间隔开的。

一些架构(Multi-Scale Context Aggregation by Dilated Convolutions)使用使用一系列扩张率连续增长的空洞卷积层来替换一些pooling层,以实现在不损失空间细节的同时获得相同的感受野。然而,完全使用空洞卷积替换掉pooling层依然会导致较大的计算成本(见DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs)。

03

损失函数

用于图像分割任务的最常用的损失函数是像素级的交叉熵损失(pixel-wise cross entropy loss)。 该损失单独地检查每个像素点,将类预测(深度方向的像素矢量)与one-hot编码的目标矢量进行比较。

因为交叉熵损失函数单独评估每个像素矢量的分类预测,然后对所有像素求平均值,所以我们基本上假定同等地对待图像中每个像素点。 如果各种类在图像分布不平衡时,这可能会是一个问题,因为训练过程将受最多的类所支配。Long等人(FCN论文)为每个输出通道的损失使用了权重,以抵消数据集中类不平衡问题。

同时,Ronneberger等人(U-Net论文)为每个像素的损失设置权重,使得分割对象的边界处具有更高的权重。该损失加权方案使得U-Net模型以不连续的方式分割生物医学图像中的细胞,这样可以在二元分割图中容易地分离出单个细胞

用于图像分割任务另一种流行的损失函数是基于Dice系数的损失,其本质上是衡量两个样本之间的重叠度。该度量值在0~1之间,其中Dice系数为1表示完全重叠。Dice系数最初针对二进制数据而提出的,计算公式如下:

因为我们的目标mask是二进制的,所以我们首先将预测结果中在目标mask中为0的像素清零。对于剩余的像素,我们基本上是在惩罚低置信度的预测值;该表达式的值越高(在分子中),Dice系数越高。

对于|A|和|B|,一些研究者(The Importance of Skip Connections in Biomedical Image Segmentation)简单地求和,另外一些研究者(V-Net: Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation)倾向于采用平方和。我并没知道在一系列任务中哪种方式更好,所以你可以两种方式都尝试,然后选择结果最好的那个

你可能会问想知道,为什么Dice系数的分子中有2,这是因为我们的分母重复计算了两集合之间的共同元素。 由于损失函数要最小化,我们将简单地使用1-Dice作为损失函数。这种损失函数被称为soft Dice损失,因为我们直接使用预测概率而不是先设定阈值并将它们转换为二进制mask。

对于神经网络的输出,分子关注的是预测和目标mask之间的共同激活值,而分母与每个mask中的激活量相关。 这产生一种根据目标mask的大小来归一化损失的效果,使得soft mask损失不会难以从图像中分布较少的类中学习。

注意soft Dice是对于每个类是单独计算的,然后平均各个类的结果作为最终的评分。例子如下图所示。

04

常用数据集以及图像分割大赛

下面,我列出了一些常用数据集,研究人员使用这些数据集来训练新模型和并作为现有技术的基准。 你还可以看一下之前的Kaggle比赛,并了解获胜方的解决方案是如何在特定任务赢得比赛的。

数据集

  1. [PASCAL VOC 2012 Segmentation Competition](http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html)
  2. [COCO 2018 Stuff Segmentation](http://cocodataset.org/#stuff-2018)
  3. [Task BDD100K: A Large-scale Diverse Driving Video Database](http://bair.berkeley.edu/blog/2018/05/30/bdd/)
  4. [Cambridge-driving Labeled Video Database (CamVid)](http://mi.eng.cam.ac.uk/research/projects/VideoRec/CamVid/)
  5. [Cityscapes Dataset](https://www.cityscapes-dataset.com/)
  6. [Mapillary Vistas Dataset](https://www.mapillary.com/dataset/vistas)
  7. [ApolloScape Scene Parsing](http://apolloscape.auto/scene.html)

以往的Kaggle竞赛

  1. [2018 Data Science Bowl](https://www.kaggle.com/c/data-science-bowl-2018) ([first place solution](https://www.kaggle.com/c/data-science-bowl-2018/discussion/54741))
  2. [Carvana Image Masking Challenge](https://www.kaggle.com/c/carvana-image-masking-challenge) ([first place solution](https://arxiv.org/abs/1801.05746))
  3. [Dstl Satellite Imagery Feature Detection](https://www.kaggle.com/c/dstl-satellite-imagery-feature-detection) ([third place solution](https://arxiv.org/abs/1706.06169))

05

延伸阅读

论文

  1. [Fully Convolutional Networks for Semantic Segmentation](https://arxiv.org/abs/1605.06211)
  2. [U-Net: Convolutional Networks for Biomedical Image Segmentation](https://arxiv.org/abs/1505.04597)
  3. [The Importance of Skip Connections in Biomedical Image Segmentation](https://arxiv.org/abs/1608.04117)
  4. [The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation](https://arxiv.org/abs/1611.09326)
  5. [Multi-Scale Context Aggregation by Dilated Convolutions](https://arxiv.org/abs/1511.07122)
  6. [DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs](https://arxiv.org/abs/1606.00915)
  7. [Rethinking Atrous Convolution for Semantic Image Segmentation](https://arxiv.org/abs/1706.05587)
  8. [Evaluation of Deep Learning Strategies for Nucleus Segmentation in Fluorescence Images](https://www.biorxiv.org/content/early/2018/05/31/335216)

课程

  1. [Stanford CS231n: Detection and Segmentation](https://youtu.be/nDPWywWRIRo) ([Lecture Slides](http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf))

博客

  1. [Mat Kelcey's (Twitter Famous) Bee Detector](http://matpalm.com/blog/counting_bees/)
  2. [Semantic Image Segmentation with DeepLab in TensorFlow](https://ai.googleblog.com/2018/03/semantic-image-segmentation-with.html)
  3. [Going beyond the bounding box with semantic segmentation](https://thegradient.pub/semantic-segmentation/)
  4. [U-Net Case Study: Data Science Bowl 2018](https://medium.com/@keremturgutlu/semantic-segmentation-u-net-part-1-d8d6f6005066)
  5. [Lyft Perception Challenge: 4th place solution](https://nikolasent.github.io/proj/comp2.html)

图片标注工具

  1. [labelme: Image Polygonal Annotation with Python](https://github.com/wkentaro/labelme)

往期回顾之作者刘才权

【1】《机器学习》笔记-半监督学习(13)

【2】《机器学习》笔记-计算学习理论(12)

【3】《机器学习》笔记-特征选择与稀疏学习(11)

【4】《机器学习》笔记-降维与度量学习(10)

【5】《机器学习》笔记-聚类(9)

【6】《机器学习》笔记-集成学习(8)

【7】《机器学习》笔记-贝叶斯分类器(7)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习算法工程师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
国产监控之光-夜莺监控(Nightingale)
夜莺是一个服务端组件,类似 Grafana,可以对接不同的TSDB时序数据库作为数据源,支持的TSDB时序数据库如Prometheus、VictoriaMetrics、Thanos等等,只要数据进到这些库里了,夜莺就可以对数据源的数据进行分析、告警、可视化,以及后续的事件处理、告警自愈。
Reactor2020
2023/04/16
2.7K0
国产监控之光-夜莺监控(Nightingale)
B站监控2.0架构落地实践
众所周知,Metrics指标数据是可观测重要的基石之一,在2021年底的时候,B站基于Promtheus+Thanos 方案,完成了统一监控平台的落地。但随着B站业务迅猛发展,指标数据级也迎来了爆炸式增长,不仅给现有监控系统的稳定(可用性, 云上监控数据质量等)带来冲击,也无法满足公司层面可观测稳定性建设(1-5-10)目标。当前架构面临的痛点总结如下:
哔哩哔哩技术
2024/12/26
2800
B站监控2.0架构落地实践
构建企业级监控平台系列(一):监控系统概述及发展趋势
在这之前,我们相继卷完了:关系型数据库 MySQL 、 NoSQL 数据库 Redis 、 MongoDB 、搜索引擎 ElasticSearch 、大数据 Hadoop框架、PostgreSQL 数据库、消息中间件 Kafka、分布式协调中间件 Zookeeper、消息中间件 RabbitMQ 这些系列的知识体系。今天开始,我们将踏上另一个系列的学习之路:企业级监控平台。
民工哥
2023/09/26
1.8K0
构建企业级监控平台系列(一):监控系统概述及发展趋势
作为背了不少锅的运维人,看到这几款监控工具,差点拍断大腿了!
运维监控工具千千万,仅开源的解决方案就有流量监控(MRTG、Cacti、SmokePing、Graphite等)和性能告警(Nagios、Zabbix、Zenoss Core、Ganglia、OpenTSDB等)可供选择。
网络工程师笔记
2023/10/24
1.4K0
作为背了不少锅的运维人,看到这几款监控工具,差点拍断大腿了!
干货 | 携程监控系统Hickwall演进之路
作者简介 大伟,携程软件技术专家,关注企业级监控,日志,可观测性领域。 一、背景 监控领域有三大块,分别是Metrics,Tracing,Logging。这三者作为IT可观测性数据的三剑客,基本可以满足各类监控、告警、分析、问题排查等需求。 Logs:我们对于Logs是更加宽泛的定义,即记录事物变化的载体,包括常见的访问日志、交易日志、内核日志等文本型以及GPS、音视频等泛型数据。日志在调用链场景结构化后其实可以转变为Trace,在进行聚合、降采样操作后会变成Metrics。 Metrics:是聚合后的数
携程技术
2022/03/04
1.8K0
小米的开源监控系统open-falcon架构设计,看完明白如何设计一个好的系统
早期,一直在用zabbix,不过随着业务的快速发展,以及互联网公司特有的一些需求,现有的开源的监控系统在性能、扩展性、和用户的使用效率方面,已经无法支撑了。
Java架构师必看
2021/07/12
8K0
Prometheus实战篇:Prometheus简介
时序数据,是在一段时间内通过重复测量(measurement)而获得的观测值的集合;将这些观测值绘制于图形之上,它会有一个数据轴和一个时间轴;
全干程序员demo
2023/12/22
4400
Prometheus实战篇:Prometheus简介
故障发现、定位提效超70%,去哪儿可观测体系做了哪些优化?
TakinTalks稳定性社区专家团成员。2018年加入去哪儿网,目前负责去哪儿网CI/CD、监控平台和云原生相关平台建设。期间负责落地了去哪儿网容器化平台建设,协助业务线大规模应用迁移至容器平台,完成监控系统Watcher2.0的改造升级和根因分析系统落地。对监控告警、CI/CD、DevOps有深入的理解和实践经验。
TakinTalks稳定性社区
2023/12/04
7350
故障发现、定位提效超70%,去哪儿可观测体系做了哪些优化?
这 5 种常用运维监控工具都不会?你算啥运维人
运维监控工具千千万,仅开源的解决方案就有流量监控(MRTG、Cacti、SmokePing、Graphite 等)和性能告警(Nagios、Zabbix、Zenoss Core、Ganglia、OpenTSDB等)可供选择。
互联网老辛
2021/04/22
2.9K0
这 5 种常用运维监控工具都不会?你算啥运维人
【系统设计】指标监控和告警系统
在本文中,我们将探讨如何设计一个可扩展的指标监控和告警系统。一个好的监控和告警系统,对基础设施的可观察性,高可用性,可靠性方面发挥着关键作用。
全球技术精选
2022/09/05
1.9K0
【系统设计】指标监控和告警系统
大数据下的精准实时监控系统 | Promethus or Zabbix?
我们先来了解什么是监控,监控的重要性以及监控的目标,当然每个人所在的行业不同、公司不同、业务不同、岗位不同、对监控的理解也不同,但是我们需要注意,监控是需要站在公司的业务角度去考虑,而不是针对某个监控技术的使用。
王知无-import_bigdata
2021/03/26
3.3K0
大数据下的精准实时监控系统 | Promethus or Zabbix?
58HBase平台实践和应用—时序数据库篇
OpenTSDB是一个分布式、可伸缩的时序数据库,支持高达每秒百万级的写入能力,支持毫秒级精度的数据存储,不需要降精度也可以永久保存数据。其优越的写性能和存储能力,得益于其底层依赖的HBase,HBase采用LSM树结构存储引擎加上分布式的架构,提供了优越的写入能力,底层依赖的完全水平扩展的HDFS提供了优越的存储能力。
Spark学习技巧
2019/10/31
1.2K0
京东智联云云原生实践,告诉你何为监控和日志的黄金法则
出品| 区块链大本营(ID:blockchain_camp ) 在当下,云原生的火爆不容小觑。随着虚拟化技术的成熟和分布式框架的普及,在容器技术、可持续交付、编排系统等开源社区的推动下,以及微服务等开发理念的带动下,应用上云已经是不可逆转的趋势,云原生(Cloud Native)的概念也应运而生,更是火得一塌糊涂。 Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。 而作为云
区块链大本营
2023/03/31
4520
京东智联云云原生实践,告诉你何为监控和日志的黄金法则
彻底搞懂监控系统,使用Prometheus +Grafana搭建完整的应用监控系统
监控是运维系统的基础,我们衡量一个公司/部门的运维水平,看他们的监控系统就可以了。一个完善的监控系统可以提高应用的可用性和可靠性,在提供更优质服务的前提下,降低运维的投入和工作量,为用户带来更多的商业利益和客户体验。下面就带大家彻底搞懂监控系统,使用Prometheus +Grafana搭建完整的应用监控系统。
章为忠学架构
2023/03/23
12.7K0
彻底搞懂监控系统,使用Prometheus +Grafana搭建完整的应用监控系统
节约资源、提升性能,字节跳动超大规模 Metrics 数据采集的优化之道
在 ArchSummit 2023 北京站上,字节跳动刘浩杨分享了《字节跳动超大规模 Metrics 数据采集的实践和探索》,他从字节跳动可观性平台的建设入手,讨论了字节跳动数据采集所面临的问题和挑战,介绍了在数据采集方面的内核优化和工程实践,为许多在数据采集方面的企业提供了可落地的参考思路,本文为分享文章整理~
深度学习与Python
2023/08/09
1.4K0
节约资源、提升性能,字节跳动超大规模 Metrics 数据采集的优化之道
监控系统选型,这篇不可不读!
目前我所经历的几家公司,监控系统都是自研的。其实业界有很多优秀的开源产品可供选择,能满足绝大部分的监控需求,如果能从中选择一款满足企业当下的诉求,显然最省时省力。
码哥字节
2020/09/24
2.9K0
监控系统选型,这篇不可不读!
vivo服务端监控架构设计与实践
当今时代处在信息大爆发的时代,信息借助互联网的潮流在全球自由的流动,产生了各式各样的平台系统和软件系统,越来越多的业务也会导致系统的复杂性。
2020labs小助手
2022/02/21
1.3K0
vivo服务端监控架构设计与实践
构建企业级监控平台系列(十三):Prometheus Server 配置详解
更多关于企业级监控平台系列的学习文章,请参阅:构建企业级监控平台,本系列持续更新中。
民工哥
2023/10/23
1.7K0
构建企业级监控平台系列(十三):Prometheus Server 配置详解
实战 Prometheus 搭建监控系统
Prometheus 是一款基于时序数据库的开源监控告警系统,说起 Prometheus 则不得不提 SoundCloud,这是一个在线音乐分享的平台,类似于做视频分享的 YouTube,由于他们在微服务架构的道路上越走越远,出现了成百上千的服务,使用传统的监控系统 StatsD 和 Graphite 存在大量的局限性,于是他们在 2012 年开始着手开发一套全新的监控系统。Prometheus 的原作者是 Matt T. Proud,他也是在 2012 年加入 SoundCloud 的,实际上,在加入 SoundCloud 之前,Matt 一直就职于 Google,他从 Google 的集群管理器 Borg 和它的监控系统 Borgmon 中获取灵感,开发了开源的监控系统 Prometheus,和 Google 的很多项目一样,使用的编程语言是 Go。
Spark学习技巧
2021/03/05
1.3K0
实战 Prometheus 搭建监控系统
最流行的云原生监控解决方案:Prometheus+Grafana
prometheus是由SoundCloud开源的CNCF旗下的监控系统,是Google BorgMon监控系统的开源版本,提供了完善的监控和告警功能.
MCNU云原生
2023/03/17
2.7K0
最流行的云原生监控解决方案:Prometheus+Grafana
推荐阅读
相关推荐
国产监控之光-夜莺监控(Nightingale)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档