计算机系统应用  2022, Vol. 31 Issue (8): 298-304   PDF    
融合深层特征与边缘特征的皮肤检测校正算法
王芸     
中国石油大学(华东) 计算机科学与技术学院, 青岛 266580
摘要:当皮肤区域与非皮肤区域没有明显边界时, 皮肤检测变得更加困难. 针对这一问题, 本文提出了一种新的皮肤检测校正算法. 本文首先利用卷积神经网络分级对皮肤的颜色、纹理等特征进行提取, 通过门控卷积层对皮肤与非皮肤像素的边界区域进行细化, 以增强皮肤检测的效果, 最后利用ASPP将深层信息与边缘信息进行融合. 本文将经过阈值粗分割的检测结果作为输入, 在ECU和Pratheepan两个数据集上进行了评估, 实验结果表明, 本算法在ECU数据集上的准确率达到了91%, 在Pratheepan数据集的准确率达到了95%, 与现有方法相比, 本文算法的性能有明显的提升.
关键词: 皮肤检测    校正算法    深层特征    边缘细化    特征识别    
Skin Detection and Correction Algorithm Combining Deep Feature and Edge Feature
WANG Yun     
College of Computer Science and Technology, China University of Petroleum, Qingdao 266580, China
Abstract: When no obvious boundaries exist between skin regions and non-skin regions, skin detection becomes extremely difficult. To solve this problem, we propose a new skin detection and correction algorithm. Firstly, this study uses a convolutional neural network (CNN) to extract skin features such as colors and texture step by step and then subdivides the boundary region of skin and non-skin pixels through the gated convolutional layer to enhance the effect of skin detection. Finally, ASPP is applied to fuse deep information and edge information. The detection results from rough threshold segmentation are used as input for the evaluation on ECU and Pratheepan datasets. The experimental results show that the accuracy of this algorithm reaches up to 91% on the ECU dataset and 95% on the Pratheepan dataset. The performance of the proposed algorithm has been significantly improved compared with that of the existing methods.
Key words: skin detection     correction algorithm     deep features     edge refinement     feature recognition    

近年来, 语义分割[1-4]作为计算机视觉领域的重要研究方向之一受到了广泛的关注.皮肤检测就是把数字图像细分为皮肤像素与非皮肤像素的语义分割问题. 由于皮肤是人体的重要组成部分, 因此在色情信息识别[5]、面部识别[6]、手势识别[7]、皮肤病检测[8]等领域有广泛的应用, 同时也是图像预处理工作的重要组成部分. 皮肤具有颜色、纹理等特征, 但木头、布料等非皮肤像素的基本特征与皮肤像素的特征有明显的重叠部分, 皮肤区域和非皮肤区域的边缘界限不明显, 使得皮肤检测成为一个具有挑战性的问题.

过去几年, 在不同的颜色空间(RGB、YCbCr、HSV等)区分皮肤与非皮肤像素的方法被广泛研究. 例如Shin等人[9]将9种颜色空间划分为正常状态下的三维颜色空间和减少光照分量的二维颜色空间, 并在这18种颜色空间中提出了基于散点矩阵和直方图分析2种方法的4个评价指标, 最终得出在RGB颜色空间中皮肤与非皮肤之间的可分性最高, 同时有3个指标表明减少光照分量并没有提高皮肤检测的性能. Chaves-González等人[10]使用K-means分类方法来验证不同颜色空间对皮肤检测性能的影响. 作者将k设置为3, 在10种颜色空间中分别验证了在3通道及各通道分量下的分类效果. 文中通过正确检测率、FP值、FN值3项指标对10种颜色空间的监测效果进行了评估, 得出HSV是最适合肤色检测的颜色空间的结论. 除此之外, YCbCr和YDbDr也取得了很好的效果. Al-Mohair等人[11]收集了不同性别、光照等条件下的150张图像并从每张图像中选取5个40×40的皮肤像素块, 将其转换到5个颜色空间中利用MLP神经网络训练5个独立的神经网络来检验皮肤检测在不同颜色空间的性能. 实验表明在YIQ颜色空间中, 皮肤检测具有最准确效果. 另外, 作者利用像素灰度值的标准差、偏度和峰度对纹理特征进行描述, 结合纹理和颜色特征增加了神经网络对皮肤分类的能力. Shaik等人[12]采用阈值方法对HSV和RCbCr两种颜色空间的肤色检测结果进行比较, 实验结果表明YCbCr颜色空间对于彩色图像中图像像素的颜色分离是有效且高效的, 其可以应用于光照不均匀的复杂彩色图像, 而HSV 颜色空间在简单图像及单一背景情况下皮肤检测效果更好.

