机器学习实战4:基于马尔科夫随机场的图像分割(附Python代码)

Posted Mr.Winter`

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习实战4:基于马尔科夫随机场的图像分割(附Python代码)相关的知识,希望对你有一定的参考价值。

目录

0 写在前面

机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理;“广”在分析多个机器学习模型:决策树、支持向量机、贝叶斯与马尔科夫决策、强化学习等。强基计划实现从理论到实践的全面覆盖,由本人亲自从底层编写、测试与文章配套的各个经典算法,不依赖于现有库,可以大大加深对算法的理解。

🚀详情:机器学习强基计划(附几十种经典模型源码)


机器学习强基计划6-2:详细推导马尔科夫随机场(MRF)及其应用(附例题)中我们系统地介绍了引入马尔科夫随机场的动机及其基本概念,但由于公式繁多,很难理解这个模型如何应与实际相结合,本文结合一个计算机视觉领域的经典问题——图像分割讲解马尔科夫随机场的应用,加深对概率图模型的理解。为了便于说明,先引入计算机视觉中的部分概念。

1 图像分割问题

在图像处理与计算机视觉领域,图像分割(image segmentation)是在像素级别将一个完整图像划分为若干具有特定语义区域(region)对象(object)的过程。每个分割区域是一系列拥有相似特征——例如颜色、强度、纹理等的像素集合,因此图像分割也可视为以图像属性为特征空间,为全体像素赋予标签的分类问题

图像分割是高级图像处理的基础技术,它将原始冗余而繁杂的图像,转化为一种更具意义且简单紧凑的组织形式。在智能安防、卫星遥感、医学影像处理、生物特征识别等领域,图像分割通过提供精简且可靠的图像特征信息,有效地提高后续从而利于后续图像分析、理解等技术的计算效率,具有重要意义。

2 图像像素邻域

在图像分割中,通常默认图像中某像素点 p ( i , j ) p\\left( i,j \\right) p(i,j)只受相邻像素的影响,较远处的像素对该像素没有作用,或者说其作用已被包含在相邻像素内

例如当前像素语义是天空,那么近邻像素也很可能表示天空。

形式化地,像素 p p p的邻域定义为

δ d ( p ) = q ∈ R ∣ d i s t ( p , q ) ⩽ d , d ∈ N + , q ≠ p \\delta _d\\left( p \\right) =\\left\\ q\\in R|\\mathrmdist\\left( p,q \\right) \\leqslant \\sqrtd, d\\in \\mathbbN ^+, q\\ne p \\right\\ δd(p)=qRdist(p,q)d ,dN+,q=p

其中 d i s t ( ⋅ , ⋅ ) \\mathrmdist\\left( \\cdot ,\\cdot \\right) dist(,)表示两个像素间的欧式距离, d d d表示的是邻域的阶次,阶次越高像素包含的邻点越多,且满足当阶次 t > d t>d t>d δ d ( p ) ⊂ δ t ( p ) \\delta _d\\left( p \\right) \\subset \\delta _t\\left( p \\right) δd(p)δt(p)


这种邻域特性类似于马尔科夫链的无后效性,参考机器学习强基计划6-1:图文详细总结马尔科夫链及其性质(附例题分析)。由于图像是二维数据,因此用经典的无向图模型——马尔科夫随机场代替一维的马尔科夫链进行建模。马尔科夫随机场中的全局马尔科夫性、局部马尔科夫性和成对马尔科夫性,恰好表征了像素只受邻域影响的假设偏好

3 观测场与标记场

进行图像分割时,需要定义两个随机场:

  • 观测场 Y Y Y:指肉眼可见的图像实际像素场
  • 标记场 X X X:每个可观测像素都赋予一个标记,这些标记组成标记场。这两个随机场一一对应

形式化地,设观测场

Y = y ∣ y ∈ R Y=\\left\\ y|y\\in R \\right\\ Y=yyR

其中 y y y是图像每个像素的真实取值。标记场

X = x p ∣ p ∈ R , x p ∈ R X=\\left\\ x_p|p\\in R, x_p\\in \\mathcalR \\right\\ X=xppR,xpR

其中 x p x_p xp表示像素 p p p被赋予的分割区域,总共有 ∣ R ∣ \\left| \\mathcalR \\right| R种可能的分割情形。

图像分割的目标是在已有观测图像的情况下,让标记场的概率最大,根据极大后验估计可得

X = a r g max ⁡ X P ( X ∣ Y ) = a r g max ⁡ X P ( X ) P ( Y ∣ X ) = a r g max ⁡ X ( ln ⁡ P ( X ) + ln ⁡ P ( Y ∣ X ) ) \\beginalignedX&=\\mathrmarg\\max _XP\\left( X|Y \\right) \\\\&=\\mathrmarg\\max _XP\\left( X \\right) P\\left( Y|X \\right) \\\\&=\\mathrmarg\\max _X\\left( \\ln P\\left( X \\right) +\\ln P\\left( Y|X \\right) \\right)\\endaligned X=argXmaxP(XY)=argXmaxP(X)P(YX)=argXmax(lnP(X)+lnP(YX))

为了求解这个优化目标,分别对 P ( X ) P(X) P(X) P ( Y ∣ X ) P(Y|X) P(YX)建模。

4 马尔科夫随机场建模

根据机器学习强基计划6-2:详细推导马尔科夫随机场(MRF)及其应用(附例题)的讲解,我们可以用马尔科夫随机场对联合分布 P ( X ) P(X) P(X)建模,列出

P ( X ) = 1 Z ∗ ∏ Q ∈ C ∗ ϕ Q ( D Q ) = 1 Z ∗ ∏ Q ∈ C ∗ e − ∑ u , v ∈ Q , u ≠ v β u v I ( x u ≠ x v ) P\\left( X \\right) =\\frac1Z^*\\prod_Q\\in \\mathcalC ^*\\phi _Q\\left( \\boldsymbolD_Q \\right)=\\frac1Z^*\\prod_Q\\in \\mathcalC ^*e^-\\sum_u,v\\in Q,u\\ne v\\beta _uv\\mathbbI \\left( x_u\\ne x_v \\right) P(X)=Z1QCϕQ(DQ)=Z1QCeu,vQ,u=vβuvI(xu=xv)

这里令能量函数

H Q ( D Q ) = ∑ u , v ∈ Q , u ≠ v β u v I ( x u ≠ x v ) H_Q\\left( \\boldsymbolD_Q \\right) =\\sum_u,v\\in Q,u\\ne v\\beta _uv\\mathbbI \\left( x_u\\ne x_v \\right) HQ(DQ)=u,vQ,u=vβuvI(xu=xv)

称为Potts马尔科夫随机场,倾向于两个相邻像素取值相同,当相邻像素不等时,整体能量会上升,比如一个表示天空的蓝色像素,我们更倾向于和它属于同一类的像素都是蓝色的。

P ( Y ∣ X ) P(Y|X) P(YX)表示了像素与其标签的匹配程度,可用高斯分布建模

P ( Y ∣ X ) = ∏ y ∈ R P ( y ∣ x y ) = ∏ y ∈ R 1 2 π σ x y exp ⁡ [ − ( y − μ x y ) 2 2

以上是关于机器学习实战4:基于马尔科夫随机场的图像分割(附Python代码)的主要内容,如果未能解决你的问题,请参考以下文章

马尔科夫随机场

图像语义分割方法

条件随机场(crf)

从FCN到DeepLab

机器学习笔记十一 条件随机场(CRF)

如何用简单易懂的例子解释条件随机场模型?它和HMM有啥区别