思路
肤色区域检测是肤色定级的前提,只有正确的将图像中人体的肤色区域检测出来,才能探究人体皮肤的肤色感光差异以及分布规律,从而选择更合适的颜色空间并做出更好的划分。
皮肤检测任务方法类别?
指标较高的方法和模型?
肤色定级的不同颜色空间为啥如此定义研究的更深一点?–之后
学习阶段:现有的算法有哪些可以不全面 ? 可以分为几大类? 看综述怎样分类的? 指标结果贴出来
自己试验:一两个几个重要的算法复现了 前沿的?都没有的话复现最先进 拿数据集跑跑
Human Skin Detection Using RGB, HSV and YCbCr Color Models
Info
2017年 引用次数102 会议:ICCASP 怎么感觉查不到这个会议?
Abstract
皮肤颜色具有对方向和大小不变性和处理速度快等特点,常用于人体皮肤检测中。提出了一种新的人体皮肤检测算法。识别皮肤像素的三个主要参数是RGB(红、绿、蓝)、HSV(色调、饱和度、值)和YCbCr(亮度、色度)颜色模型。不仅考虑了三种颜色参数的单独范围,而且考虑了交流计数的组合范围,从而提高了识别给定图像皮肤区域的精度。
Conclusion
基于阈值的算法,能够处理不同光照条件下的图像,未来应用可能在脸部、手势识别、皮肤病检测等
Introduction
作为预处理步骤,识别关键是皮肤颜色。其他因素如光照条件也会影响结果,所以常常与纹理、边缘特征等线索相结合。
检测方式是判断单个像素是否位于我们设定的颜色范围,本文是结合RGB、HSV和YCbCr三个颜色空间设定阈值。
Literature Review
皮肤检测技术可以大致分为基于像素的技术和基于区域的技术。pixel-based region-based
在基于像素的皮肤检测中,每个像素根据一定的条件分别被分为皮肤像素和非皮肤像素。基于颜色值的皮肤检测是基于像素的。
基于区域的皮肤检测技术考虑像素点的空间关系.初始皮肤区域不断判断周围皮肤的属性来增大。
Color Spaces
基于RGB:RGB,normalized RGB
规范化RGB就是一个normalized过程$e.g. r=\frac{R}{R+G+B}$
基于色调Hue-based:HSI,HSV,HSL
基于亮度Luminance-based:YCbCr,YIQ,YUV
亮度信息存储为单个分量(Y),而色度信息存储为两个色差分量(Cb和Cr)。Cb表示蓝色分量与参考值之差。Cr表示红色分量与参考值的差值。
Proposed Skin Detection Algorithm
ARGB color model:https://en.wikipedia.org/wiki/RGBA_color_model
利用右移操作和与0xff按位与,得到每个通道值,然后根据下图的阈值判断:
这个阈值如何获得的?
Experiments Resuts


