如何使用tensorflow对象检测API进行人脸检测

how to use tensorflow object detection API for face detection

Open CV 提供了一个简单的 API 来检测和提取给定图像中的人脸。 (我不认为它工作得很好,因为我经历过它从输入图片中剪切与面部图像无关的帧。)

不知道tensorflow API 能不能做人脸检测。我没有找到相关信息,但希望该领域有经验的人可以指导我解决这个问题。 tensorflow的object detection API 可以像Open CV一样用于人脸检测吗? (我的意思是,您只需调用 API 函数,它就会根据给定的输入图像为您提供人脸图像。)

可以,但需要做一些工作。 首先,看一下对象检测README. There are some useful articles you should follow. Specifically: (1) Configuring an object detection pipeline, (3) Preparing inputs and (3) Running locally. You should start with an existing architecture with a pre-trained model. Pretrained models can be found in Model Zoo, and their corresponding configuration files can be found here。 Model Zoo 中最常见的预训练模型是在 COCO 数据集上。不幸的是,此数据集不包含人脸 class(但包含人)。 相反,您可以从 Open Images 上的预训练模型开始,例如 faster_rcnn_inception_resnet_v2_atrous_oid,它包含人脸 class。 请注意,此模型比 COCO 数据集上使用的常见架构(例如 MobileNetV1/V2 上的 SSDLite)更大且更慢。这是因为 Open Images 比 COCO 有更多的 classes,因此工作良好的模型需要更具表现力才能区分大量 classes 和本地化他们正确。 由于您只想要人脸检测,您可以尝试以下两种选择:

  1. 如果您接受较慢的模型可能会带来更好的性能,请从 faster_rcnn_inception_resnet_v2_atrous_oid 开始,并且您只能在单个 class 面部上稍微微调模型.
  2. 如果您想要更快的模型,您可能应该从在 COCO 上预训练的 SSDLite-MobileNetV2 之类的东西开始,然后在来自不同数据集的 class 人脸上对其进行微调,例如您自己的或 Open Images 的人脸子集。 请注意,预训练模型未在人脸上进行训练这一事实并不意味着您无法对其进行微调,而是它可能比预训练模型需要更多微调-也在脸上训练。

只是增加输入的形状,我试过了,效果好多了