从人脸图像进行皮肤检测

数据挖掘 Python 计算机视觉 opencv
2022-03-10 18:31:28

我有人脸的照片,我想检测每个人的肤色以备后用。我不想使用预定的颜色范围,而是想确定每个人的颜色,然后用它来检测这个人后来的照片中的遮挡。训练人脸图像是在相同条件下拍摄的,但测试将使用不同条件下的照片。我的第一个想法是使用这些图像的颜色直方图,然后峰值将是这个人的肤色。有没有更聪明的方法来做到这一点?我正在使用 Python 和 OpenCV,但如果需要,我可以使用其他工具。

1个回答

首先提取面部片段是个好主意。OpenCV里面有人HaarCascades脸检测的预定义但是,使用它们可能会遇到一些问题。照片确实需要曝光良好。他们也很容易误报。

https://realpython.com/face-recognition-with-python/

稍微好一点,但仍然是香草,有dlib他们最糟糕的问题是你只会得到边界框。背景可能会潜入并弄乱您的颜色分析。

要获得开创性的分数,您必须使用 DNN。这是一些例子。

我会提出一些不同的方法。拿你的数据集。使用现有工具提取人脸并手动标记肤色。然后训练CNN。当你扩充数据集时要小心。某些操作可能会造成破坏,例如交换频道。基于颜色的分析很难。你需要考虑覆盖不同的曝光值、对比度、白平衡、饱和度等。