机器学习实战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)=q∈R∣dist(p,q)⩽d,d∈N+,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=y∣y∈R
其中 y y y是图像每个像素的真实取值。标记场
X = x p ∣ p ∈ R , x p ∈ R X=\\left\\ x_p|p\\in R, x_p\\in \\mathcalR \\right\\ X=xp∣p∈R,xp∈R
其中 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(X∣Y)=argXmaxP(X)P(Y∣X)=argXmax(lnP(X)+lnP(Y∣X))
为了求解这个优化目标,分别对 P ( X ) P(X) P(X)和 P ( Y ∣ X ) P(Y|X) P(Y∣X)建模。
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)=Z∗1Q∈C∗∏ϕQ(DQ)=Z∗1Q∈C∗∏e−∑u,v∈Q,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,v∈Q,u=v∑βuvI(xu=xv)
称为Potts马尔科夫随机场,倾向于两个相邻像素取值相同,当相邻像素不等时,整体能量会上升,比如一个表示天空的蓝色像素,我们更倾向于和它属于同一类的像素都是蓝色的。
P ( Y ∣ X ) P(Y|X) P(Y∣X)表示了像素与其标签的匹配程度,可用高斯分布建模
P
(
Y
∣
X
)
=
∏
y
∈
R
P
(
y
∣
x
y
)
=
∏
y
∈
R
1
2
π
σ
x
y
exp
[
−
(
y
−
μ
x
y
)
2
2
以上是关于机器学习实战4:基于马尔科夫随机场的图像分割(附Python代码)的主要内容,如果未能解决你的问题,请参考以下文章