详解OpenVINO 模型库中的人脸检测模型
OpenVINO人脸检测模型
OpenVINO的模型库中有多个人脸检测模型,这些模型分别支持不同场景与不同分辨率的人脸检测,同时检测精度与速度也不同。下面以OpenVINO2020 R04版本为例来逐一解释模型库中的人脸检测,列表如下:
从列表中可以看出骨干特征网络主要是MobileNetv2与SqueezeNet两种支持实时特征网络,ResNet152是高精度的特征网络,检测头分别支持SSD、FCOS、ATSS。
01
MobileNetv2版本的模型结构
上面三张图就是MobileNetv2的全部!看懂就好!
02
ResNet网络
残差网络模型在2015年提出,OpenCV从3.3版本开始支持,相关的论文如下:
https://arxiv.org/pdf/1512.03385.pdf
与VGG模型对比,模型结构:
03
SqueezeNet网络
该模型与MobileNet网络都是支持移动端/端侧可部署的模型,2016提出,相关论文如下:
https://arxiv.org/pdf/1602.07360.pdf
模型结构
检测模型
根据不同的检测头,组合生成不同的对象检测模型,这里三种常见的检测模型:
01
SSD检测
SSD论文中给出的是基于VGG-16作为backbone网络的,替换VGG为MobileNetV2,然后从第12个权重层开始提取特征到第14或者15个权重层,针对anchor预测与类别预测完成回归与分类损失计算,实现对象检测模型训练。
02
FCOS检测
跟YOLOv1相似是一个anchor-free的网络模型,多了一个中心输出来压制低质量的bounding box输出。
03
ATSS
ATSS的全称是自适应训练样本选择,
作者首先对比了RetinaNet与FCOS两种对象检测方法,发现对象检测在回归阶段的本质问题是如何选择正负样本,解决样本不平衡性问题,从而提出了一种新的正负样本选择定义方法-自适应训练样本选择(ATSS)。流程如下
该方法可以获得更好的对象检测精度与mAP,适用RetinaNet与FCOS等对象检测网络。实际实验数据对比:
代码演示与对比
上面的OpenVINO的人脸检测模型列表中,MobileNetv2 + SSD/FCOS适用于速度优先,不同分辨率的场景,ResNet152 + ATSS是OpenVINO模型库中的精度最高的人脸检测预训练模型。下面我们就通过代码分别测试FCOS与ATSS两种检测模型的检测效果比较,针对同一张测试人脸图像,图示如下:(此张非原图!原图太大,无法上传)
统一调整阈值为0.25,推理时间与检测人脸总数的对比图如下:
最终分别得到测试图像如下:
FCOS
ATSS
- 最近处理的几个小问题_20160311 (r8笔记第35天)
- Hibernate_day02总结
- Hibernate_day01总结
- ADG备库批量查询失败的原因分析(r8笔记第33天)
- 通过外部表改进一个繁琐的大查询 (r8笔记第32天)
- 一个简单的bigfile tablespace无法扩展的案例处理 (r8笔记第31天)
- 测试环境的迁移式升级和数据整合(r8笔记第27天)
- 增量数据丢失的原因分析(r8笔记第26天)
- Java全栈开发Spring学习第三天
- 一个oracle bug的简单验证(r8笔记第45天)
- 批量导出csv文件的基本尝试(r8笔记第44天)
- Golang 中的并发限制与超时控制
- 一条简单的报警信息发现的oracle bug(r8笔记第42天)
- 一条insert语句导致的性能问题分析(一)(r8笔记第40天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- HDFS集群缩容案例: Decommission DataNode
- 应用深度学习进行乳腺癌检测
- 为什么你的数据仓库项目推进不下去?
- 19个有趣的Linux 命令,最后一个?... 打死我都不敢尝试!
- SpringBoot 整合 Quartz 实现 JAVA 定时任务的动态配置
- 使用 IntelliJ IDEA 查看类图,内容极度舒适
- 精选10款谷歌浏览器插件武装你的浏览器
- 王者荣耀为什么不使用微服务架构?
- Dubbo 时间轮
- Spring Boot 无侵入式 实现API接口统一JSON格式返回
- 监控、链路追踪、日志这三者有何区别?
- Dubbo 是如何实现 SPI 机制?
- 签到功能,用 MySQL 还是 Redis ?
- 轻松两步,在 SpringBoot 服务上实现接口限流
- 教程 | 在华为鸿蒙OS上尝鲜,第一个“hello world”