传统的骨架建模方法通常依赖手工制作的零件或遍历规则,因此表达能力有限,难以推广。新的动态骨架模型。通过自动从数据中学习时空模式,超越了以往方法的局限性。该公式不仅有更强的表达能力,而且有更强的泛化能力。
早期使用骨架进行动作识别的方法简单地利用各个时间步的关节坐标形成特征向量,并对其进行时间分析。这些方法的能力是有限的,因为它们没有明确利用关节之间的空间关系,这对理解人类行为至关重要。
骨架是以图形的形式出现,而不是2D或3D网格。这使得使用已被证明过的模型(如卷积网络)变得困难。最近,将卷积神经网络(CNN)推广到任意结构图的图神经网络(GCN)受到了越来越多的关注,并成功地应用于许多应用中,如图像分类,文件分类和半监督学习。
作者就结合了TCN和GCN提出了一种新的 ST-GCN(Spatial Temporal Graph Convolution Networks for Skeleton Based Action Recognition),即时空图卷积网络模型,用于解决基于人体骨架关键点的人体行为识别问题。
这篇文章的主要工作大概就是:
- 使用OpenPose预处理视频
- 结合GCN和TCN提出模型
- 提出了ST-GCN中卷积核的设计原则,以满足骨架建模要求
OpenPose是一个标注人体关节(颈部、肩膀、肘部等等),连接成骨骼,进而估计人体姿态的算法。
OpenPose总共估计人体18个关节点,关节点顺序和名词如下:

在一个视频中,会有很多帧(Frame)。每个帧中,可能会有很多人(Man),每个人会有很多关节(Joint)。每个关节会有不同特征(位置、置信度)。

视频中的骨骼标注
所以,对于一个batch的视频,我们可以用一个5维矩阵 (N,C,T,V,M)
- N 代表视频的数量,通常一个batch有256个视频(最好是2的指数)
- C 代表关节的特征,通常一个关节包含3个特征:x,y,acc
- T 代表关键帧的数量,一般一个视频有150帧
- V 代表关节的数量,通常一个人标注18个关节
- M 代表一帧中的人数
所以,我们只需要关注OpenPose的输出即可,因为这也是我们ST-GCN的输入。
邻接矩阵的影响因素:
首先,要说一下,该模型是建立在一系列的骨架图之上的,G = (V,E)。每个节点对应于人体的一个关节。但是对于边,作者进行了类型分类。 有2种类型的边,即构成关节自然连接的空间边和跨连续时间连续相同关节的时间边。在此基础上,构建多层时空卷积图。
其实有点类似“控制变量”的思想,第一种边,也就是根据人体关节之间自然连接来定义的,叫 内部边 。 只考虑一帧内的关节连接,不考虑时序问题。
第二种边,是对于连续帧内的同一个关节的位置移动的边,叫 帧间边

邻接矩阵就是他的行和列都是点,而点与点有没有连接用对应矩阵的元素表示,1就代表有连接,0就代表没有连接。简单来说邻接矩阵就是描述点与边有无联系的一个矩阵。我们这篇论文用的是无向图,所以它的邻接矩阵是个对称矩阵。如果邻接矩阵的对角线都是0,这说明没有考虑自身节点的特征,只是考虑了边的特征,反之就是考虑了自身节点特征。
举一个例子:

上面是一个简易的人体关节图,是无向图,它的邻接矩阵就是根据各个关节点的连接构造的
我们将标准的邻接矩阵进行求列和计算,继续用上面的例子进行计算,我们可以得到输出是[2.2.5.2.4.2.2] ,然后用每个元素除以所在列的列和,即可得到归一化标准邻接矩阵。


