微信公众号:OpenCV学堂
关注获取更多计算机视觉与深度学习知识
OpenVINO中提供了八个人脸检测的相关模型,其中有两个与剩余的六个是基于不同的对象检测头实现。今天这里就重点介绍一下这两个与众不同的人脸检测预训练模型的使用。
模型说明
这两个预训练模型名称分别是:
face-detection-0205
face-detection-0206
这两个模型的检测头分别是基于FCOS与ATSS实现的,其中FOCS的检测头输出如下:
两个模型输入图象格式分别是:
face-detection-0205 NCHW=1x3x416x416
face-detection-0206 NCHW=1x3x640x640
输出格式:
BGR顺序
两个输出层分别是Boxes表示检测框label表示对象
Boxes的数据格式为Nx5,其中N表示数目,5表示数据如下:
[`x_min`, `y_min`, `x_max`, `y_max`, `conf`]
- (`x_min`, `y_min`) – 检测框左上角坐标
- (`x_max`, `y_max`) – 检测框右下角坐标
- `conf` - 置信度
预测出来的坐标值是基于输入图象大小的实际坐标值,conf值在0~1之间。
用法演示
演示如何使用OpenVINO中的FCOS与ATSS人脸检测模型!
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跑出这个速度还不错!
扫码查看CV系统化学习路线图
推荐阅读
CV全栈开发者说 - 从传统算法到深度学习怎么修炼
Pytorch轻松实现经典视觉任务
教程推荐 | Pytorch框架CV开发-从入门到实战
OpenCV4 C++学习 必备基础语法知识三
OpenCV4 C++学习 必备基础语法知识二
OpenCV4.5.4 人脸检测+五点landmark新功能测试
OpenCV4.5.4人脸识别详解与代码演示