首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在OpenCV中检测这是谁的脸?

如何在OpenCV中检测这是谁的脸?
EN

Stack Overflow用户
提问于 2018-10-17 08:38:55
回答 1查看 138关注 0票数 1

我有一套有名字的面部肖像图像(2k)。我有一个高清视频流,我在其中发现和跟踪他们的脸。每个人在每帧,我有说5-10相似,但不同的相框块,20x20到100x100大小。我想知道如何将我检测到的面孔与OpenCV或C++中的给定描述联系起来?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-17 10:59:16

当我在下面写这些的时候,我想起了这玩意儿,这是谷歌第一个获得“人脸识别”的结果,但我从来没有试过,所以我不能评论。

在你所描述的背景下,特征脸会在一定程度上起作用。这将是理想的,如果舞台被提高了一些,并安装在讲台上,所以大多数时候,每个人都直视它,但唉。

我只是试着列出你可以做的事情/试着用不特定的顺序来提高结果。

  • 我个人主要处理神经网络,所以我的第一猜测是尝试OpenFace,但这是一种训练和运行都相当昂贵的方法(需要一个更大的数据库,每个人需要多张图片等等;识别时间最长可达第二张),这可能是对任务的过度消耗。也许你会发现一些有趣的东西给你这里
  • 第一个问题是,数据库中的图片可能是肖像照片,但相机会将它们相对于照片朝下拍摄,在识别之前需要进行一些预处理,以便根据角度进行调整。好的是,更多的人是坐在较少扭曲的脸是,即使质量更差。有两种方法可以做到。
代码语言:javascript
复制
1. One is to pick up distinct features (eyes + nose tip) and affine transform until they match the standard that is rather simple, but you lose some information, like nose length etc. And you'll have to do the same for database pictures before you train.
2. The other is to do it yourself by using face ROI coordinates in picture and transform based on that. It's easier and now that I think about it may even be more reliable. However it doesn't correct face tilt and maybe some other things.

如果角度太大,一切都会分崩离析。

  • 第二件事是基于事实的启发,那就是它是一个视频,而不是静止的镜头。我们用它来识别车牌,但很简单。这样做的想法是,您有一个对象数组,这些对象是可识别的面孔。如果检测到面部,则检查的每一个帧都对应于一个预先存在的对象。这些因素既包括距离,也包括与以往分类器响应的相似性。您记录分类器的响应和它所做的猜测,基于这些您在特定猜测中积累的信心(这里有很多启发式方法,比如,如果没有接近的可选猜测,则积累更多,同时考虑到检测器的响应等等)。一旦在某个帧中没有检测到这张脸,你就可以在任意时间内保持对象的活力,甚至还可以使用松弛的参数在特定的区域上运行检测器。你有我希望的想法。那只是一堆试探法。
  • 然后,在某些视频上运行识别之后,您可以对一些具有高度自信的人脸帧进行识别(或者手工过滤),并对它们进行更多的训练以加强模型。
  • 如果人们戴上太阳镜/棒球帽,并相应地调整,也可能会增加一小步的改变。(我想说太多的干扰,你应该放弃,但你可以在训练中加入相应的案例,或者以其他方式处理)它不应该增加太多的处理时间,因为用足够好的自信检测太阳镜应该不会太难。在处理车牌时,我们有一整串小小的NNs,在大的NNs开始行动之前检查各种事物。
  • 我注意到大多数人脸探测器返回的ROI太小(比如剪头发等),可能想把它扩大一点,但可能没有必要。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52850611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档