The proposed partitioning strategies for constructing convolution operations. From left to right:(a)An example frameof input skeleton. Body joints are drawn with blue dots. The receptive fields of a filter with D= 1 are drawn with red dashed circles.(b) Uni-labeling partitioning strategy, where all nodes in a neighborhood has the same label (green).(c) Distancepartitioning. The two subsets are the root node itself with distance 0(green) and other neighboring points with distance1.(blue).(d) Spatial configuration partitioning. The nodes are labeled according to their distances to the skeleton gravity center(black cross) compared with that of the root node (green). Centripetal nodes have shorter distances (blue), while centrifugalnodes have longer distances (yellow) than the root node.
a):输入骨骼序列的示意图,红色节点是本次卷积计算的中心节点,红色虚线内蓝色节点为其采样的相邻节点。因为采用D=1,即只考虑1-邻接的节点,D=2,3,...,n留作以后的工作
b):单一划分:把节点的邻域节点全划为一个子集(包括自身)
c):基于距离划分。中心节点自身, 相邻节点为另一组
d):空间配置划分 ,也就是本文所使用的
Spatial configuration partitioning。空间配置划分。由于身体骨架在空间上是局部的,我们仍然可以在划分过程中利用这种特定的空间结构。我们设计了一个策略,将邻居集划分为三个子集:1)根节点本身;2) 向心群:邻近节点比根节点更靠近骨骼重心;3) 离心组。在这里,骨架中所有关节在一个框架上的平均坐标被视为其重心。这个策略的灵感来自这样一个事实:身体部位的运动可以大致分为同心运动和偏心运动。

其中 是邻域邻域 joint 到黑色十字 × 的距离,
为 root joint。ri是训练集中所有帧上从重心到关节 i 的平均距离.
讲一下第三种分区策略的邻接矩阵。同样是以上面的简易关节图为例,以节点5为例说明分区策略。节点5的邻域节点有 3,6,7.
对于分区策略1:单一划分,其实并没有变化。
分区策略2:距离划分。将邻接矩阵分成了2组,一个是只有自身节点的矩阵,另一个是只有相邻节点的矩阵。

分区策略3: 空间配置划分 。 重心点为节点3.
计算节点5与重心点之间距离d=1.节点5与重心点之间距离为1=d,所以5为根节点。 节点6、7与重心点之间距离都是2>d.所以6、7是离心点。节点3与重心点之间距离为0<d ,所以3为向心点。