近几年, 利用分类器(贝叶斯分类器、高斯混合模型、神经网络等)、特征提取(如颜色、纹理、空间分布)等机器学习方法来确定皮肤区域的思想被提出. Taqa等人[13]使用统计量度来估纹理特征, 使用反向传播人工神经网络来学习特征并对给定的输入进行分类.在实验中, 作者构建了基于预先定义的肤色规则、仅基于纹理特征、基于颜色和纹理特征的3种皮肤检测器并进行比较, 得到了95.62%的真实阳性率和0.8795%的假阳性率. Zuo等人[14]将循环神经网络层集成到全连接网络中, 利用FCN层捕获图像的局部特征, 用四个起点不同的有向无环图的组合在RNN层提取语义上下文信息. 实验采用AUC作为评价指标在COMPAQ和ECU两大数据集上进行了验证, 分别为95.93%和98.10%. Kim等人[15]提出的皮肤检测神经网络是由VGG和NiN组成. VGG网络着重于纹理、颜色等局部特征, NiN网络着重于与人类有关的形状特征和颜色、纹理特征. 实验在两个数据集ECU及Pratheepan数据集分别取得了87.20%、90.03%的准确率.

上述方法综合了皮肤的基本特征和语义上下文信息, 但仍存在一定的局限性. 首先, 皮肤特征相对单一, 因此神经网络只能提取有限的信息. 其次, 由于大量的物体具有与肤色相似的特征, 肤色分割受到背景的严重影响, 导致皮肤的边缘分割不准确. 针对这些问题, 本文提出了一种深层特征与边缘特征融合的皮肤检测校正算法. 该方法首先通过多层特征融合提取皮肤的纹理、颜色等特征, 采用门控卷积层对皮肤像素与非皮肤像素的边缘进行细化, 最后利用ASPP模块[16]将深层特征与边缘特征进行融合, 提高皮肤检测的准确性.本文将准确率、精确度、召回率和F值作为评价指标, 在ECU[17]和Pratheepan[18]数据集上对本文算法进行了评估.实验结果表明, 该方法具有较高的检测精度和较好的泛化能力.

本文第1节介绍了皮肤检测算法的结构和原理; 第2节介绍了实验数据和评价标准, 并在2个数据集上分析了该算法的优势; 第3节对本文的工作进行了总结.

1 皮肤检测

本文提出的校正网络由深层特征学习、边缘细化及特征融合3个模块组成. 首先将RGB图像及ground truth作为网络的输入, 利用ResNet-50输出的不同尺度的特征信息经过金字塔池化分步学习以充分提取皮肤的基本特征及语义上下文信息. 输出的特征图作为边缘细化模块的输入, 利用卷积过滤无关信息, 只提取皮肤边缘区域的相关信息, 最后利用 ASPP将深层特征输出与边缘输出进行融合, 得到最终的校正结果.本文算法的整体框架如图1所示.

1.1 深层特征提取

ResNet网络解决了增加网络深度带来的效率退化的问题, 提高了网络性能. 金字塔池化模块通过提取不同尺度的特征图, 为语义分割提供了上下文信息. 本文将ResNet-50作为主干网络, 引入金字塔池化模块生成特征图.

