{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/actional-structural-graph-convolutional","title":"Actional-Structural Graph Convolutional Networks for Skeleton-based Action Recognition","arxiv_id":"1904.12659","date":"2019-04-26","proceeding":"CVPR 2019 6","authors":["Maosen Li","Siheng Chen","Xu Chen","Ya zhang","Yan-Feng Wang","Qi Tian"],"abstract":"Action recognition with skeleton data has recently attracted much attention\nin computer vision. Previous studies are mostly based on fixed skeleton graphs,\nonly capturing local physical dependencies among joints, which may miss\nimplicit joint correlations. To capture richer dependencies, we introduce an\nencoder-decoder structure, called A-link inference module, to capture\naction-specific latent dependencies, i.e. actional links, directly from\nactions. We also extend the existing skeleton graphs to represent higher-order\ndependencies, i.e. structural links. Combing the two types of links into a\ngeneralized skeleton graph, we further propose the actional-structural graph\nconvolution network (AS-GCN), which stacks actional-structural graph\nconvolution and temporal convolution as a basic building block, to learn both\nspatial and temporal features for action recognition. A future pose prediction\nhead is added in parallel to the recognition head to help capture more detailed\naction patterns through self-supervision. We validate AS-GCN in action\nrecognition using two skeleton data sets, NTU-RGB+D and Kinetics. The proposed\nAS-GCN achieves consistently large improvement compared to the state-of-the-art\nmethods. As a side product, AS-GCN also shows promising results for future pose\nprediction.","url_abs":"http://arxiv.org/abs/1904.12659v1","url_pdf":"http://arxiv.org/pdf/1904.12659v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"actional-structural-graph-convolutional","repo_url":"https://github.com/limaosen0/AS-GCN","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"BSD-2-Clause"}}],"tasks":[{"task_slug":"action-recognition-in-videos","task_name":"Action Recognition"},{"task_slug":"decoder","task_name":"Decoder"},{"task_slug":"pose-prediction","task_name":"Pose Prediction"},{"task_slug":"skeleton-based-action-recognition","task_name":"Skeleton Based Action Recognition"},{"task_slug":"action-recognition","task_name":"Temporal Action Localization"}],"methods":[{"method_slug":"convolution","method_name":"Convolution"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/skeleton-based-action-recognition-on-kinetics","task":"Skeleton Based Action Recognition","dataset":"Kinetics-Skeleton dataset","model":"AS-GCN","rank_in_archive_order":21,"of":42,"metrics":{"Accuracy":"34.8"},"uses_additional_data":false},{"leaderboard":"/sota/skeleton-based-action-recognition-on-ntu-rgbd","task":"Skeleton Based Action Recognition","dataset":"NTU RGB+D","model":"AS-GCN","rank_in_archive_order":79,"of":135,"metrics":{"Accuracy (CS)":"86.8","Accuracy (CV)":"94.2"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1904.12659","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1904.12659"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/limaosen0/AS-GCN","reach":{"status":"ok","spdx":"BSD-2-Clause"}}],"summary":{"ran":2,"ran_draft_wrong":2,"ran_honours":2,"ran_violates":1,"unverified":11},"by_repo_kind":{"official":{"samples":18,"ran":7,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"8b14974e8aa7320f","entry":"downsample","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"feeder/tools.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/feeder/tools.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"8b14974e8aa7320f"}},{"code_sha256_prefix":"c257ac36cba643a2","entry":"get_hop_distance","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"net/utils/graph.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/net/utils/graph.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"c257ac36cba643a2"}},{"code_sha256_prefix":"47a234b123ed6809","entry":"get_nonzero_std","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"data_gen/ntu_gen_preprocess.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/data_gen/ntu_gen_preprocess.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"47a234b123ed6809"}},{"code_sha256_prefix":"8158f4435afa26b7","entry":"normalize_digraph","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"net/utils/graph.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/net/utils/graph.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"8158f4435afa26b7"}},{"code_sha256_prefix":"f3dfe2628c96a73d","entry":"normalize_undigraph","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"net/utils/graph.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/net/utils/graph.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"f3dfe2628c96a73d"}},{"code_sha256_prefix":"c6381bb48f81a144","entry":"read_skeleton_filter","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"data_gen/ntu_gen_preprocess.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/data_gen/ntu_gen_preprocess.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"c6381bb48f81a144"}},{"code_sha256_prefix":"7e6ab20b3ba9e367","entry":"read_xyz","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"data_gen/ntu_gen_preprocess.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/data_gen/ntu_gen_preprocess.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"7e6ab20b3ba9e367"}},{"code_sha256_prefix":"e1e2226c2351db43","entry":"angle_between","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"data_gen/rotation.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/data_gen/rotation.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"e1e2226c2351db43"}},{"code_sha256_prefix":"6a33418ef40d3c11","entry":"get_offdiag_indices","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"net/utils/adj_learn.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/net/utils/adj_learn.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"6a33418ef40d3c11"}},{"code_sha256_prefix":"5fa7f74d4634a729","entry":"get_offdiag_indices","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"net/utils/utils_adj.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/net/utils/utils_adj.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"5fa7f74d4634a729"}},{"code_sha256_prefix":"99297212116c8e48","entry":"gumbel_softmax","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"net/utils/adj_learn.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/net/utils/adj_learn.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"99297212116c8e48"}},{"code_sha256_prefix":"588710fb10212034","entry":"gumbel_softmax","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"net/utils/utils_adj.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/net/utils/utils_adj.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"588710fb10212034"}},{"code_sha256_prefix":"8c9b61ef46b62157","entry":"mean_subtractor","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"feeder/tools.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/feeder/tools.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"8c9b61ef46b62157"}},{"code_sha256_prefix":"9310c1921882d972","entry":"my_softmax","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"net/utils/adj_learn.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/net/utils/adj_learn.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"9310c1921882d972"}},{"code_sha256_prefix":"6d75c1704d3163ea","entry":"pre_normalization","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"data_gen/preprocess.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/data_gen/preprocess.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"6d75c1704d3163ea"}},{"code_sha256_prefix":"005986a60686cb80","entry":"rotation_matrix","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"data_gen/rotation.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/data_gen/rotation.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"005986a60686cb80"}},{"code_sha256_prefix":"2f7f389f0584c97e","entry":"temporal_slice","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"feeder/tools.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/feeder/tools.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"2f7f389f0584c97e"}},{"code_sha256_prefix":"b43e0bf3e224c756","entry":"unit_vector","repo":"limaosen0/AS-GCN","repo_kind":"official","path":"data_gen/rotation.py","file_url":"https://github.com/limaosen0/AS-GCN/blob/HEAD/data_gen/rotation.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"b43e0bf3e224c756"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}