【问题标题】:How to use a Neural Network for face detection?如何使用神经网络进行人脸检测?
【发布时间】:2016-03-31 09:32:58
【问题描述】:

我正在尝试使用用 theano 编写的神经网络构建人脸检测系统。对于我必须计算交叉熵的预期输出应该是什么,我有点困惑。我不想知道脸部是否存在,我需要在图像中突出显示脸部(找到脸部的位置)。图像的大小是恒定的。但是图像中人脸的大小不是。我该怎么做?此外,我的网络摄像头目前可以捕捉 480x640 的图像。在输入层中创建这么多神经元对系统来说会非常繁重,我如何在不丢失任何特征的情况下压缩图像?

【问题讨论】:

    标签: machine-learning computer-vision neural-network theano


    【解决方案1】:

    有很多可能的解决方案,最简单的一种是执行滑动窗口搜索并询问网络“图像的这部分是否有人脸?” - 这是相当“标准”的方法。特别是,你这样做是分层的 - 将图像分成 9 个重叠的正方形(我假设图像是正方形)并在每个正方形中询问“里面有一张脸吗?”通过将其重新调整为您的网络输入。接下来,您再次将回答“是”的人分成 9 个方格并重复。这样你就可以快速找到脸型。另一种方法是执行监督分割,您尝试预测图像的哪些部分(像素/超像素)属于人脸,哪些不属于人脸。这不是详尽的列表,但应该让您大致了解如何继续。

    如何在不丢失任何功能的情况下压缩图像?

    你没有。这不可能。缩小时总是会丢失一些数据(无损压缩存在,但它会破坏结构,从而使分类变得非常困难)。

    【讨论】:

    • @moose 这正是答案中写的,仔细阅读最后一句(存在无损压缩但它破坏了结构,因此分类非常困难)
    • 哦,对不起。我删除了我的评论。
    【解决方案2】:

    您应该首先从通过网络摄像头接收到的图像创建一个训练集。训练集必须包含人脸和非人脸图像(如苹果、汽车等)。为了更好地概括,您可以使用一些现成的数据集。在图像上训练网络后,您可以使用网络对看不见的图像进行分类。

    如果您的目标是仅检测图像是否包含人脸,则此方法适用。但是,如果您想识别人脸(例如,这张人脸属于 John 而不是其他人),您需要使用您想要识别的人的图像来训练网络。这种网络中的类数等于不同人的数量。

    【讨论】:

    • OP 询问的是检测人脸的位置,而不是识别某物是否是一张脸/是某人的脸。
    • @lejlot 在任何人脸检测系统中都很好,第一步是检测网络以在输入的图像中找到人脸!然后网络的隐藏节点可以帮助确定人脸在图像中的位置。对于后一部分,我只是想提供更多信息!
    猜你喜欢
    • 2011-02-05
    • 1970-01-01
    • 2011-01-10
    • 2020-02-23
    • 2013-01-17
    • 2016-01-21
    • 1970-01-01
    • 2013-04-30
    • 2014-03-15
    相关资源
    最近更新 更多