深层特征提取模块采用三级特征学习策略来对皮肤进行修正分割, 图2展示了该模块的一级特征学习过程. 3个不同尺度的ground truth采样后与原始图像融合, 作为深层特征提取模块的初始输入. 多尺度特征信息的融合有助于模型捕获不同层次的结构和特征信息, 从而细化分割. 此模块首先利用ResNet-50对输入数据进行处理, 计算出3种不同尺度的特征图F、F_1、F_2. 将ResNet-50及金字塔池化模块作为不同尺度的特征图融合和学习的网络, 经过3次不同层次的学习分别融合特征图F_1及F_2生成最终的特征图R1.

图 1 本文算法框架图

图 2 特征学习过程

在一级特征学习后, 将双线性采样后的输出特征图替换输入图像重新进行训练, 过程见图3. 本文提出的网络结构允许网络逐渐纠正分段错误. 经过3级循环后, 得到了3个深层特征图R1R2R3, 深层特征图最终将用于边缘细化模块.

图 3 深层特征提取过程

不同的损失函数适用于不同尺度的融合. 利用交叉熵损失 $L_{CE}^{{{{S_1}}}}$ 来产生特征图S1的最佳输出结果.

$\dfrac{1}{2}\left( {L_{{L_1} + {L_2}}^{{{{S_2}}}} + L_{CE}^{{{{S_2}}}}} \right)\;\;\;$ 为生成S2的损失函数. 为了鼓励更好的细化, 在S3的输出上还采用了分割梯度幅度的L1损失. 分割梯度由3×3的均值滤波器和Sobel算子估计. 梯度损失可以写成:

$ {L}_{\rm{grad}}=5\cdot\frac{1}{n}{\displaystyle \sum \parallel }\left({{f}}_{m}\left({x}_{i}\right)\right)-\nabla \left({{f}}_{m}\left({y}_{i}\right)\right) $ (1)

其中, ${{f}}_{m}(\cdot)$ 表示3×3的均值滤波器, $\nabla $ 表示由Sobel算子逼近的梯度算子, n表示像素数, ${x_i}$ ${y_i}$ 分别表示地面实值分割和输出分割的第i个像素.

深层特征提取模块的总损失函数定义为:

$ {L_{\rm{deep}}} = L_{CE}^{{{S_1}}} + \frac{1}{2}\left( {L_{{L_1} + {L_2}}^{{{{S_2}}}} + L_{CE}^{{{{S_2}}}}} \right) + \left( {L_{{L_1} + {L_2}}^{{{{S_3}}}} + L_{{\rm{grad}}}^{{{{S_3}}}}} \right)\;\; $ (2)
1.2 边缘细化

深层特征提取模块集成了颜色、形状、纹理等特征. 这些特征还不够, 其他信息对于皮肤分割也可能是至关重要的, 例如边缘信息. 该工作结合门控卷积层来提取皮肤区域的边缘信息. 当与深层特征相结合时, 皮肤分割性能将得到进一步提高.

边缘细化模块的输入是深层特征提取模块的中间特征图. 本文采用2个门控卷积层, 如图1所示, 经过1×1卷积及res1后, 将卷积后的特征图R1R2进行双线性插值, 作为第1个门控卷积层的输入, 计算出边缘特征图P1. 将res2后的特征图P1和卷积后的深层特征图R3输入到第2门控卷积层, 得到最终的边缘特征图P2. 门控卷积层的具体结构如图4所示.

图 4 门控卷积层结构图

RtPt分别为深层特征和边缘特征, 我们将特征Rt和特征Pt连接起来, 得到归一化的1×1卷积层的关注图 ${\alpha _t}$ , 然后接着是一个Sigmoid函数 $\sigma $ :

$ {\alpha _t} = \sigma \left( {{C_{1 \times 1}}\left( {{R_t}\parallel {P_t}} \right)} \right) $ (3)

其中, $\parallel $ 表示特征图的串联.

门控装置产生的结果如下:

