当前位置: 首页 > news >正文

Deepmotion技术浅析(三):特征提取

DeepMotion 的特征提取模块是整个动作捕捉和 3D 追踪流程的基础,负责从输入的视频帧中提取出具有代表性的视觉特征。这些特征将被用于人体姿态估计、动作识别、3D 重建等后续任务。

包括:

1.图像特征提取

  • 卷积神经网络(CNN)
    • 卷积层
    • 池化层
    • 激活函数
  • 经典 CNN 模型详解(ResNet, HRNet)
    • 模型结构
    • 公式推导
    • 训练过程

2.深度特征提取

  • 多层特征融合
    • 逐元素相加
    • 通道拼接
  • 注意力机制
    • 通道注意力
    • 空间注意力
  • Transformer 模型
    • 自注意力机制
    • 多头注意力

3.模型优化与加速

  • 模型压缩
    • 量化
    • 剪枝
  • 模型加速
    • GPU 加速
    • 并行计算

1. 图像特征提取

图像特征提取是从输入的图像帧中提取出具有代表性的视觉特征,如边缘、纹理、颜色、形状等。这些特征可以用于人体检测、关键点定位、动作识别等任务。

1.1 卷积神经网络(CNN)
1.1.1 工作原理

CNN 是一种专门用于处理图像数据的深度学习模型,通过卷积层、池化层和激活函数等结构,能够有效地提取图像的局部和全局特征。

1.1.2 实现细节
  • 卷积层(Convolutional Layer)

    • 卷积层是 CNN 的核心,负责提取图像的局部特征。
    • 卷积操作通过卷积核对图像进行局部感知,公式如下:

      • 其中,y_{i,j} 是输出特征图在 \left ( i,j \right ) 处的值,w_{m,n}​ 是卷积核的权重,x_{i+m,j+n} 是输入图像在 \left ( i+m,j+n \right )处的像素值,b 是偏置项。
    • 卷积核的大小、步幅(stride)和填充(padding)参数决定了特征图的尺寸和感受野(receptive field)。
  • 池化层(Pooling Layer)

    • 池化层用于降低特征图的分辨率,减少计算量,并提高特征的鲁棒性。
    • 常用的池化方法有最大池化(max pooling)和平均池化(average pooling)。

      • 其中,\texttt{R} 是池化窗口。
  • 激活函数(Activation Function)

    • 激活函数用于引入非线性因素,使网络能够学习到更复杂的特征。
    • 常用的激活函数有 ReLU(Rectified Linear Unit):

1.1.3 模型详解
  • ResNet(Residual Network)

    • 模型结构

      • ResNet 引入残差连接(residual connection),解决了深层网络训练过程中的梯度消失问题。
      • 基本单元是残差块(residual block):

        • 其中,\textbf{x} 是输入,\textbf{y} 是输出,F 是残差函数,W_{i} 是权重参数。
      • ResNet 由多个残差块组成,每个残差块包含两个卷积层和一个跳跃连接。
    • 训练过程

      • ResNet 使用随机梯度下降(SGD)进行训练,优化目标是最小化损失函数(如交叉熵损失)。
      • 训练过程中使用批量归一化(Batch Normalization)和 Dropout 等正则化技术,防止过拟合。
  • HRNet(High-Resolution Network)

    • 模型结构

      • HRNet 是一种高分辨率网络,能够在保持高分辨率特征图的同时,融合多分辨率特征。
      • HRNet 包含多个并行的卷积分支,每个分支处理不同分辨率的特征图,并通过融合模块(fusion module)将不同分辨率的特征图融合在一起。
      • 例如,HRNet 可以包含 4 个分支,分辨率分别为 1/4, 1/8, 1/16, 1/32。
    • 训练过程

      • HRNet 的训练过程与 ResNet 类似,使用 SGD 优化器,并结合批量归一化、Dropout 等技术。
      • HRNet 在多个数据集上进行预训练,并在目标数据集上进行微调,以提高模型的泛化能力。
1.1.4 公式推导
  • ResNet 残差块

    • 其中,F 可以是多个卷积层和非线性激活函数的组合。
  • HRNet 融合模块

    • 其中,\textbf{f}_{1},\textbf{f}_{2},...,\textbf{f}_{\textbf{n}}​ 是不同分辨率的特征图,ConcatConcat 表示通道拼接。
1.2 深度特征提取
1.2.1 工作原理

深度特征提取的目的是从图像中提取出更深层次的语义信息,用于更复杂的任务,如人体姿态估计、动作识别等。

