ST-GCN:骨骼動作識別的圖卷積神經網絡

一、ST-GCN簡介

ST-GCN(Spatial Temporal Graph Convolutional Network)是一種基於圖卷積神經網絡的動作分類算法,能夠對通過骨骼傳感器採集到的人體運動數據進行分類。ST-GCN的核心思想是將骨骼序列建模為圖結構,並且在這個圖結構上進行卷積操作,從而捕捉時間和空間的相關性。這個算法的出現,極大地提高了人體運動的識別精度。

ST-GCN最早由瑞士蘇黎世聯邦理工學院(ETH Zurich)的譚依桐(Yitong Tang)團隊在2017年的論文《2s-AGCN: Two-Stream Adaptive Graph Convolutional Networks for Skeleton-Based Action Recognition》中提出。該論文提出了一種雙流ST-GCN模型,能夠更好地處理不同動作的分佈差異性。

二、ST-GCN的核心思想

ST-GCN的最大特點是使用圖卷積神經網絡(GCN)對骨骼序列進行分類,通過空間和時間上的變化來預測不同動作。因此,ST-GCN面臨的主要問題是如何構建一個能夠很好地反映空間和時間相關性的圖形結構。

在構建圖形結構之前,需要確定關節數量。ST-GCN使用的是C3D網絡方法,對每個關節進行自我的建模,這使得ST-GCN在保持運動數據連續性的同時,能夠在不同動作的起點和停止點之間更精確地建立聯繫。

接下來,需要對每個關節之間的關係進行建模,ST-GCN使用骨骼連接結構來表示骨骼間的關係,從而構建圖形結構。在這個骨骼連接結構中,每個骨骼都被視為一個節點,並通過邊相互連接。這裡需要注意的是,邊的長度在不同場景中是不同的,因此ST-GCN使用了一種自適應空間關係的方法,通過將邊的時間信息考慮在內來捕捉不同場景中的空間相關性。

三、ST-GCN的網絡架構

import torch.nn as nn
import torch.nn.functional as F
from st_gcn import st_gcn, st_gcn_3d
from functools import partial
    
class Model(nn.Module):
    def __init__(self, graph_args, in_channels, num_classes):
        super(Model, self).__init__()
        self.graph = graph_args
        self.data_bn = nn.BatchNorm1d(in_channels * self.graph['num_nodes'])
        self.layer1 = self._make_layer(1, 64, 1)
        self.layer2 = self._make_layer(64, 64, 1)
        self.layer3 = self._make_layer(64, 64, 1)
        self.layer4 = self._make_layer(64, 128, 2)
        self.layer5 = self._make_layer(128, 128, 1)
        self.layer6 = self._make_layer(128, 128, 1)
        self.layer7 = self._make_layer(128, 256, 2)
        self.layer8 = self._make_layer(256, 256, 1)
        self.layer9 = self._make_layer(256, 256, 1)
        self.fc = nn.Linear(256, num_classes)
        self.dropout = nn.Dropout(p=0.5)

    def _make_layer(self, in_channels, out_channels, stride):
        layer = []

        layer.append(st_gcn_3d(in_channels, out_channels, self.graph, stride=stride))
        layer.append(nn.BatchNorm2d(out_channels))
        layer.append(nn.ReLU())
        layer.append(st_gcn_3d(out_channels, out_channels, self.graph, stride=1))
        layer.append(nn.BatchNorm2d(out_channels))
        layer.append(nn.ReLU())

        return nn.Sequential(*layer)

    def forward(self, x):
        N, C, T, V, M = x.size()
        x = x.permute(0, 4, 3, 1, 2).contiguous()
        x = x.view(N * M, V * C, T)
        x = self.data_bn(x)
        x = x.view(N * M, C, V, T)
        x = x.permute(0, 3, 2, 1).contiguous()
        x = self.layer1(x)
        x = self.layer2(x)
        x = self.layer3(x)
        x = self.layer4(x)
        x = self.layer5(x)
        x = self.layer6(x)
        x = self.layer7(x)
        x = self.layer8(x)
        x = self.layer9(x)
        x = F.avg_pool2d(x, x.size()[2:])
        x = x.view(N, M, -1)
        ## Different pooling method according to taget task definition
        x = torch.mean(x, dim=1)
        x = self.dropout(x)
        x = self.fc(x)

        return x