$ {\widehat {{P_t}}^{\left( {i, j} \right)}} = {\left( {{P_t} \otimes {\omega _t}} \right)_{\left( {i, j} \right)}} = {\left( {\left( {{P_{{t_{\left( {i, j} \right)}}}} \odot {\alpha _{{t_{\left( {i, j} \right)}}}}} \right) + {P_{{t_{\left( {i, j} \right)}}}}} \right)^{\rm{T}}}{\omega _t} $ (4)

其中, ${\omega _t}$ 是3×3卷积核.

损失定义为BCE损失:

$ {L_{\rm{edge}}} = {L_{\rm{BCE}}} = - \frac{1}{n}\sum\limits_{i = 0}^{k = 1} {\left( {{y_i} \times \log {x_i} + \left( {1 - {y_i}} \right) \times \log \left( {1 - {x_i}} \right)} \right)} $ (5)

其中, ${x_i}$ 是真实值, ${y_i}$ 是预测值.

1.3 特征融合

由于两个模块所提取的是不同区域的信息, 因此本文采用ASPP模块进行深层特征与边缘特征的融合. 空洞卷积能够在不损失信息的情况下, 加大感受野, 从而使每个卷积输出都包含较大范围的信息. ASPP使用具有不同采样率的多个并行的空洞卷积层, 每个采样率提取的特征在单独的分支中进一步处理并融合以生成最终结果.

ASPP模块主要包括1个1×1的卷积及3个3×3的空洞卷积, 采样率分别为(6, 12, 18), 以及1个全局平均池化. 将上述得到的4个不同膨胀速率的特征连接后送入1×1卷积进行融合得到新特征.

本文校正算法的总体网络结构图如图1所示. 深层特征图和边缘特征图作为ASPP模块的输入进行特征融合. ASPP能充分保留两个模块的有效信息, 从而得到精细的皮肤检测结果.

2 实验结果 2.1 数据集及评估标准

本文在ECU和Pratheepan数据集上对所提出的方法进行了评估. ECU数据集其中包含4000张不同种族和不同照明条件的图片及其真实标签图, 其中包含490万个皮肤像素和1370万个非皮肤像素. Pratheepan数据集由作者在Google随机下载的32张人脸图片和46张全家福照片及经过人工标注的真实标签图组成. 这些图片同样是在不同的照明条件下使用不同种类的相机获得.

本工作中实验的详细配置如下:

(1)硬件设备: CPU: Intel core i7 8700K; GPU: 两个NVIDIA GeForce 1080Ti; 内存: 32 GB.

(2)软件配置: 操作系统: Ubuntu 16.04 LTS; PyCharm 2019.1; CUDA Toolkit 10.1; PyTorch 1.7.1+cu101.

(3)实验参数设置: 训练次数为70000次, batch_size为6, 学习率为0.00025.

为了实现更准确的实验比较, 本文随机选择50%的ECU数据集作为训练数据. 本文使用PyTorch下的tensorboardX记录损失下降情况, 在训练7万次后, 损失下降情况如图5所示, 在训练至30000次时, 下降缓慢, 到55000次时, 趋于平稳.

图 5 损失图

本文使用精确度、准确度、召回率和F1这4项评价指标来评估本文所提出的皮肤分割算法的实验结果:

$ Accuracy = \frac{{TP + TN}}{{TP + TN + FP + FN}} $ (6)
$ Precision = \frac{{TP}}{{TP + FP}} $ (7)
$ Recall = \frac{{TP}}{{TP + FN}} $ (8)
$ F1 = \frac{{2 \times Precision \times Recall}}{{Precision + Recall}} $ (9)
图 6 皮肤检测结果

2.2 实验结果对比分析

本文以Rahmat等人[19]提出的基于阈值的方法得到的肤色检测结果作为输入来验证皮肤检测校正网络的性能. 其结合HSV、YCbCR和归一化RGB三种颜色空间的色度通道, 得到如表1所示的肤色阈值.

