{"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/grad-cam-improved-visual-explanations-for","title":"Grad-CAM++: Improved Visual Explanations for Deep Convolutional Networks","arxiv_id":"1710.11063","date":"2017-10-30","proceeding":null,"authors":["Aditya Chattopadhyay","Anirban Sarkar","Prantik Howlader","Vineeth N. Balasubramanian"],"abstract":"Over the last decade, Convolutional Neural Network (CNN) models have been\nhighly successful in solving complex vision problems. However, these deep\nmodels are perceived as \"black box\" methods considering the lack of\nunderstanding of their internal functioning. There has been a significant\nrecent interest in developing explainable deep learning models, and this paper\nis an effort in this direction. Building on a recently proposed method called\nGrad-CAM, we propose a generalized method called Grad-CAM++ that can provide\nbetter visual explanations of CNN model predictions, in terms of better object\nlocalization as well as explaining occurrences of multiple object instances in\na single image, when compared to state-of-the-art. We provide a mathematical\nderivation for the proposed method, which uses a weighted combination of the\npositive partial derivatives of the last convolutional layer feature maps with\nrespect to a specific class score as weights to generate a visual explanation\nfor the corresponding class label. Our extensive experiments and evaluations,\nboth subjective and objective, on standard datasets showed that Grad-CAM++\nprovides promising human-interpretable visual explanations for a given CNN\narchitecture across multiple tasks including classification, image caption\ngeneration and 3D action recognition; as well as in new settings such as\nknowledge distillation.","url_abs":"http://arxiv.org/abs/1710.11063v3","url_pdf":"http://arxiv.org/pdf/1710.11063v3.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":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/adityac94/Grad_CAM_plus_plus","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/Ecgbert/Grad_CAM_PLUS_PLUS","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/FelixMQuintana/Deep-Vasp-E","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/HollrayChan/gradcam-plus-plus","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/eknim/gradcamplusplus","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/fcUalberta/UAlberta-Multimedia-Masters-Program-Interpretable-AI-Part_1_2","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/frgfm/torch-cam","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/ftorres11/saliencysense","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/jacobgil/pytorch-grad-cam","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/lisssse14/Grad_CAM_PLUS_PLUS","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/pasrichashivam/Convnets_Grad-CAM_Grad-CAM-PlusPlus_Keras_tensorflow-2","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/samson6460/tf-keras-gradcamplusplus","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/samson6460/tf.keras-gradcamplusplus","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/samson6460/tf_keras_gradcamplusplus","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/shashidhar100/Comparison-of-gradcam-and-gradcam_plus_plus_keras","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/sicara/tf-explain","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/totti0223/gradcamplusplus","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/tristangomez44/metrics-saliency-maps","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/v1an1/gradcamplusplus-cats-v-dogs","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/vcowwy/paddle-grad-cam","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"paddle","reach":{"status":"ok"}},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/yiskw713/ClassActivationMapping","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/yiskw713/SmoothGradCAMplusplus","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/yiskw713/scorecam","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"grad-cam-improved-visual-explanations-for","repo_url":"https://github.com/yunqing-me/attackvlm","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"3d-human-action-recognition","task_name":"3D Action Recognition"},{"task_slug":"action-recognition-in-videos","task_name":"Action Recognition"},{"task_slug":"caption-generation","task_name":"Caption Generation"},{"task_slug":"error-understanding","task_name":"Error Understanding"},{"task_slug":"knowledge-distillation","task_name":"Knowledge Distillation"},{"task_slug":"object-localization","task_name":"Object Localization"},{"task_slug":"action-recognition","task_name":"Temporal Action Localization"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/error-understanding-on-cub-200-2011-1","task":"Error Understanding","dataset":"CUB-200-2011","model":"Grad-CAM++","rank_in_archive_order":2,"of":4,"metrics":{"Average highest confidence (EfficientNetV2-M)":"0.2659","Average highest confidence (MobileNetV2)":"0.3462","Average highest confidence (ResNet-101)":"0.2647","Insertion AUC score (EfficientNetV2-M)":"0.1605","Insertion AUC score (MobileNetV2)":"0.1284","Insertion AUC score (ResNet-101)":"0.1094"},"uses_additional_data":false},{"leaderboard":"/sota/error-understanding-on-cub-200-2011-resnet","task":"Error Understanding","dataset":"CUB-200-2011 (ResNet-101)","model":"Grad-CAM++","rank_in_archive_order":1,"of":3,"metrics":{"Average highest confidence":"0.2647","Insertion AUC score":"0.1094"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1710.11063","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1710.11063"}},"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/jacobgil/pytorch-grad-cam","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/adityac94/Grad_CAM_plus_plus","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/sicara/tf-explain","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/lisssse14/Grad_CAM_PLUS_PLUS","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Ecgbert/Grad_CAM_PLUS_PLUS","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/totti0223/gradcamplusplus","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/frgfm/torch-cam","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/tristangomez44/metrics-saliency-maps","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/shashidhar100/Comparison-of-gradcam-and-gradcam_plus_plus_keras","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yunqing-me/attackvlm","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/fcUalberta/UAlberta-Multimedia-Masters-Program-Interpretable-AI-Part_1_2","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/FelixMQuintana/Deep-Vasp-E","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/vcowwy/paddle-grad-cam","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yiskw713/SmoothGradCAMplusplus","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/samson6460/tf.keras-gradcamplusplus","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/eknim/gradcamplusplus","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/samson6460/tf_keras_gradcamplusplus","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/v1an1/gradcamplusplus-cats-v-dogs","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/samson6460/tf-keras-gradcamplusplus","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yiskw713/ClassActivationMapping","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yiskw713/scorecam","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/HollrayChan/gradcam-plus-plus","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/pasrichashivam/Convnets_Grad-CAM_Grad-CAM-PlusPlus_Keras_tensorflow-2","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ftorres11/saliencysense","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_draft_wrong":3,"ran_fixture":1,"unverified":3},"by_repo_kind":{"listed":{"samples":5,"ran":2,"repositories":2}},"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":3,"samples":[{"code_sha256_prefix":"c30f68b12bf6fb11","entry":"extract_feature_without_fliphor","repo":"HollrayChan/gradcam-plus-plus","repo_kind":"listed","path":"main_gradcam.py","file_url":"https://github.com/HollrayChan/gradcam-plus-plus/blob/HEAD/main_gradcam.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c30f68b12bf6fb11"}},{"code_sha256_prefix":"5b31bf1776aa901d","entry":"grad_cam","repo":"samson6460/tf.keras-gradcamplusplus","repo_kind":"listed","path":"gradcam.py","file_url":"https://github.com/samson6460/tf.keras-gradcamplusplus/blob/HEAD/gradcam.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5b31bf1776aa901d"}},{"code_sha256_prefix":"cd9e431963bd28ca","entry":"swin_reshape_transform","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"cd9e431963bd28ca"}},{"code_sha256_prefix":"3e3e7c2d436361ca","entry":"vit_reshape_transform","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"3e3e7c2d436361ca"}},{"code_sha256_prefix":"5bcbc2252f5d8000","entry":"grad_cam_plus","repo":"samson6460/tf.keras-gradcamplusplus","repo_kind":"listed","path":"gradcam.py","file_url":"https://github.com/samson6460/tf.keras-gradcamplusplus/blob/HEAD/gradcam.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":"5bcbc2252f5d8000"}},{"code_sha256_prefix":"c0284e95304e29bf","entry":"preprocess_image","repo":"samson6460/tf.keras-gradcamplusplus","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/samson6460/tf.keras-gradcamplusplus/blob/HEAD/utils.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":"c0284e95304e29bf"}},{"code_sha256_prefix":"abec4075f19dd646","entry":"show_imgwithheat","repo":"samson6460/tf.keras-gradcamplusplus","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/samson6460/tf.keras-gradcamplusplus/blob/HEAD/utils.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":"abec4075f19dd646"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}