{"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/involution-inverting-the-inherence-of","title":"Involution: Inverting the Inherence of Convolution for Visual Recognition","arxiv_id":"2103.06255","date":"2021-03-10","proceeding":"CVPR 2021 1","authors":["Duo Li","Jie Hu","Changhu Wang","Xiangtai Li","Qi She","Lei Zhu","Tong Zhang","Qifeng Chen"],"abstract":"Convolution has been the core ingredient of modern neural networks, triggering the surge of deep learning in vision. In this work, we rethink the inherent principles of standard convolution for vision tasks, specifically spatial-agnostic and channel-specific. Instead, we present a novel atomic operation for deep neural networks by inverting the aforementioned design principles of convolution, coined as involution. We additionally demystify the recent popular self-attention operator and subsume it into our involution family as an over-complicated instantiation. The proposed involution operator could be leveraged as fundamental bricks to build the new generation of neural networks for visual recognition, powering different deep learning models on several prevalent benchmarks, including ImageNet classification, COCO detection and segmentation, together with Cityscapes segmentation. Our involution-based models improve the performance of convolutional baselines using ResNet-50 by up to 1.6% top-1 accuracy, 2.5% and 2.4% bounding box AP, and 4.7% mean IoU absolutely while compressing the computational cost to 66%, 65%, 72%, and 57% on the above benchmarks, respectively. Code and pre-trained models for all the tasks are available at https://github.com/d-li14/involution.","url_abs":"https://arxiv.org/abs/2103.06255v2","url_pdf":"https://arxiv.org/pdf/2103.06255v2.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":"involution-inverting-the-inherence-of","repo_url":"https://github.com/d-li14/involution","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"unanswered"}},{"paper_slug":"involution-inverting-the-inherence-of","repo_url":"https://github.com/ChristophReich1996/Involution","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"involution-inverting-the-inherence-of","repo_url":"https://github.com/PrivateMaRyan/keras-involution2D","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"unanswered"}},{"paper_slug":"involution-inverting-the-inherence-of","repo_url":"https://github.com/PrivateMaRyan/keras-involution2Ds","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"involution-inverting-the-inherence-of","repo_url":"https://github.com/YashovardhanSrivastava19/Inv_Conv_Model","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"involution-inverting-the-inherence-of","repo_url":"https://github.com/YirunKCL/Tensorflow-Keras-Involution2D","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"involution-inverting-the-inherence-of","repo_url":"https://github.com/ariG23498/involution-tf","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"unanswered"}},{"paper_slug":"involution-inverting-the-inherence-of","repo_url":"https://github.com/justanhduc/involution","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"unanswered"}},{"paper_slug":"involution-inverting-the-inherence-of","repo_url":"https://github.com/shikishima-TasakiLab/Involution-PyTorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"involution-inverting-the-inherence-of","repo_url":"https://github.com/shuuchen/involution.pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"involution-inverting-the-inherence-of","repo_url":"https://github.com/PaddlePaddle/PaddleClas","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"paddle","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"involution-inverting-the-inherence-of","repo_url":"https://github.com/mindspore-courses/External-Attention-MindSpore/blob/main/model/conv/Involution.py","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"mindspore","reach":null},{"paper_slug":"involution-inverting-the-inherence-of","repo_url":"https://github.com/xmu-xiaoma666/External-Attention-pytorch/blob/master/conv/Involution.py","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"image-classification","task_name":"Image Classification"}],"methods":[{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"involution","method_name":"Involution"}],"datasets_introduced":[],"methods_introduced":[{"slug":"involution","name":"Involution","full_name":"Involution"}],"results":[{"leaderboard":"/sota/image-classification-on-imagenet","task":"Image Classification","dataset":"ImageNet","model":"RedNet-152","rank_in_archive_order":766,"of":1060,"metrics":{"GFLOPs":"6.8","Number of params":"34M","Top 1 Accuracy":"79.3%"},"uses_additional_data":false},{"leaderboard":"/sota/image-classification-on-imagenet","task":"Image Classification","dataset":"ImageNet","model":"RedNet-101","rank_in_archive_order":784,"of":1060,"metrics":{"GFLOPs":"4.7","Number of params":"25.6M","Top 1 Accuracy":"79.1%"},"uses_additional_data":false},{"leaderboard":"/sota/image-classification-on-imagenet","task":"Image Classification","dataset":"ImageNet","model":"RedNet-50","rank_in_archive_order":838,"of":1060,"metrics":{"GFLOPs":"2.7","Number of params":"15.5M","Top 1 Accuracy":"78.4%"},"uses_additional_data":false},{"leaderboard":"/sota/image-classification-on-imagenet","task":"Image Classification","dataset":"ImageNet","model":"RedNet-38","rank_in_archive_order":869,"of":1060,"metrics":{"GFLOPs":"2.2","Number of params":"12.4M","Top 1 Accuracy":"77.6%"},"uses_additional_data":false},{"leaderboard":"/sota/image-classification-on-imagenet","task":"Image Classification","dataset":"ImageNet","model":"RedNet-26","rank_in_archive_order":933,"of":1060,"metrics":{"GFLOPs":"1.7","Number of params":"9.2M","Top 1 Accuracy":"75.9%"},"uses_additional_data":false}],"syntology":{"syntology_url":"https://syntology.ai/paper/2103.06255","atlas_url":"https://app.syntology.ai/?focus=2103.06255","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2103.06255"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/PrivateMaRyan/keras-involution2D","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/xmu-xiaoma666/External-Attention-pytorch/blob/master/conv/Involution.py","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ChristophReich1996/Involution","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/YashovardhanSrivastava19/Inv_Conv_Model","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/PaddlePaddle/PaddleClas","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/shuuchen/involution.pytorch","reach":null},{"provenance":"deterministic:regex_extraction","url":"https://github.com/d-li14/involution","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/shikishima-TasakiLab/Involution-PyTorch","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/PrivateMaRyan/keras-involution2Ds","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/YirunKCL/Tensorflow-Keras-Involution2D","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/justanhduc/involution","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ariG23498/involution-tf","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/mindspore-courses/External-Attention-MindSpore/blob/main/model/conv/Involution.py","reach":null}],"summary":{"ran":7,"unverified":2},"by_repo_kind":{"listed":{"samples":9,"ran":7,"repositories":7}},"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":4,"samples":[{"code_sha256_prefix":"2ab588f06b5fcaf4","entry":"Involution","repo":"shuuchen/involution.pytorch","repo_kind":"listed","path":"involution.py","file_url":"https://github.com/shuuchen/involution.pytorch/blob/HEAD/involution.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2ab588f06b5fcaf4"}},{"code_sha256_prefix":"7d4e496bf8ce2354","entry":"Involution","repo":"xmu-xiaoma666/External-Attention-pytorch","repo_kind":"listed","path":"model/conv/Involution.py","file_url":"https://github.com/xmu-xiaoma666/External-Attention-pytorch/blob/HEAD/model/conv/Involution.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7d4e496bf8ce2354"}},{"code_sha256_prefix":"fab2bfdc9b7802ab","entry":"Involution2D","repo":"YirunKCL/Tensorflow-Keras-Involution2D","repo_kind":"listed","path":"involution2d.py","file_url":"https://github.com/YirunKCL/Tensorflow-Keras-Involution2D/blob/HEAD/involution2d.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fab2bfdc9b7802ab"}},{"code_sha256_prefix":"b4e4c359cd255f73","entry":"Involution2D","repo":"PrivateMaRyan/keras-involution2Ds","repo_kind":"listed","path":"Involution2D.py","file_url":"https://github.com/PrivateMaRyan/keras-involution2Ds/blob/HEAD/Involution2D.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b4e4c359cd255f73"}},{"code_sha256_prefix":"56639e9724c537c5","entry":"Involution2d","repo":"ChristophReich1996/Involution","repo_kind":"listed","path":"involution/involution.py","file_url":"https://github.com/ChristophReich1996/Involution/blob/HEAD/involution/involution.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"56639e9724c537c5"}},{"code_sha256_prefix":"0fddcb87a4ff3ec5","entry":"Involution2d","repo":"shikishima-TasakiLab/Involution-PyTorch","repo_kind":"listed","path":"involution/involution2d.py","file_url":"https://github.com/shikishima-TasakiLab/Involution-PyTorch/blob/HEAD/involution/involution2d.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"0fddcb87a4ff3ec5"}},{"code_sha256_prefix":"c541633190c973cd","entry":"InvolutionLayer","repo":"YashovardhanSrivastava19/Inv_Conv_Model","repo_kind":"listed","path":"InConvModel.py","file_url":"https://github.com/YashovardhanSrivastava19/Inv_Conv_Model/blob/HEAD/InConvModel.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c541633190c973cd"}},{"code_sha256_prefix":"53278de7fe970d81","entry":"Configuration","repo":"YashovardhanSrivastava19/Inv_Conv_Model","repo_kind":"listed","path":"InConvModel.py","file_url":"https://github.com/YashovardhanSrivastava19/Inv_Conv_Model/blob/HEAD/InConvModel.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"53278de7fe970d81"}},{"code_sha256_prefix":"15063abf3990f72c","entry":"_involution2d","repo":"shikishima-TasakiLab/Involution-PyTorch","repo_kind":"listed","path":"involution/involution2d.py","file_url":"https://github.com/shikishima-TasakiLab/Involution-PyTorch/blob/HEAD/involution/involution2d.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"15063abf3990f72c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}