还有一点就不贴图了,即这三个颜色空间所获得的结果是差不多的。
Combining Convolutional and Recurrent Neural Networks for Human Skin Detection
Info
年份:2017
引用次数:72
期刊:IEEE SIGNAL PROCESSING LETTERS JCR分区Q2
Abstract
高效的传统手工设计的肤色检测算法需要领域专家的广泛工作
CNN在像素级标记任务中取得了巨大的成功。CNN的架构不足以建模像素与其邻居之间的关系。引进RNN。FCN层捕获一般的局部特征,RNN层建模图像中的语义上下文依赖。在COMPAO和ECU皮肤数据集上验证了方法的有效性,其中RNN层增强了复杂背景下皮肤检测的识别能力。
Conclusion
利用RNN层对图像像素间的语义空间依赖进行建模。
Introduction
在许多常用的颜色空间中,皮肤像素和非皮肤像素之间有明显的重叠。例如,背景中的许多物体,如墙壁、木材和布料,可能与不同类型的人类皮肤有着相似的颜色。在不考虑相邻像素的情况下,很难确定单个像素是皮肤还是非皮肤。此外,皮肤检测的性能还受到多种其他因素的影响(光照不均匀、相机特性、受试者种族、年龄、性别等)。
最近的研究集中在:
不同的颜色空间(如RGB [9], YCbCr [10], CIE-XYZ [11], HSV[12],和SKN[13])
特征提取(如颜色[14],纹理[15],和空间分布[16])
分类方法(贝叶斯分类器[9],高斯混合模型[17],支持向量机[18],神经网络[19],随机森林[20]等等)。
基于cnn的架构不擅长建模像素和它们的邻居之间的关系。最近,Zheng等人[27]在CNN的最后一层引入了条件随机场来细化粗略的预测。
Problem Statement & Method
Experiments and Analysis
Matlab环境 什么颜色空间仍然是开放问题,但是有人证明性能在某种程度上是独立于颜色空间的
实验设置
- FCN初始权值:预训练的FCN-8s
- RNN初始权值:正态分布随机数
- 最优化方法:带动量SGD,动量0.9
- 学习速率:10^-7固定学习速率,bias加倍的学习速率
- 20个epoch per image 55ms
数据集
- COMPAQ 只使用了4670皮肤图像 & ECU 1000测试 3000训练
- 提供了GT skin masks 和 versatile attributes
- COMPAQ结果相对ECU较差,因为数据集质量较差,包含大量低质量图像和半自动的GT
实验结果
- 混淆矩阵
- the receiver operating characteristics ROC TPR和FPR 两个指标相互有点制衡 ROC相比P-R曲线更稳定,样本数量改变后不会振荡 ROC曲线的绘制:调整不同阈值设置,每个阈值在ROC空间上产生一个不同点 ‘*‘表示最佳工作点,由斜率Slope得到
- respective area under curve AUC ROC曲线下的面积 物理意义:
- equal error rate 1-EER
- FCN8s+RNN的最终输出层为2通道的softmax,做二分类,设置阈值,超过阈值为皮肤,否则为非皮肤。
- 注意,对现有的alogrithm进行比较是困难的,因为它们要么使用不同的评估指标,要么使用非公共数据集,要么使用任意的操作点(或阈值)。