1.2.2 实现细节
  • 多层特征融合

    • DeepMotion 使用多层特征融合技术,将不同层的特征图进行融合,以提取出更丰富的语义信息。
    • 常用的融合方法有逐元素相加(element-wise addition)和通道拼接(channel-wise concatenation)。
  • 注意力机制(Attention Mechanism)

    • 注意力机制用于增强模型对重要特征的关注,提高模型的性能。
    • 常用的注意力机制有通道注意力(channel attention)和空间注意力(spatial attention)。
  • Transformer 模型

    • Transformer 模型通过自注意力机制(self-attention mechanism)可以捕获图像中长距离的依赖关系。
    • DeepMotion 可能使用 Transformer 模型进行深度特征提取。
1.2.3 模型详解
  • 通道注意力

    • 其中,\textbf{M}_{\textbf{c}}​ 是通道注意力掩码,\textbf{W}_{\textbf{0}}​ 和\textbf{W}_{\textbf{1}}​ 是权重参数,\sigma 是 sigmoid 激活函数。
  • 空间注意力

    • 其中,\textbf{M}_{\textbf{s}} 是空间注意力掩码,\textbf{W}_{\textbf{2}} 和 \textbf{W}_{\textbf{3}} 是权重参数。
  • Transformer 模型

    • 自注意力机制

      • 其中,\textbf{Q},\textbf{K},\textbf{V} 分别是查询(query)、键(key)和值(value)矩阵,d_{k} 是键向量的维度。
    • 多头注意力

      • 其中,是权重矩阵。

2. 模型优化与加速

为了提高特征提取模块的运行效率,DeepMotion 采用多种模型优化和加速技术。

2.1 模型压缩
2.1.1 量化(Quantization)
  • 工作原理
    • 量化是指将模型参数从高精度(如 32 位浮点数)转换为低精度(如 8 位整数),从而减少模型的存储空间和计算量。
  • 实现细节
    • 量化可以分为训练后量化(post-training quantization)和量化感知训练(quantization-aware training)。
2.1.2 剪枝(Pruning)
  • 工作原理
    • 剪枝是指删除模型中冗余的权重或神经元,从而减少模型的参数量和计算量。
  • 实现细节
    • 剪枝方法包括权重剪枝(weight pruning)、神经元剪枝(neuron pruning)等。
2.2 模型加速
2.2.1 GPU 加速
  • DeepMotion 利用 GPU 强大的并行计算能力来加速模型推理。
  • 使用深度学习框架(如 TensorFlow, PyTorch)自带的 GPU 加速功能。
2.2.2 并行计算
  • DeepMotion 使用并行计算技术,将模型的不同部分分配到不同的计算节点上,进行并行处理。
  • 例如,可以使用数据并行(data parallelism)和模型并行(model parallelism)技术。

相关文章:

Deepmotion技术浅析(三):特征提取

DeepMotion 的特征提取模块是整个动作捕捉和 3D 追踪流程的基础,负责从输入的视频帧中提取出具有代表性的视觉特征。这些特征将被用于人体姿态估计、动作识别、3D 重建等后续任务。 包括: 1.图像特征提取 卷积神经网络(CNN) 卷…...

国内CentOS使用yum安装docker和docker-compose

安装docker 安装需要的软件包, yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖 yum install -y yum-utils device-mapper-persistent-data lvm2下载yum源采用阿里云的镜像源 wget -O /etc/yum.repos.d/docker-ce.repo https://mi…...

python学opencv|读取图像(十三)BGR图像和HSV图像互相转换深入

【1】引言 前序学习过程中,我们偶然发现:如果原始图像是png格式,将其从BGR转向HSV,再从HSV转回BGR后,图像的效果要好于JPG格式。 文章链接为: python学opencv|读取图像(十二)BGR图…...

【鸿蒙实战开发】数据的下拉刷新与上拉加载

本章介绍 本章主要介绍 ArkUI 开发中最常用的场景下拉刷新, 上拉加载,在本章中介绍的内容在实际开发过程当中会高频的使用,所以同学们要牢记本章的内容。下面就让我们开始今天的讲解吧! List 组件 在 ArkUI 中List容器组件也可以实现数据滚动的效果&a…...

面向对象设计规则和各类设计模式

面向对象设计(Object-Oriented Design, OOD)是一种软件设计方法论,它使用对象、类、继承、封装、多态等概念来组织代码。面向对象设计的核心目标是提高软件的可维护性、可扩展性和复用性。在面向对象设计中,遵循一定的设计原则和模…...

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(六)

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(六) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《拉…...

利用Docker分层构建优化镜像大小

合适docker镜像文件大小不仅影响容器启动效率,也影响资源占用效率。本文介绍如何利用分层方式构建docker镜像,采用多种方式避免镜像文件太大而影响性能。 Docker 镜像大小优化的重要性 资源利用效率 较小的镜像文件在存储和传输过程中占用更少的空间和带…...

