2. 浙江理工大学 信息学院, 杭州 310018
2. School of Information Science and Technology, Zhejiang Sci-Tech University, Hangzhou 310018, China
图像分割作为模式识别与图像分析的基础, 一直是数字图像处理和计算机视觉等领域中的挑战课题, 具有重要的研究意义. 而人体图像分割作为图像分割的一个具体问题, 在三维人体重建, 人体运动跟踪, 场景解析等领域中有着重要的应用价值[1].
关于图像分割的算法有很多, 除了一些传统方法(如阈值法、边界检测、区域法)外, 现阶段比较流行的图像分割算法有基于像素聚类的分割方法, 基于图论的分割方法和基于深度学习框架的分割算法. 基于像素聚类的典型分割方法如: Aguilar WG等人[2]提出的Meanshift算法, 该算法将图片映射到一多维特征空间中, 在该空间中选择一些区域进行矢量操作, 并将操作的结果记为Meanshift向量. 通过对若干个Meanshift向量的有限次迭代使算法收敛到图像中概率密度最大的点, 称为模点. 通过对模点的聚类完成图像分割, 但该方法在图像对比度较差时, 易产生欠分割现象; 因此, Levinshtein等人[3]在Meanshift算法基础上提出了TurboPixels超像素生成算法, 该算法相较于Meanshift算法引入了紧凑度约束, 通过对初始种子点的膨胀操作, 在图像的不同区域之间通过曲率演化检测出边界, 该方法分割的超像素块紧凑、边界光滑, 并有效抑制了Meanshift算法中的欠分割现象; Wu HS等人[4]提出简单线性聚类(Simple Linear Iterative Clustering, SLIC)方法分割图像, 该方法将图片分割成多个大小均匀的超像素块, 用超像素块代替大量的像素来表达图片特征, 由于设定的超像素块个数是人为定义的固定值. 显然, 不合理的固定值会造成分割出的超像素块无法贴合色块边缘等问题.
以图论为代表的分割算法典型如, Chan TF[5]提出的基于Snack模型的图像分割算法, 它以构成一定形状的控制点为轮廓线, 通过控制点的移动完成轮廓线的形变, 最终达到预设的能量函数极小化, 完成图像分割, 但当初始轮廓曲线距离真实边界较远时, 能量函数易陷入局部极小点造成分割误差; Ngo TA等人[6]提出的Level Set方法, 该方法借鉴了Snack模型中能量函数的思想, 但其将低维度的曲线嵌入到高维度的曲面中进行表示, 使得分割结果与初始轮廓曲线无关, 但该方法在轮廓两边灰度相似的情况, 分割精度较差; Kim G等人[7]提出了Grab Cut算法, 该算法通过交互方式分割前景、背景, 再对前景、背景所属的颜色空间建立高斯混合模型(Gaussian Mixture Model, GMM), 用GMM参数迭代学习完成能量函数最小化, 因而该方法可以更好地对彩色图像进行分割, 但由于该方法的时间复杂度较高, 因而分割效率较低.
随着深度学习的流行和普及, 基于深度学习框架衍生出的众多语义分割算法也成为图像分割算法中的重要一类. 如Shelhamer E[8]提出的全卷积神经网络(Fully Convolutional Networks, FCN)该算法相比于传统卷积神经网络[9](Convolutional Neural Network, CNN)抛弃了全连接层, 因而可以接受任意大小的输入图像, 同时采用Skip结构, 结合了神经网络中的深层、浅层信息以确保算法的鲁棒性, 但FCN通过上采样分割出的图像比较模糊, 对图像中的细节不敏感[10]; 多示例学习(Multiple Instance probLem, MIL)是一种弱监督学习方法[11,12], 该方法中的每个样本包含多个示例, 定义分类器对多个包组成的训练集进行学习, 从而能够对训练集以外的包的进行正确的预测. 但该方法在训练样本集时, 需要在示例尺度下进行标记, 这是一件费时费力的工作, 而且当样本量不大时, 不同的分类器分类结果差异明显, 获得的分割结果并不可靠. 因此该方法对于小样本的分割问题适用性不高.
本文提供了一种基于自适应SLIC的人体图像分割算法. 首先从图片各角点开始, 在小尺度范围内进行CV分割[13]. 每次分割收敛时设置聚类中心, 通过不断迭代动态地设定聚类中心的位置和个数, 提高超像素块位置和个数的准确性. 并结合人体平均模版在图像中标记感兴趣的人体区域, 利用模版标记的内外区域信息对该区域进行k-means聚类分割, 提高在复杂背景下的识别准确性.
1 本文算法描述本文提出了一种基于自适应SLIC的人体图像分割算法, 其主要算法流程如下:
(1) 借鉴Active Shape Model[14](ASM)算法思想, 选取N个样本, 手工标记人体轮廓, 计算人体样本的平均模板.
(2) 将待分割图像均分为4个部分, 从每个部分的角点开始取极小的区域进行动态的CV分割. 每次CV分割能量函数收敛时, 记录当前区域重心为一个聚类中心.
(3) 将步骤(2)中得到的聚类中心作为SLIC的初始种子点, 进行简单线性聚类.
(4) 根据用户在图片上标记的手脚辅助标记, 将步骤(1)中得到的模板进行缩放和平移后标记在图片上, 用以表明感兴趣的超像素块区域Ω.
(5) 得到感兴趣区域Ω后. 由于区域外的超像素块必为背景块. 因此可根据区域外的超像素块特征, 对区域Ω进行k-means聚类分割, 分离Ω中属于背景的位置, 完成人体分割.
2 基于CV能量函数的自适应SLIC算法 2.1 SLIC算法简介SLIC是2012年由Achanta提出的, 该方法将图像根据相似函数, 分割为大小均匀、边界相连的超像素块. 超像素块的个数需要指定固定值K, SLIC算法的目标是将一张N×M的照片分割成K个超像素块. 初始时在图片上均匀地设置K个种子. 再对图像中的每个像素进行聚类, 聚类中心即为该像素点周围的种子点[15], 通过迭代最终分割图像为多个超像素块.
2.2 基于CV分割能量函数的自适应SLIC算法SLIC算法需要给定超像素块的个数K值, 且初始聚类中心均匀分布在图像上. 图1为传统SLIC分割结果的部分, 显然由于K值是固定的, 使得每个超像素块的大小限定在一定的范围内, 这对于图像中复杂程度不同的区域显然是不合理的.
为了解决上述问题, 我们引入CV分割能量函数动态地设定初始聚类中心的位置、个数, 使得SLIC算法的初始种子点尽量位于不同色块之中, 且初始种子的个数与整幅图的色块数目大致相同. 算法过程如下:
(1) 为了加快聚类速度充分利用多核CPU性能, 本文将图片按长宽中心均匀分成4个矩形. 每个矩形以4个角为圆心, 2r为半径作圆弧l2, 在l2围成扇形区域O中以r为半径作弧l1. 弧l1将区域O分为包含圆心的部分O1, 不包含圆心的部分O2. 即O=O1+O2, 如下图2所示.
(2) 因为这里的r取值较小, 因此我们可将区域O1作为灰度均匀的部分, 而O1作为O的一部分, 我们希望将O2中与O1灰度接近的像素归类至O1. 为此, 我们引入CV分割能量函数:
$ \begin{aligned} F({C_1},{C_2},{l_1}){\rm{ = }} &\mu {\mathop{ L}\nolimits} ({l_1}) + \nu A(in{\rm{(}}{l_1}{\rm{)}}) + {\lambda _1}\int\limits_{{\rm{in}}{\rm{(}}{l_1}{\rm{)}}} {{{\left| {I(x) - {C_1}} \right|}^2}} {\rm{d}}x \\ & + {\lambda _2}\int\limits_{{\rm{out}}{\rm{(}}{l_1}{\rm{)}}} {{{\left| {I(x) - {C_2}} \right|}^2}} {\rm{d}}x \end{aligned} $ | (1) |
其中, L(l1)是弧l1的长度, A(in(l1))为区域O1的面积, I(x)为待分割区域O, in(l1), out(l2)分别为区域O1, O2.u, v≥0, λ1, λ2是各个能量项的权重系数, C1, C2为O1, O2区域的平均灰度. 显然:
$\left\{ \begin{aligned} {C_1}{\rm{ = }} & \dfrac{{\oint {I(x){H_\varepsilon }(x){\rm{d}}x} }}{{\oint {{H_\varepsilon }(x){\rm{d}}x} }}\\ {C_2}{\rm{ = }} & \dfrac{{\oint {I(x)({\rm{1 - }}{H_\varepsilon }(x)){\rm{d}}x} }}{{\oint {({\rm{1 - }}{H_\varepsilon }(x)){\rm{d}}x} }} \end{aligned}\right.$ | (2) |
其中,
$ {H_\varepsilon }(\phi ){\rm{ = }}\left\{ {\begin{array}{*{20}{c}} {1,{\rm{ }}}\\ {0,{\rm{ }}} \end{array}} \right.\begin{array}{*{20}{c}} {\phi \ge 0}\\ {\phi \le 0} \end{array} $ | (3) |
式(1)目的是为了迭代寻找最优划分l1, 使得O被活动轮廓线l1划分为目标区域O1和背景区域O2. 可以看出, 当活动轮廓线l1没有位于O1、O2区域的边界时, F(C1, C2, l1)不能达到最小值[16]. 为了得到公式(1)的最小值, 我们采用水平集函数进行迭代求解.
设
$ \begin{split} \dfrac{{\partial \phi }}{{\partial t}} = &{\delta _\varepsilon }(\phi )\left\{ {\mu \nabla \left( {\dfrac{{\nabla \phi }}{{\left| {\nabla \phi } \right|}}} \right) - \nu } \right.\\ & -{\Bigg. {{\lambda _1}{{[I(x) - {C_1}]}^2} - {\lambda _2}{{[I(x) - {C_2}]}^2}} \Bigg\}} \end{split}$ | (4) |
(3) 从式(4)可看出, 每次在O中迭代求解l1, 即由I(x)计算水平集函数
${I_n}(x) = \dfrac{{L({l_2})}}{{L({l_1})}}({\phi _n} - {\phi _{n - 1}}) + {I_{n - 1}}(x)$ | (5) |
上式中L(l1)和L(l1)分别为l1, l2的长度, 因为调整弧l1时, 区域O的外边界l1相应的调整的范围需要大于l1, 所以乘以缩放系数
(4) 在每一次迭代后, 若区域O与O1不再变化, 则迭代结束, 计算O1的质心作为一个初始聚类中心. 此时, 在图中除去O1的部分继续从角点开始, 设置新的O1, O2进行上述操作的迭代, 直至原图全部迭代完全.
经过上述步骤, 可得到若干聚类中心. 将其作为SLIC算法的初始聚类中心. 以每个聚类中心相邻的色块作为搜索空间进行聚类, 完成超像素块分割. 如图3为改进后的SLIC与传统SLIC算法对比.
3 融合模板的超像素块聚类 3.1 获取标准人体模板
类似于ASM算法的训练阶段, 本文通过100组标准人体图像训练获取人体初始模板. 为了论文讨论方便, 我们采用标准姿势站立的人体正面图片. 对于人体目标图像共选取65个特征点, 如图4, 配准后的人体集如图5. 获得的人体标准模板在进行聚类前, 需要对手臂脚部等位置需进行缩放、平移和旋转已完成对模板的大致校准[17], 经过以上步骤获得的平均模板可以适应人体的不同姿势, 从而可以标记感兴趣的人体前景区域.
3.2 基于超像素块的k-means聚类在2.2节中我们已经将原图转化为多个大小不同的超像素块, 每个超像素块内部的灰度变化较为平缓, 将每个超像素块作为k-means聚类的一个节点. 对于二维图片上的超像素块, 我们仅仅能利用到每个超像素块内部的颜色、位置等无语义信息. 因此我们利用3.1节中构建的人体平均模板. 在k-means聚类分割前, 将模版贴合至图像上以标记出图像中我们感兴趣的前景目标区域. 由于模版将整张图片分为内外两部分, 我们可利用内外区域的超像素信息对感兴趣的区域进行k-means聚类分割, 通过这种引入人体模版的方法提高聚类精度.
具体做法如下:
(1) 由于平均模板仅仅能限制住人体的大致范围, 对于一些幅度变化较大的位置, 难以定位. 因此我们在人体的双手手掌及脚部加上标记点, 将平均模板进行平移缩放, 手臂和腿部进行旋转以完成对平均模板的校准, 模板贴合至人体轮廓后的效果如图6.
(2) 上述步骤后, 我们得到了感兴趣的区域Ω, 在该区域内有若干个超像素块, 将每个超像素块作为k-means的聚类节点. 将超像素块内部区域的RGB均值及重心的横纵坐标组成5维向量, 各节点间该向量的欧氏距离作为相似性度量. 由于目标是将区域Ω中非人体部分剔除, 因此只需进行2均值迭代聚类即可. 经过聚类后, 得到只含有人体体型部分的超像素块, 实验结果如图7.
(3) 在得到了完全贴合在人体图像上超像素块后, 为了得到图像上的人体轮廓边缘, 我们需要对超像素块的边缘进行融合. 对于已去除背景的Ω中的像素点q, 其只有以下3种情况:
① q属于某一个超像素块内部.
② q位于一个超像素块的边缘上.
③ q位于两个及两个以上的超像素块边缘上.
观察图7我们发现, 人体轮廓的边缘像素点仅出现情况②上. 因此在聚类后的区域Ω中, 提取所有满足②的点将其构成人体边缘轮廓, 则此时轮廓内部的区域为人体图像, 外部为图像背景, 完成人体标准姿势图像分割.
4 实验结果与分析为了验证本文算法的有效性, 我们对不同环境下的人体图像进行了分割实验. 算法在四核3.2 GHz, 8 GB内存, Windows 7系统的PC机上, 使用C++编程实现. 同时, 我们将本文方法与一些常用分割算法进行了比较. 以下各组图片, 从左至右依次为谱聚类[18]、Grab Cut、FCN、MIL与本文算法的实验结果. 其中对于FCN, MIL算法的训练阶段, 我们从公开PASCAL VOC2012和MIT_SceneParsing数据集共挑选了4500张符合要求的人体照片作为训练集.
第一组实验我们选取背景较为简单的人体图片, 且被拍摄者的衣着颜色单一. 实验结果如图8所示. 由结果可看出, 谱聚类和Grab Cut在无语义的情况下, 腿部区域被归类至同一色块中无法区分. FCN、MIL与本文算法都对腿部区域做了区分, 但FCN在腿部轮廓的边界处理上不够平滑, 出现曲线抖动的情况, MIL算法对于阴影区域的划分不够准确. 而本文算法边界的提取较为准确, 轮廓边缘光滑.
第二组实验我们选取了背景与人体肤色较为接近的样本图片, 且被拍摄者双臂与水平呈一定角度. 实验结果如图9所示. 由结果可看出, 传统谱聚类、FCN和MIL对于边界的定位出现了不准确的情况, 尤其是传统谱聚类, 对于灰度接近的色块区分能力较差. FCN定位的边界仍然出现了轮廓的抖动, MIL对于阴影区域的划分与第一组实验结果类似, 错误地将边界定位在灰度变化最大的位置. 由于Grab Cut和本文算法均采用了人工交互的方式粗定位了前景目标的大致位置, 抗干扰能力强, 此种情况下的分类均较为准确.
第三组实验我们选取了背景色块丰富的样本图片. 实验结果如图10所示. 由结果可看出, 传统谱聚类、Grab Cut在轮廓边缘的定位上受到多个背景色块的干扰而造成整体的轮廓偏差. 但Grab Cut在人工的交互位置, 如手掌, 脚部等位置的定位较为准确. FCN、MIL和本文算法在实验中的轮廓均较为准确. 但在细节处, FCN将部分绿草定位为人体轮廓, 而MIL丢失了人体的头发部位的色块信息.
由上述三组实验我们可看出, 针对人体图像, 本文算法相较与常用的图像分割算法在精度上有了较好的改进, 在各算法的分割结果中, 本文算法获得的人体各个部位轮廓线更加贴合人体体型的真实边缘. 在不同环境下, 图像分割的效果稳定, 获得的人体轮廓边缘差距较小, 算法鲁棒性高. 同时为了比较本文算法的分割效率, 我们也给出以上各算法间的时间对比, 见表1.
针对上述图像, 本文算法运行时间比谱聚类、Grab Cut、MIL方法快, 但比FCN方法慢. 考虑到FCN方法在样本训练占用较多时间, 而本文算法不需要样本训练和监督学习, 可以减去这些方面的时间开销, 人体分割所运行的整体时间满足实验要求.
综合上述实验效果和分析, 我们发现本文算法的精度和时间复杂度上相比于传统谱聚类、Grab Cut算法有所改进. 并且在保证精度的情况下, 避免了FCN, MIL等算法中耗时的样本训练工作, 更适合样本量小的分割工作.
5 总结与展望本文提出了一种自适应的SLIC人体图像分割算法, 该算法针对图片复杂程度不同的区域可动态地设置聚类中心, 使得分割出的超像素块更准确的贴合图中的色块. 并且结合了人体平均模板提高了算法的抗干扰能力. 实验证明, 本文算法能够在保证效率地情况下较好地分割不同背景下的人体标准姿势图像.
本文在进行聚类分割前需对图片进行交互式标记, 如何自动化的优化相关参数, 提升方法的泛化能力值得进一步改进和探索. 同时在现有工作中, 人体图像分割结果是通过k-means聚类得到的, 而k-means聚类对于初始聚类中心的选择较为苛刻, 不同的聚类中心会产生不同的结果. 如何采用更好的聚类方法提高分割精度也将是今后的主要工作.
[1] |
Wachinger C, Toews M, Langs G, et al. Keypoint transfer for fast whole-body segmentation. IEEE Transactions on Medical Imaging, 2018, 29(7): 1-12. |
[2] |
Aguilar WG, Luna MA, Moya JF, et al. Pedestrian detection for UAVs using cascade classifiers with meanshift. Proceedings of the 11th IEEE International Conference on Semantic Computing. San Diego, CA, USA, 2017, 509-514. |
[3] |
Levinshtein A, Stere A, Kutulakos KN, et al. TurboPixels: Fast superpixels using geometric flows. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2009, 31(12): 2290-2297. DOI:10.1109/TPAMI.2009.96 |
[4] |
Wu HS, Wu YL, Zhang SL, et al. Cartoon image segmentation based on improved SLIC superpixels and adaptive region propagation merging. Proceedings of 2016 IEEE International Conference on Signal and Image Processing. Beijing, China, 2016, 277-281. |
[5] |
Chan TF, Vese LA. Active contours without edges. IEEE Transactions on Image Processing, 2001, 10(2): 266-277. DOI:10.1109/83.902291 |
[6] |
Ngo TA, Carneiro G. Fully automated non-rigid segmentation with distance regularized level set evolution initialized and constrained by deep-structured inference. Proceedings of 2014 IEEE Conference on Computer Vision and Pattern Recognition. Columbus, OH, USA, 2014, 3118-3125. |
[7] |
Kim G, Sim JY. Depth guided selection of adaptive region of interest for grabcut-based image segmentation. Proceedings of 2016 Asia-Pacific Signal and Information Processing Association Annual Summit and Conference. Jeju, South Korea, 2016, 1-4. |
[8] |
Shelhamer E, Long J, Darrell T. Fully convolutional networks for semantic segmentation. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(4): 640-651. DOI:10.1109/TPAMI.2016.2572683 |
[9] |
Jiang HZ, Learned-Miller E. Face detection with the faster R-CNN. Proceedings of the 12th IEEE International Conference on Automatic Face & Gesture Recognition. Washington, DC, USA, 2017, 650-657. |
[10] |
Li XM, Dou Q, Chen H, et al. 3D multi-scale FCN with random modality voxel dropout learning for intervertebral disc localization and segmentation from multi-modality MR images. Medical Image Analysis, 2018, 45: 41-54. DOI:10.1016/j.media.2018.01.004 |
[11] |
Babenko B, Yang MH, Belongie S. Visual tracking with online multiple instance learning. Proceedings of 2009 IEEE Conference on Computer Vision and Pattern Recognition. Miami, FL, USA, 2009, 983-990. |
[12] |
Dai JF, He KM, Sun J. BoxSup: Exploiting bounding boxes to supervise convolutional networks for semantic segmentation. Proceedings of 2015 IEEE International Conference on Computer Vision. Santiago, Chile, 2015, 1635-1643. |
[13] |
张建伟, 葛琦. 基于局部统计信息的快速CV模型MR图像分割. 中国图象图形学报, 2010, 15(1): 69-74. |
[14] |
朱欣娟, 熊小亚. 基于改进ASM模型的人体特征点定位和建模方法. 系统仿真学报, 2015, 27(2): 286-294. |
[15] |
Nimisha, Gill R, Kaur I. Segmentation of retinal area by adaptive SLIC superpixel. Proceedings of the 1st International Conference on Power Electronics, Intelligent Control and Energy Systems. Delhi, India, 2016, 1-5. |
[16] |
Wang B, Gao XB, Tao DC, et al. A nonlinear adaptive level set for image segmentation. IEEE Transactions on Cybernetics, 2014, 44(3): 418-428. DOI:10.1109/TCYB.2013.2256891 |
[17] |
赵鑫, 汪维家, 曾雅云, 等. 改进的模块PCA人脸识别新算法. 计算机工程与应用, 2015, 51(2): 161-164. DOI:10.3778/j.issn.1002-8331.1303-0095 |
[18] |
Luo JJ, Jiao LC, Lozano JA. A sparse spectral clustering framework via multiobjective evolutionary algorithm. IEEE Transactions on Evolutionary Computation, 2016, 20(3): 418-433. DOI:10.1109/TEVC.2015.2476359 |