我们将该方法在上述两个数据集中进行了定量比较. 表2显示了所提出的方法在Pratheepan数据集上的性能. 与文献[15]相比, 本文提出的算法的准确率、召回率和F1值分别提高了5%、5%和4%.

表 1 皮肤检测阈值表

表 2 本文算法在Pratheepan数据集上的性能

表3显示了本文所提出的方法在ECU数据集上的性能对比. 本文算法在3个评估指标均优于现有方法. 具体地说, 与文献[15]中提出的Image-NiN算法相比, 本文提出的算法的准确率提高了4%, 召回率提高了2%, F1得分提高了3%.

表 3 本文算法在ECU数据集上的性能

图6可以看出, 经过本文提出的皮肤检测校正算法后的皮肤检测结果更接近真实情况, 本文算法在检测皮肤边缘和处理细节方面做得更好. 通过以下对比实验可以看出, 融合深层特征与边缘特征的皮肤检测校正算法在很多方面都优于现有的方法, 并且得到了更好的皮肤检测结果.

3 结论与展望

背景干扰导致皮肤检测不准确是皮肤检测的难点之一. 针对这一问题, 提出了一种基于深层特征和边缘信息融合的增强型肤色检测方法, 旨在提取更有效的肤色特征, 获得更好的肤色检测结果. 本文提出的改进方法可以将任何肤色检测方法的结果作为输入.

首先, 对ResNet-50模型生成的不同尺度的特征进行分层融合, 并使用不同的损失函数提取皮肤特征和上下文信息. 然后, 利用皮肤和非皮肤边界区域在颜色和纹理上的差异, 通过门控卷积层提取边界信息, 提高分割效果. 最后, 通过ASPP对深层特征学习和边缘细化模块进行融合. 实验结果证明了该方法的有效性.

但是, 由于受光照条件的影响, 肤色检测方法的准确性还有待提高. 在未来的研究中, 我们将尝试进行图像预处理, 例如消除光照对数据集的影响. 皮肤检测准确率的提高不仅有助于人脸检测、手势识别等, 也是色情信息检测的基础工作. 在接下来的工作中, 我们将在此基础上进一步研究色情信息的检测.

