为帧/视频中的每个面孔分配唯一ID

时间:2019-07-23 21:58:20

标签: python opencv face-recognition dlib

我想为帧/视频中的每个面孔分配“人物ID”。而且如果脸部回到视频中,则应该获得与视频前面部分分配的ID相同的ID。

这两个链接会问类似的问题

Assign id for each faces

Assigning unique face id realtime

但是我的情况有些不同。他们的解决方案会更新faceID,无论是否回来。换句话说,如果该脸回来,它将被分配给一个新的ID(我不想要)。

我有几种解决方法:

  1. 提取框架中每个面的特征,通过检查面之间的欧式距离来保存并与每个新面进行比较。如果距离太小,则意味着两个面相同并且应具有相同的ID。
  2. 使用FAISS(Faiss:一个用于高效相似搜索的库)。保存每个面孔的嵌入并从faiss索引连续搜索。如果从索引中找到了面孔,则可以将相同的ID分配给新面孔。

我的想法行得通,但问题在于速度/性能。每次在帧中检测到脸部时,都需要进行特征提取计算。而比较或搜索也需要花费另一个计算时间。

NB:Dlib,Facenet是我用于面部检测和特征提取的框架。

我想加快这个过程。如果您可以与我分享有关如何加快此过程的任何想法/资源,那将非常有帮助。

尽管不建议在StackOverflow中提出有关想法的问题,但我相信这个社区可以为我提供理想的解决方案(如果不是最好的话)。

0 个答案:

没有答案