【问题标题】:Performance problems while using azure face api for real time face detection使用 azure face api 进行实时人脸检测时的性能问题
【发布时间】:2019-08-18 03:08:56
【问题描述】:

我想用 azure 认知服务的人脸 API 制作一个实时人脸识别器。但是api调用需要很多时间。我能做什么?

我在简单的 while 循环中编写了我的代码。抓住一个框架并检测该框架中的人脸。但是检测人脸的请求部分大约需要 2.5 秒。所以,它离实时检测太远了:) 我在他们的网站上找到了一个 c# 示例,但我无法处理。链接是:https://docs.microsoft.com/en-us/azure/cognitive-services/face/face-api-how-to-topics/howtoanalyzevideo_face

while True:
    image = getCapture()
    cv2.imshow('image', image)
    image = cv2.imencode('.jpg', image)[1].tostring()
    response = requests.post(vision_analyze_url,
                             params=params,
                             headers=headers,
                             data=image)
    print(response.json())
    key = cv2.waitKey(1) & 0xFF

顺便说一句,我什至可以使用 2 fps。我应该使用什么概念?我看到了类似 asyncio 的东西,我应该使用它吗?

【问题讨论】:

  • 为了实时使用,您需要使用其他一些本地库(如opencv)。 api 调用用于处理单个图像或不需要实时结果时。
  • 其实我也和你一样想,但客户希望我这样:)

标签: python opencv python-requests azure-cognitive-services


【解决方案1】:

根据我的经验,您的性能问题是由两个原因引起的。

  1. 每个请求响应的网络延迟,通过在asyncio的基础上同时使用aiohttp来降低间隔请求的时间成本。
  2. 这是一个在单线程上运行的循环进程,等待响应返回然后执行下一个。由于Python没有真正的并发机制,通过GIL,并行或并发通过Parallel Pythonray请求远程人脸检测api。

上面两个基本上和官方文档Example: How to Analyze Videos in Real-time视频流人脸检测加速的思路是一样的。

否则,如果您只需要进行实时人脸检测,我认为基于dlibageitgey/face_recognition 可能是您没有云的场景的更好解决方案。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2019-10-05
    • 2011-09-16
    • 2017-11-09
    • 2022-12-05
    • 2019-01-02
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    相关资源
    最近更新 更多