{"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/dynamic-token-pruning-in-plain-vision","title":"Dynamic Token Pruning in Plain Vision Transformers for Semantic Segmentation","arxiv_id":"2308.01045","date":"2023-08-02","proceeding":"ICCV 2023 1","authors":["Quan Tang","BoWen Zhang","Jiajun Liu","Fagui Liu","Yifan Liu"],"abstract":"Vision transformers have achieved leading performance on various visual tasks yet still suffer from high computational complexity. The situation deteriorates in dense prediction tasks like semantic segmentation, as high-resolution inputs and outputs usually imply more tokens involved in computations. Directly removing the less attentive tokens has been discussed for the image classification task but can not be extended to semantic segmentation since a dense prediction is required for every patch. To this end, this work introduces a Dynamic Token Pruning (DToP) method based on the early exit of tokens for semantic segmentation. Motivated by the coarse-to-fine segmentation process by humans, we naturally split the widely adopted auxiliary-loss-based network architecture into several stages, where each auxiliary block grades every token's difficulty level. We can finalize the prediction of easy tokens in advance without completing the entire forward pass. Moreover, we keep $k$ highest confidence tokens for each semantic category to uphold the representative context information. Thus, computational complexity will change with the difficulty of the input, akin to the way humans do segmentation. Experiments suggest that the proposed DToP architecture reduces on average $20\\% - 35\\%$ of computational cost for current semantic segmentation methods based on plain vision transformers without accuracy degradation.","url_abs":"https://arxiv.org/abs/2308.01045v2","url_pdf":"https://arxiv.org/pdf/2308.01045v2.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":"dynamic-token-pruning-in-plain-vision","repo_url":"https://github.com/zbwxp/Dynamic-Token-Pruning","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"BSD-2-Clause"}}],"tasks":[{"task_slug":"image-classification","task_name":"Image Classification"},{"task_slug":"segmentation","task_name":"Segmentation"},{"task_slug":"semantic-segmentation","task_name":"Semantic Segmentation"},{"task_slug":"image-classification","task_name":"image-classification"}],"methods":[{"method_slug":"pruning","method_name":"Pruning"},{"method_slug":null,"method_name":"Uphold"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2308.01045","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2308.01045"}},"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/zbwxp/Dynamic-Token-Pruning","reach":{"status":"ok","spdx":"BSD-2-Clause"}}],"summary":{"ran":2,"unverified":2},"by_repo_kind":{"listed":{"samples":4,"ran":2,"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":"016dba4163da28df","entry":"dice_loss","repo":"zbwxp/Dynamic-Token-Pruning","repo_kind":"listed","path":"mmseg_custom/loss/criterion.py","file_url":"https://github.com/zbwxp/Dynamic-Token-Pruning/blob/HEAD/mmseg_custom/loss/criterion.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":"016dba4163da28df"}},{"code_sha256_prefix":"c411a442f6b2dd1e","entry":"trunc_normal_","repo":"zbwxp/Dynamic-Token-Pruning","repo_kind":"listed","path":"mmseg_custom/utils.py","file_url":"https://github.com/zbwxp/Dynamic-Token-Pruning/blob/HEAD/mmseg_custom/utils.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":"c411a442f6b2dd1e"}},{"code_sha256_prefix":"58cc9ff3bf75e753","entry":"nested_tensor_from_tensor_list","repo":"zbwxp/Dynamic-Token-Pruning","repo_kind":"listed","path":"mmseg_custom/loss/misc.py","file_url":"https://github.com/zbwxp/Dynamic-Token-Pruning/blob/HEAD/mmseg_custom/loss/misc.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":"58cc9ff3bf75e753"}},{"code_sha256_prefix":"71e149dc0c33b040","entry":"sigmoid_focal_loss","repo":"zbwxp/Dynamic-Token-Pruning","repo_kind":"listed","path":"mmseg_custom/loss/criterion.py","file_url":"https://github.com/zbwxp/Dynamic-Token-Pruning/blob/HEAD/mmseg_custom/loss/criterion.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":"71e149dc0c33b040"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}