【人脸检测】DBface_small深度剖析

2024-06-13 09:08

本文主要是介绍【人脸检测】DBface_small深度剖析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要: 基于高斯热力图的目标检测是anchor free中的代表方法,其具有原理简单,易于拓展,后处理简单等优势。

1. 简介

采用热力图做人脸检测,最开始是Centernet的出现,其在通用通用目标检测,人体关键点检测,3D目标检测上都达到了std的效果。后来就出现了centerface,采用mobilev2做bonenet,做人脸与关键点检测。但,项目只给出了推理代码,没有给出训练代码。后面我借鉴Centernet项目,复现了一个版本:CenterFace.pytorch,但,训练结果没法达到原文的最好效果。且代码是用的Centernet,所以可读性较差。

今年,出现了DBface,和dbface_small,其中dbface_small只有1.4M也能和retinaface_small一样的精度。同时,项目重构的代码,结构清晰,也便于理解和阅读。

2. 网络模型结构

2.1 神经网络部分

直接上图(PPT画的,😂😂😂)
在这里插入图片描述

  • Block
    就是一个残差模块

  • ResSE
    在每个残差模块的shortcut前,增加一个SE模块

  • FPN中的UP(借用原作者的经验)
    双线性插值Bilinear+Conv+BN+Activation的上采样模块,优于用反卷积、最近邻插值等,所以比较推荐,但是不同框架对这个的支持不一样,造成使用困难

  • SSH
    在输出加了一个SSH模块,增强特征

  • 输出
    有三个分支,分别对应人脸box中心点的高斯热力图,人脸box,人脸关键点landmark

2.2 模型原理部分

  • hm loss
    人脸box中心点hm的尺寸为:200*200,hm_target也是200 * 200 ,采用focal loss作为损失函数。hm_target == 1表示正样本,hm_target < 1的表示负样本。所以一个目标用anchor的理念,就只有一个anchor。

    • 引入pos_weight,改善大目标检测
      CenterNet AnchorFree的特性是所有目标都一个点,正类贡献无论目标尺寸大小都一样,Anchor Base的特性是目标越大正类loss贡献越大,也正因此,大目标在CenterNet上训练效果总是不好,解决大目标不行,本项目提倡增加pos_weights来处理,并且增加大目标的权重,实验证明有良好的提升大目标效果
  • box loss——giou loss
    box输出为200 * 200 * 4。在Centernet项目中是预测的w,h,采用的是L1loss。DBface中人脸box采用的是[x1, y1, x2, y2]左上,右下,相对box中心的偏差,并用giou loss。

  • landmark loss
    landmark输出为200 * 200 * 10。其也是相对于box中心点的偏差。人脸关键点采用WingLoss

Reference

  1. Centernet
  2. centerface
  3. CenterFace.pytorch
  4. DBface

这篇关于【人脸检测】DBface_small深度剖析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1056874

相关文章

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

Redis 内存淘汰策略深度解析(最新推荐)

《Redis内存淘汰策略深度解析(最新推荐)》本文详细探讨了Redis的内存淘汰策略、实现原理、适用场景及最佳实践,介绍了八种内存淘汰策略,包括noeviction、LRU、LFU、TTL、Rand... 目录一、 内存淘汰策略概述二、内存淘汰策略详解2.1 ​noeviction(不淘汰)​2.2 ​LR

Python与DeepSeek的深度融合实战

《Python与DeepSeek的深度融合实战》Python作为最受欢迎的编程语言之一,以其简洁易读的语法、丰富的库和广泛的应用场景,成为了无数开发者的首选,而DeepSeek,作为人工智能领域的新星... 目录一、python与DeepSeek的结合优势二、模型训练1. 数据准备2. 模型架构与参数设置3

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学