Semi-supervised Skin Detection by Network with Mutual Guidance
Info
年份:2019
会议:ICCV
Megvii Technology 旷视研究院
Abstract
a single human portrait image->结合人体作为弱语义指导, 考虑到获取大规模的人体标记皮肤数据通常是昂贵和费时的->半监督学习策略进行皮肤和身体联合检测的dual-task network->一个共享编码器,分别用于皮肤和身体的两个解码器,两个解码器可以互相引导
Conclusion
半监督训练,即不需要一个训练样本存在两种GT
Introduction
之前的方法
Combining haar feature and skin color based classifiers for face detection 2011 ICASSP
Adaptive learning of an accurate skin-color model 2004 ICAFGR
尝试在不同的颜色空间中建模皮肤颜色,并在这些空间中训练皮肤分类器
缺点:严重依赖于肤色的分布,并且没有涉及到语义信息,因此性能有限。
基于其他检测任务的DNN的改进受限于皮肤数据
引入人体检测的两个优势:
- 为皮肤位置提供先验信息
- 检测到皮肤后,可以过滤掉False positive
皮肤检测也为人体检测提供了信息
两个检测器的共享编码器会考虑到两个任务的相似性和网络的紧凑性,从输入图像中提取共同的特征图。这种结构使我们在训练皮肤检测网络时不需要增加带注释的训练数据,而只需要增加一个人体面罩数据集,这更容易获得。由于这两个数据集分别包含两种ground truth类型,即一个数据样本中要么有一个目标skin mask,要么有一个body mask,因此我们采用新设计的loss和自定义的训练策略对网络进行半监督的训练。
Related Work
Skin detection and segmentation
现有的方法可以分为三类:
- 在颜色空间上明确定义边界模型/阈值-划分区域定皮肤像素-皮肤和非皮肤像素存在明显重叠
- ,应用传统机器学习技术学习种肤色模型-生成/判别模型预测,可能考虑到纹理等局部特征-学习能力有限,精度较低
- 利用深度神经网络学习皮肤分割的端到端模型–MLP->FCN,需要大规模监督->18CVPR Normalized cut loss for weakly-supervised cnn segmentation 引入条件随机场,使弱监督成为可能->本文引用额外数据集提高性能
Multi-task joint learning
它通常通过在所有任务之间共享隐藏层来应用,同时保留几个特定于任务的输出层作为分支。
一些多任务网络通常通过共享编码器来学习共同的特征图,从而潜在地同时提高所有任务的性能。
Experimental Results
**Dataset and Implementation Details **
- 10711 RGB images 5000 skin masks 5711 body masks 网络收集 512x512分辨率
- 随机选择470S和475B,作验证集 随即翻转/调整/裁剪-训练数据增强
- Tensorflow NVIDIA GeForce GTX 1080Ti GPU 训练了12个小时
Comparison with Existing Methods
- 2种传统算法 六种NN算法
- Human skin color clustering for face detection 2003 IEEE RGB和HSV空间定阈值
- Statistical color models with application to skin detection 2002 IJCV 学习GMM预测
- 缺陷:缺乏高级特征,对复杂环境和光照变化鲁棒性差
- A skin detector based on neural network 2002 ICCCSWSE
- Combining convolutional and recurrent neural networks for human skin detection 2017 SPL
- U- net: Convolutional networks for biomedical image segmentation 2015
- Deep residual learning for image recognition 2016CVPR
- Encoder-decoder with atrous separable convolution for semantic image segmentation 2018ECCV
We trained the six networks to convergence收敛 with multiple trials实验 with dataset DS, and selected their best results
For recall, our method ranks only below the GMM method, which has more false alarms so as to suffer from a poor precision.
定量比较-Table1 Figure6 平衡和不平衡 此文数据集与Pratheepan IoU IoU Top-1 Precision Recall
几个典型预测结果-Figure5 Figure1 这几个典型带有各种挑战性 传统方法完全失败 其他CNN不稳定 我们的有效且可靠
Ablation Studies
去掉某些特征 模型 算法 对结果会有什么影响,就是控制变量,为了研究你提出的方法是不是有效
根据奥卡姆剃刀法则,简单和复杂的方法能达到一样的效果,那么简单的方法更可靠。
1-Mutual guidance
Figure4 显示有无互指导的效果 即使没有互指导 也比单任务最好的好 因为共享编码器从身体数据学到了信息
2-Weakly supervised losses
Table2Top虽不显著 确实起到了作用
Figure3 显示了一个例子 不同的弱监督损失的作用
3-Unbalanced dataset
Figure1 若使用 不平衡数据集 IoU下降约%6 但仍比其他的高
4-Backbone networks
Table2Bottom Mobile-Net 替换UNet IoU相对较低 但互指导起到的作用更大
5-Training strategy
- Gradient stopping Figure7
- Initial guidance 给个先验会好一点
- Finetune Figure4 Top train-from-scratch and finetune versions 有没有预训练
Algorithm
双任务FCN 输入一个RGB图像I 输出 skin Os 和 body Ob的概率图 两个解码器Ds Db 编码器E输出I的特征图Ei Os和Ei送到Db 反之亦然 网络结构 Figure2a
1-Network with Mutual Guidance
Figue2b 将原始网络解耦为没有循环的两个阶段 X表示Stage1 X‘ Stage2 Xk包括Xs和Xb
I E Dk 相同 Gk和Gk’不同 第一阶段信息很少而第二阶段有Ok作为指引
Table1 Figure4共享编码器考虑:
- 虽然两个任务GT不同,但具有相似的统计信息
- 特征图具有共性,如区分人的前景和非人的背景的鲁棒性
es eb 第一阶段的指导 一般设为0 应该是一直为0,不会变 E和Dk的结构采用了标准UNet,包括E中的4个下采样 Dk中的4个上采样
输入512x512x3 E->Dk 的特征映射Ei 32x32x1024 另外应用了一个和E相同结构但是通道数只有一半的编码器给Gk,然后将输出与Ei相连,再喂给Dk
每个FCN层 kernel size 3x3 后面是一个BatchNorm和一个ReLu层
2-Learning Algorithm
对于人体检测,由于广泛研究,数据易得 所以对每个数据对,只提供Ms或Mb 很少提供(I,Ms,Mb)所以是一个半监督任务
这主要有半监督损失和具体训练细节实现
2.1Semi-supervised loss
半监督损失由三部分组成,包括:strongly-supervised and weakly-supervised ones
再有GT的一侧算Cross-entropy loss 另一侧算CRF loss 两个输出集合起来算WCE loss,
Cross-entropy loss
where $L_{ce}(x,y)=x\cdot log(y)+(1-x)\cdot log(1-y)$ $l_k$表示一委托个数据样例是否含有GT$M_k$
CRF loss
从 On regularized losses for weakly-supervised cnn segmentation 2018ECCV 引入CRFLoss CRF可以使I中颜色相同且相邻的像素在
where $L_{crf}=S^TWS$ W是I的Affinity Matrix S是平坦化的Ok的列向量 具体看论文
WCE loss
输出之间也有限制,皮肤概率高的话,那么身体概率也应该高,也就是两个分布一致,皮肤概率低的话,就没有限制了,所以用皮肤概率做权重,限定WCE loss 对总体的影响
$L_{wce}(x,y)=x\cdot L_{ce}(x,y)$
semi-supervised loss
$\lambda_1=0.0001 \quad \lambda_2=0.001 $
2.2Training details
Dual-task joint learning
奇数次和偶数次分别喂MB和MS,用Lk来指导算loss
Finetune
有GT的就直接用真实的指导就行
两个阶段的指导变化很大,但是他们使用相同的解码器权重,不然G’反向传播,防止Decoder参数对G‘过拟合,对G欠拟合
SKINNY: A LIGHTWEIGHT U-NET FOR SKIN DETECTION AND SEGMENTATION
Info
2020ICIP
Abstract
lightweight轻量的
全卷积UNet对图像分割很有效
空间上下文对皮肤分隔很重要,对UNet很狭窄是什么意思
扩展了多尺度分析的范围
在ECU和HGR测试
Conclusion
Skinny受益与几个架构组件,包括inception和dense blocks,从而更好利用上下文
inception和dense很关键,并且不影响速度
未来:增强上下文像素分析思想,使用扩张卷积,保持参数低数量,减少FP
Introduction
由于皮肤外观的低特异性和高方差,该问题仍具有挑战性
Figure
图一 UNet没有足够上下文,分类错了,Skinny考虑到更广泛背景,分类正确了
图二 网络结构和两种变体
注意语义分割和实例分割的区别,语义分割是人都归为一类,实例分割是不同的人标成不同的类
全景分割将语义分割和实例分割结合在一起,既能分割背景,也能分割实例
全景分割图像中的内容可以按照是否有固定形状分为 things 类别和 stuff 类别,其中,人,车等有固定形状的物体属于 things 类别(可数名词通常属于 things);天空,草地等没有固定形状的物体属于 stuff 类别(不可数名词属于 stuff)
Method
dice-loss 对于二分类问题,GT 分割图是只有 0, 1 两个值的,因此 |X⋂Y| 可以有效的将在 Pred 分割图中未在 GT 分割图中激活的所有像素清零. 对于激活的像素,主要是惩罚低置信度的预测,较高值会得到更好的 Dice 系数.
意思就是说主要注重皮肤点预测的怎么样,非皮肤点的预测就不管了