https://blog.csdn.net/m0_56698268/article/details/123678696
目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标
网站的日志分析,是seo优化不可忽视的一门功课,但网站越大,每天产生的日志就越大,大站一天都可以产生几个G的网站日志,如果光靠肉眼去分析,那可能看到猴年马月都看不完,因此借助网站日志分析工具去分析网站日志,那将会使网站日志分析工作变得更简单。下面推荐两款网站日志分析软件。第一款:逆火网站日志分析器逆火网站日志分析器是一款功能全面的网站服务器日志分析软件。通过分析网站的日志文件,不仅能够精准的知道网站的访问量、网站的访问来源,网站的广告点击,访客的地区统计,搜索引擎关键字查询等,还能够一次性分析多个网站的日志文件,让你轻松管理网站。逆火网站日志分析器下载地址:https://pan.baidu.
一、机器人介绍 此处是基于MATLABRVC工具箱,对ABB-IRB-1200型号的微型机械臂进行正逆向运动学分析,并利Simulink工具实现对机械臂进行具有动力学参数的末端轨迹规划仿真,最后根据机械模型设计Simulink-Adams联合仿真。 图1.ABBIRB 1200尺寸参数示意图ABBIRB 1200提供的两种型号广泛适用于各作业,且两者间零部件通用,两种型号的工作范围分别为700 mm 和 900 mm,大有效负载分别为 7 kg 和5 kg。 IRB 1200 能够在狭小空间内能发挥其工作范围与性能优势,具有全新的设计、小型化的体积、高效的性能、易于集成、便捷的接
目录一.大致如下常见问题:(1)找不到程序所依赖的Qt库version`Qt_5'notfound(requiredby(2)CouldnotLoadtheQtplatformplugin"xcb"in""eventhoughitwasfound(3)打包到在不同的linux系统下,或者打包到高版本的相同系统下,运行程序时,直接提示段错误即segmentationfault,或者Illegalinstruction(coredumped)非法指令(4)ldd应用程序或者库,查看运行所依赖的库时,直接报段错误二.问题逐个分析,得出解决方法:(1)找不到程序所依赖的Qt库version`Qt_5'
我想使用ruby-prof和JMeter分析Rails应用程序。我对分析特定Controller/操作/或模型方法的建议方法不感兴趣,我想分析完整堆栈,从上到下。所以我运行这样的东西:RAILS_ENV=productionruby-prof-fprof.outscript/server>/dev/null然后我在上面运行我的JMeter测试计划。然而,问题是使用CTRL+C或SIGKILL中断它也会在ruby-prof可以写入任何输出之前杀死它。如何在不中断ruby-prof的情况下停止mongrel服务器? 最佳答案
文章目录认识unity打包目录结构游戏逆向流程Unity游戏攻击面可被攻击原因mono的打包建议方案锁血飞天无限金币攻击力翻倍以上统称内存挂透视自瞄压枪瞬移内购破解Unity游戏防御开发时注意数据安全接入第三方反作弊系统外挂检测思路狠人自爆实战查看目录结构用il2cppdumper例子2-森林whoishe后记认识unity打包目录结构dll一般很大,因为里面是所有的游戏功能编译成的二进制码游戏逆向流程开发人员代码被编译打包到GameAssembly.dll中使用il2ppDumper工具,并借助游戏名_Data\il2cpp_data\Metadata\global-metadata.dat
在笔者前面有一篇文章《驱动开发:断链隐藏驱动程序自身》通过摘除驱动的链表实现了断链隐藏自身的目的,但此方法恢复时会触发PG会蓝屏,偶然间在网上找到了一个作者介绍的一种方法,觉得有必要详细分析一下他是如何实现的进程隐藏的,总体来说作者的思路是最终寻找到MiProcessLoaderEntry的入口地址,该函数的作用是将驱动信息加入链表和移除链表,运用这个函数即可动态处理驱动的添加和移除问题。MiProcessLoaderEntry(pDriverObject->DriverSection,1)添加MiProcessLoaderEntry(pDriverObject->DriverSection,
CSDN优秀解读:https://blog.csdn.net/jiaoyangwm/article/details/1266387752021https://arxiv.org/pdf/2103.14259.pdf关键解读在目标检测中标签分配的最新进展主要寻求为每个GT对象独立定义正/负训练样本。在本文中,我们创新性地从全局的角度重新审视标签分配,并提出将分配程序制定为一个最优传输(OT)问题——优化理论中一个被充分研究的课题。具体来说,我们将每个需求方(锚框)和供应商(GT标签)的单位传输成本定义为他们的分类和回归损失加权之和。在公式化后,找到最好的分配方案即为最小传播成本解决最优传输方案,
目录1. 研究范围定义2. 流程中台市场分析3. 厂商评估:微宏科技4. 入选证书 1. 研究范围定义近年来,随着外部市场环境快速变化、客户需求愈发多样,企业逐渐意识到,自身业务需要更加敏捷、高效,具备根据市场需求快速迭代的能力。业务流程的自动化能够帮助企业实现业务的敏捷高效,因此受到越来越多企业的关注。企业的“自动化武器库”品类丰富,包括低/零代码平台、RPA、BPM、AI等。企业可以使用多项自动化工具,但结果往往是各项自动化工具处于各自的“自动化烟囱”之中,仅能实现碎片式自动化。例如,某企业的IT团队可能在使用低代码平台、财务团队可能在使用RPA、呼叫中心则可能在使用聊天机器人。自动
什么是最优雅的做法'string'=>['s','st','str','stri','strin','string']我一直在想一个类轮,但我不能完全做到。欢迎任何解决方案,谢谢。 最佳答案 这个怎么样?s='string'res=s.length.times.map{|len|s[0..len]}res#=>["s","st","str","stri","strin","string"] 关于ruby-'string'到['s','st','str','stri','strin','s