Spring 魔法探秘:从 Bean 线程安全到事务魔法全解析

1.Spring 框架中的单例 Bean 是线程安全的么? Spring 框架中的单例 Bean 本身并不保证线程安全性。单例模式意味着在整个应用程序的生命周期中,只会创建该 Bean 的一个实例,并且所有对该 Bean 的请求都将共享这个实例。 线程安全与否取决于…...

[Maven]IDEA父工程创建子工程后父工程不可运行

IDEA在使用maven构建项目时,如果你在当前工程下创建一个子工程,那么原有的工程(变为父工程的工程)原有的代码通常会变得不可运行。 这是因为,使用maven创建父子工程关系后,IDEA会自动变更项目的模块相关配置。 比如这是我maven工程…...

【系统移植】在开发板上加载内核和根文件系统的三种方法

实现环境:ubuntu24.04和FS4412实验平台。 要在开发板上运行linux操作系统,首先要将linux内核镜像(uImage)、设备树(dexynos4412-fs4412.dtb)和根文件系统镜像(ramdisk.img)加载到开发板内存。有以下几种方式加载: 一、通过tftp加载内核和根文件系统 二、通过EMMC加…...

#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍02-基于错误消息的SQL注入(Error-Based SQL Injection)

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...

数据结构-排序(来自于王道)

排序的基本概念 插入排序 在这个算法中,除了输入的数组本身,没有使用额外的数据结构来存储数据,所有的操作都是在原数组上进行的。因此,无论输入数组的大小 n 是多少,算法执行过程中所占用的额外空间是固定的&#xff…...

【蓝桥杯选拔赛真题93】Scratch青蛙过河 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

目录 Scratch青蛙过河 一、题目要求 编程实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、python资料 Scr…...

ReactPress最佳实践—搭建导航网站实战

Github项目地址:https://github.com/fecommunity/easy-blog 欢迎Star。 近期,阮一峰在科技爱好者周刊第 325 期中推荐了一款开源工具——ReactPress,ReactPress一个基于 Next.js 的博客和 CMS 系统,可查看 demo站点。(…...

Hive-4.0.1数据库搭建(可选配置用户名密码远程连接)

1.官网下载tar包上传到服务器并解压&#xff08;我这里解压到了hive目录): 2.进入到conf目录&#xff0c;并复制模板配置文件进行修改&#xff1a; cd /apache-hive-4.0.1-bin/conf cp hive-default.xml.template hive-site.xml3.编写内容如下&#xff1a; <property>&…...

P8772 求和 P8716 回文日期

文章目录 [蓝桥杯 2022 省 A] 求和[蓝桥杯 2020 省 AB2] 回文日期 [蓝桥杯 2022 省 A] 求和 题目描述 给定 n n n 个整数 a 1 , a 2 , ⋯ , a n a_{1}, a_{2}, \cdots, a_{n} a1​,a2​,⋯,an​, 求它们两两相乘再相加的和&#xff0c;即 S a 1 ⋅ a 2 a 1 ⋅ a 3 ⋯ a…...

MySQL迁移SQLite

将 MySQL 的表结构和数据迁移到 SQLite&#xff0c;可以通过以下步骤实现。这个过程主要包括导出 MySQL 数据库到 SQL 文件&#xff0c;然后将其导入到 SQLite 数据库中。 步骤 1: 导出 MySQL 数据库 首先&#xff0c;需要将 MySQL 数据库导出为一个 SQL 文件。可以使用 mysq…...

RocketMQ中的顺序消息和乱序消息详解

内容编辑中… 1.背景 顺序消息是消息队列 RocketMQ 提供的一种高级消息类型。 对于一个指定的Topic,消息严格按照先进先出(FIFO)的原则进行消息发布和消费。 即先发送的消息先消费,后发送的消息后消费。 顺序消息在发送、存储和投递的处理过程中,强调多条消息间的先后…...

Unity UGUI图片循环列表插件

效果展示&#xff1a; 下载链接&#xff1a;https://gf.bilibili.com/item/detail/1111843026 概述&#xff1a; LoopListView2 是一个与 UGUI ScrollRect 相同的游戏对象的组件。它可以帮助 UGUI ScrollRect 以高效率和节省内存的方式支持任意数量的项目。 对于具有10,000个…...

Kafka系列教程 - Kafka 生产者 -2

1. 生产者简介 不管是把 Kafka 作为消息队列系统、还是数据存储平台&#xff0c;总是需要一个可以向 Kafka 写入数据的生产者和一个可以从 Kafka 读取数据的消费者&#xff0c;或者是一个兼具两种角色的应用程序。 使用 Kafka 的场景很多&#xff0c;诉求也各有不同&#xff…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...