参考文献
[1]
Li X, Yang YB, Zhao QJ, et al. Spatial pyramid based graph reasoning for semantic segmentation. 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). Seattle: IEEE, 2020. 8947–8956.
[2]
Zhang YZ, Qiu ZF, Yao T, et al. Transferring and regularizing prediction for semantic segmentation. 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). Seattle: IEEE, 2020. 9618–9627.
[3]
张宏钊, 吕启深, 党晓婧, 等. 基于加权损失函数的多尺度对抗网络图像语义分割算法. 计算机应用与软件, 2020, 37(1): 290-297.
[4]
王彤, 杨秋菊. 结合多类特征融合与ICM目标函数优化的图像语义分割方法. 计算机应用与软件, 2021, 38(8): 240-247. DOI:10.3969/j.issn.1000-386x.2021.08.037
[5]
Lee JS, Kuo YM, Chung PC. Detecting nakedness in color images. Intelligent Multimedia Analysis for Security Applications. Berlin: Springer, 2010. 225–236.
[6]
Chen W, Wang K, Jiang HF, et al. Skin color modeling for face detection and segmentation: A review and a new approach. Multimedia Tools and Applications, 2016, 75(2): 839-862. DOI:10.1007/s11042-014-2328-0
[7]
Sadik F, Subah MR, Dastider AG, et al. Bangla sign language recognition with skin segmentation and binary masking. 2019 IEEE International WIE Conference on Electrical and Computer Engineering (WIECON-ECE). Bangalore: IEEE, 2019. 1–5.
[8]
孙海峰, 孙秀玲, 齐恩铁, 等. 基于混合粒子群优化SVM算法的红斑鳞状皮肤病诊断. 计算机应用与软件, 2015, 32(6): 192-197, 211. DOI:10.3969/j.issn.1000-386x.2015.06.048
[9]
Shin MC, Chang KI, Tsap LV. Does colorspace transformation make any difference on skin detection? 6th IEEE Workshop on Applications of Computer Vision, 2002. (WACV 2002). Proceedings. Orlando: IEEE, 2002. 275–279.
[10]
Chaves-González JM, Vega-Rodríguez MA, Gómez-Pulido JA, et al. Detecting skin in face recognition systems: A colour spaces study. Digital Signal Processing, 2010, 20(3): 806-823. DOI:10.1016/j.dsp.2009.10.008
[11]
Al-Mohair HK, Mohamad-Saleh J, Suandi SA. Color space selection for human skin detection using color-texture features and neural networks. 2014 International Conference on Computer and Information Sciences (ICCOINS). Kuala Lumpur: IEEE, 2014. 1–6.
[12]
Shaik KB, Ganesan P, Kalist V, et al. Comparative study of skin color detection and segmentation in hsv and ycbcr color space. Procedia Computer Science, 2015, 57: 41-48. DOI:10.1016/j.procs.2015.07.362
[13]
Taqa AY, Jalab HA. Increasing the reliability of skin detectors. Scientific Research and Essays, 2010, 5(17): 2480-2490. DOI:10.5897/SRE.9000588
[14]
Zuo HQ, Fan H, Blasch E, et al. Combining convolutional and recurrent neural networks for human skin detection. IEEE Signal Processing Letters, 2017, 24(3): 289-293. DOI:10.1109/LSP.2017.2654803
[15]
Kim Y, Hwang I, Cho NI. Convolutional neural networks and training strategies for skin detection. 2017 IEEE International Conference on Image Processing (ICIP). Beijing: IEEE, 2017. 3919–3923.
[16]
Chen LC, Zhu YK, Papandreou G, et al. Encoder-decoder with atrous separable convolution for semantic image segmentation. 15th European Conference on Computer Vision. Munich: Springer, 2018. 833–851.
[17]
Phung SL, Bouzerdoum A, Chai D. Skin segmentation using color pixel classification: Analysis and comparison. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2005, 27(1): 148-154. DOI:10.1109/TPAMI.2005.17
[18]
Pratheepan Y, Condell J, Curran K, et al. A dynamic threshold approach for skin segmentation in color images. 2010 International Conference on Image Processing. Hong Kong: IEEE, 2010. 2225–2228.
[19]
Rahmat RF, Chairunnisa T, Gunawan D, et al. Skin color segmentation using multi-color space threshold. 2016 3rd International Conference on Computer and Information Sciences (ICCOINS). Kuala Lumpur: IEEE, 2016. 391–396.
[20]
Jones MJ, Rehg JM. Statistical color models with application to skin detection. Proceedings. 1999 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (Cat. No PR00149). Fort Collins: IEEE, 2002. 81–96.
[21]
Tan WR, Chan CS, Yogarajah P, et al. A fusion approach for efficient human skin detection. IEEE Transactions on Industrial Informatics, 2014, 8(1): 138-147. DOI:10.1109/TII.2011.2172451
[22]
Hwang I, Lee SH, Min B, et al. Luminance adapted skin color modeling for the robust detection of skin areas. 2013 IEEE International Conference on Image Processing. Melbourne: IEEE, 2014. 2622–2625.
[23]
Kawulok M. Fast propagation-based skin regions segmentation in color images. 2013 10th IEEE International Conference and Workshops on Automatic Face and Gesture Recognition (FG). Shanghai: IEEE, 2013. 1–7.
[24]
Kawulok M, Kawulok J, Nalepa J. Spatial-based skin detection using discriminative skin-presence features. Pattern Recognition Letters, 2014, 41: 3-13. DOI:10.1016/j.patrec.2013.08.028
[25]
Hwang I, Kim Y, Cho NI. Skin detection based on multi-seed propagation in a multi-layer graph for regional and color consistency. 2017 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). New Orleans: IEEE, 2017. 1273–1277.