{"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/step-catformer-spatial-temporal-effective","title":"STEP CATFormer: Spatial-Temporal Effective Body-Part Cross Attention Transformer for Skeleton-based Action Recognition","arxiv_id":"2312.03288","date":"2023-12-06","proceeding":null,"authors":["Nguyen Huu Bao Long"],"abstract":"Graph convolutional networks (GCNs) have been widely used and achieved remarkable results in skeleton-based action recognition. We think the key to skeleton-based action recognition is a skeleton hanging in frames, so we focus on how the Graph Convolutional Convolution networks learn different topologies and effectively aggregate joint features in the global temporal and local temporal. In this work, we propose three Channel-wise Tolopogy Graph Convolution based on Channel-wise Topology Refinement Graph Convolution (CTR-GCN). Combining CTR-GCN with two joint cross-attention modules can capture the upper-lower body part and hand-foot relationship skeleton features. After that, to capture features of human skeletons changing in frames we design the Temporal Attention Transformers to extract skeletons effectively. The Temporal Attention Transformers can learn the temporal features of human skeleton sequences. Finally, we fuse the temporal features output scale with MLP and classification. We develop a powerful graph convolutional network named Spatial Temporal Effective Body-part Cross Attention Transformer which notably high-performance on the NTU RGB+D, NTU RGB+D 120 datasets. Our code and models are available at https://github.com/maclong01/STEP-CATFormer","url_abs":"https://arxiv.org/abs/2312.03288v1","url_pdf":"https://arxiv.org/pdf/2312.03288v1.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":"step-catformer-spatial-temporal-effective","repo_url":"https://github.com/maclong01/STEP-CATFormer","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"action-recognition-in-videos","task_name":"Action Recognition"},{"task_slug":"skeleton-based-action-recognition","task_name":"Skeleton Based Action Recognition"}],"methods":[{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"focus","method_name":"Focus"},{"method_slug":"transformer","method_name":"Transformer"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/skeleton-based-action-recognition-on-ntu-rgbd","task":"Skeleton Based Action Recognition","dataset":"NTU RGB+D","model":"STEP-CATFormer","rank_in_archive_order":16,"of":135,"metrics":{"Accuracy (CS)":"93.2","Accuracy (CV)":"97.3","Ensembled Modalities":"4"},"uses_additional_data":true},{"leaderboard":"/sota/skeleton-based-action-recognition-on-ntu-rgbd-1","task":"Skeleton Based Action Recognition","dataset":"NTU RGB+D 120","model":"STEP-CATFormer","rank_in_archive_order":11,"of":83,"metrics":{"Accuracy (Cross-Setup)":"91.2","Accuracy (Cross-Subject)":"90.0","Ensembled Modalities":"4"},"uses_additional_data":true}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2312.03288","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2312.03288"}},"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/maclong01/STEP-CATFormer","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_honours":1,"ran_draft_wrong":6,"ran":1,"ran_violates":2,"unverified":3},"by_repo_kind":{"official":{"samples":13,"ran":10,"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":"616b5e82dd2a38f9","entry":"count_params","repo":"maclong01/STEP-CATFormer","repo_kind":"official","path":"utils.py","file_url":"https://github.com/maclong01/STEP-CATFormer/blob/HEAD/utils.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":2,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"616b5e82dd2a38f9"}},{"code_sha256_prefix":"5426f077b824bbb4","entry":"activation_factory","repo":"maclong01/STEP-CATFormer","repo_kind":"official","path":"model/activation.py","file_url":"https://github.com/maclong01/STEP-CATFormer/blob/HEAD/model/activation.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":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5426f077b824bbb4"}},{"code_sha256_prefix":"98f385d847636a3e","entry":"basic_clean","repo":"maclong01/STEP-CATFormer","repo_kind":"official","path":"clip/simple_tokenizer.py","file_url":"https://github.com/maclong01/STEP-CATFormer/blob/HEAD/clip/simple_tokenizer.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"98f385d847636a3e"}},{"code_sha256_prefix":"9ec19e473ca8e62e","entry":"gen_label","repo":"maclong01/STEP-CATFormer","repo_kind":"official","path":"tools.py","file_url":"https://github.com/maclong01/STEP-CATFormer/blob/HEAD/tools.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9ec19e473ca8e62e"}},{"code_sha256_prefix":"d919ae32e5e4e616","entry":"get_pairs","repo":"maclong01/STEP-CATFormer","repo_kind":"official","path":"clip/simple_tokenizer.py","file_url":"https://github.com/maclong01/STEP-CATFormer/blob/HEAD/clip/simple_tokenizer.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d919ae32e5e4e616"}},{"code_sha256_prefix":"ffed4f85d50832c9","entry":"import_class","repo":"maclong01/STEP-CATFormer","repo_kind":"official","path":"model/baseline.py","file_url":"https://github.com/maclong01/STEP-CATFormer/blob/HEAD/model/baseline.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ffed4f85d50832c9"}},{"code_sha256_prefix":"4e946d7c92be9d41","entry":"import_class","repo":"maclong01/STEP-CATFormer","repo_kind":"official","path":"main_multipart_ntu.py","file_url":"https://github.com/maclong01/STEP-CATFormer/blob/HEAD/main_multipart_ntu.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":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4e946d7c92be9d41"}},{"code_sha256_prefix":"f017532fc389cbfe","entry":"str2bool","repo":"maclong01/STEP-CATFormer","repo_kind":"official","path":"utils.py","file_url":"https://github.com/maclong01/STEP-CATFormer/blob/HEAD/utils.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f017532fc389cbfe"}},{"code_sha256_prefix":"a957019ca36a6747","entry":"str2bool","repo":"maclong01/STEP-CATFormer","repo_kind":"official","path":"main_multipart_ntu.py","file_url":"https://github.com/maclong01/STEP-CATFormer/blob/HEAD/main_multipart_ntu.py","link_basis":"plan_row","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a957019ca36a6747"}},{"code_sha256_prefix":"9542161e9640b858","entry":"whitespace_clean","repo":"maclong01/STEP-CATFormer","repo_kind":"official","path":"clip/simple_tokenizer.py","file_url":"https://github.com/maclong01/STEP-CATFormer/blob/HEAD/clip/simple_tokenizer.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9542161e9640b858"}},{"code_sha256_prefix":"13c6de98a5cc764e","entry":"build_model","repo":"maclong01/STEP-CATFormer","repo_kind":"official","path":"clip/model.py","file_url":"https://github.com/maclong01/STEP-CATFormer/blob/HEAD/clip/model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"13c6de98a5cc764e"}},{"code_sha256_prefix":"cad29a7a417c68d3","entry":"create_logits","repo":"maclong01/STEP-CATFormer","repo_kind":"official","path":"tools.py","file_url":"https://github.com/maclong01/STEP-CATFormer/blob/HEAD/tools.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"cad29a7a417c68d3"}},{"code_sha256_prefix":"b91b981015bbf498","entry":"load","repo":"maclong01/STEP-CATFormer","repo_kind":"official","path":"clip/clip.py","file_url":"https://github.com/maclong01/STEP-CATFormer/blob/HEAD/clip/clip.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b91b981015bbf498"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}