前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenVINO中两个高分辨率的人脸检测模型

OpenVINO中两个高分辨率的人脸检测模型

作者头像
OpenCV学堂
发布2021-11-16 11:33:46
4680
发布2021-11-16 11:33:46
举报

OpenVINO中提供了八个人脸检测的相关模型,其中有两个与剩余的六个是基于不同的对象检测头实现。今天这里就重点介绍一下这两个与众不同的人脸检测预训练模型的使用。 模型说明

这两个预训练模型名称分别是:

代码语言:javascript
复制
face-detection-0205
face-detection-0206

这两个模型的检测头分别是基于FCOS与ATSS实现的,其中FOCS的检测头输出如下:

两个模型输入图象格式分别是:

代码语言:javascript
复制
face-detection-0205 NCHW=1x3x416x416
face-detection-0206  NCHW=1x3x640x640

输出格式:

代码语言:javascript
复制
BGR顺序

两个输出层分别是Boxes表示检测框label表示对象

Boxes的数据格式为Nx5,其中N表示数目,5表示数据如下:

代码语言:javascript
复制
[`x_min`, `y_min`, `x_max`, `y_max`, `conf`]
- (`x_min`, `y_min`) – 检测框左上角坐标
- (`x_max`, `y_max`) – 检测框右下角坐标
- `conf` - 置信度

预测出来的坐标值是基于输入图象大小的实际坐标值,conf值在0~1之间。

用法演示

演示如何使用OpenVINO中的FCOS与ATSS人脸检测模型!

代码语言:javascript
复制
import cv2 as cv
import time

from openvino.inference_engine import IECore

ie = IECore()
for device in ie.available_devices:
    print(device)

# Read IR
net = ie.read_network(model=face_xml, weights=face_bin)

input_blob = next(iter(net.input_info))
out_blob = next(iter(net.outputs))

# 输入设置
n, c, h, w = net.input_info[input_blob].input_data.shape

# 设备关联推理创建
exec_net = ie.load_network(network=net, device_name="CPU")

cap = cv.VideoCapture("D:/images/video/Boogie_Up.mp4")
while True:
    inf_start = time.time()
    ret, src = cap.read()
    if ret is not True:
        break
    # 处理输入图象
    image = cv.resize(src, (w, h))
    image = image.transpose(2, 0, 1)

    # 推理
    prob = exec_net.infer(inputs={input_blob: [image]})

    # 后处理
    ih, iw, ic = src.shape
    res = prob["boxes"]
    for obj in res:
        if obj[4] > 0.5:
            xmin = int(obj[0] * iw / w)
            ymin = int(obj[1] * ih / h)
            xmax = int(obj[2] * iw / w)
            ymax = int(obj[3] * ih / h)
            cv.rectangle(src, (xmin, ymin), (xmax, ymax), (0, 255, 255), 2, 8)
            cv.putText(src, str("%.3f" % obj[4]), (xmin, ymin), cv.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 1, 8)
    inf_end = time.time() - inf_start
    cv.putText(src, "infer time(ms): %.3f, FPS: %.2f" % (inf_end * 1000, 1 / (inf_end + 0.0001)), (10, 50),
               cv.FONT_HERSHEY_SIMPLEX, 1.0, (255, 0, 255), 2, 8)
    cv.imshow("face_detect", src)
    c = cv.waitKey(1)
    if c == 27: # ESC
        break
cv.destroyAllWindows()

运行结果如下:

i7CPU跑出这个速度还不错!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档