上述代碼為雙流ST-GCN的實現。首先,我們定義了一個圖形結構,並在構建模型時使用它。接下來,我們定義了一系列卷積層,這些卷積層對空間和時間上相關性進行建模。最後,我們使用全局平均池化層和全連接層對特徵進行分類。

四、應用場景

ST-GCN的應用場景主要涉及人體運動數據的分類,例如動作識別等。除此之外,ST-GCN還可以應用到一些需要分類的動態圖像數據上,例如手語識別等。

在工業應用方面,ST-GCN可以被應用到健康監測領域。通過安裝骨骼連接傳感器,ST-GCN可以對人體運動情況進行實時監測,預測並識別出一些不利於健康的運動行為,幫助人們更好地做出生活和運動上的決策。

五、總結

ST-GCN在動作分類領域取得了非常好的表現,成為目前最常用的骨骼動作識別算法之一。它的核心思想是通過構建圖形結構,捕捉運動數據中的時間和空間相關性。ST-GCN的應用範圍很廣,對人體健康的監測也有很多潛在可行性。未來,ST-GCN還有許多可以改進的方向,例如優化圖形結構、改進模型可解釋性等。

原創文章,作者:WKKDC,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/371106.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
WKKDC的頭像WKKDC
上一篇 2025-04-23 00:48
下一篇 2025-04-23 00:48

相關推薦

  • 神經網絡BP算法原理

    本文將從多個方面對神經網絡BP算法原理進行詳細闡述,並給出完整的代碼示例。 一、BP算法簡介 BP算法是一種常用的神經網絡訓練算法,其全稱為反向傳播算法。BP算法的基本思想是通過正…

    編程 2025-04-29
  • Python實現BP神經網絡預測模型

    BP神經網絡在許多領域都有着廣泛的應用,如數據挖掘、預測分析等等。而Python的科學計算庫和機器學習庫也提供了很多的方法來實現BP神經網絡的構建和使用,本篇文章將詳細介紹在Pyt…

    編程 2025-04-28
  • 遺傳算法優化神經網絡ppt

    本文將從多個方面對遺傳算法優化神經網絡ppt進行詳細闡述,並給出對應的代碼示例。 一、遺傳算法介紹 遺傳算法(Genetic Algorithm,GA)是一種基於遺傳規律進行優化搜…

    編程 2025-04-27
  • ABCNet_v2——優秀的神經網絡模型

    ABCNet_v2是一個出色的神經網絡模型,它可以高效地完成許多複雜的任務,包括圖像識別、語言處理和機器翻譯等。它的性能比許多常規模型更加優越,已經被廣泛地應用於各種領域。 一、結…

    編程 2025-04-27
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • UE4骨骼重定向:全面解析

    骨骼重定向是遊戲開發中一個非常重要的功能,尤其是在角色動畫方面。在UE4中,使用骨骼重定向可以實現不同角色之間共用同一套動畫,減少重複勞動,提高開發效率。本篇文章將詳細闡述UE4中…

    編程 2025-04-25
  • 深入理解ANN人工神經網絡

    一、什麼是ANN人工神經網絡 ANN人工神經網絡(Artificial Neural Network)是一種模擬人類神經網絡行為和功能的數學模型。它是一個由多個神經元相互連接組成的…

    編程 2025-04-25
  • 神經網絡量化

    一、什麼是神經網絡量化? 神經網絡量化是指對神經網絡中的權重和激活函數進行壓縮和量化,使得神經網絡模型在保證較高精度的前提下,減小計算量和模型大小的方法。量化可以在不影響模型性能的…

    編程 2025-04-24
  • 亞像素卷積詳解

    一、亞像素卷積的基本概念 亞像素卷積是一種計算機視覺領域的技術,是用於圖像縮放的重要方法。圖像縮放的目的是將一個圖像的大小調整為另一個尺寸,從而使其在不同環境下更適合使用。亞像素卷…

    編程 2025-04-23
  • 脈衝神經網絡

    脈衝神經網絡(Spiking Neural Network, SNN)是模擬生物神經系統的一種計算模型。相較於其他神經網絡模型,SNN最為貼近神經元的生理結構與生物功能,以脈衝為信…

    編程 2025-04-23

發表回復

登錄後才能評論