{"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/a-principled-approach-to-failure-analysis-and","title":"A Principled Approach to Failure Analysis and Model Repairment: Demonstration in Medical Imaging","arxiv_id":"2109.12347","date":"2021-09-25","proceeding":null,"authors":["Thomas Henn","Yasukazu Sakamoto","Clément Jacquet","Shunsuke Yoshizawa","Masamichi Andou","Stephen Tchen","Ryosuke Saga","Hiroyuki Ishihara","Katsuhiko Shimizu","Yingzhen Li","Ryutaro Tanno"],"abstract":"Machine learning models commonly exhibit unexpected failures post-deployment due to either data shifts or uncommon situations in the training environment. Domain experts typically go through the tedious process of inspecting the failure cases manually, identifying failure modes and then attempting to fix the model. In this work, we aim to standardise and bring principles to this process through answering two critical questions: (i) how do we know that we have identified meaningful and distinct failure types?; (ii) how can we validate that a model has, indeed, been repaired? We suggest that the quality of the identified failure types can be validated through measuring the intra- and inter-type generalisation after fine-tuning and introduce metrics to compare different subtyping methods. Furthermore, we argue that a model can be considered repaired if it achieves high accuracy on the failure types while retaining performance on the previously correct data. We combine these two ideas into a principled framework for evaluating the quality of both the identified failure subtypes and model repairment. We evaluate its utility on a classification and an object detection tasks. Our code is available at https://github.com/Rokken-lab6/Failure-Analysis-and-Model-Repairment","url_abs":"https://arxiv.org/abs/2109.12347v1","url_pdf":"https://arxiv.org/pdf/2109.12347v1.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":"a-principled-approach-to-failure-analysis-and","repo_url":"https://github.com/Rokken-lab6/Failure-Analysis-and-Model-Repairment","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"object-detection","task_name":"Object Detection"},{"task_slug":"object-detection-1","task_name":"object-detection"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2109.12347","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2109.12347"}},"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/Rokken-lab6/Failure-Analysis-and-Model-Repairment","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":9},"by_repo_kind":{"official":{"samples":9,"ran":0,"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":"eef521946c2bdf94","entry":"compute_generalizability_score","repo":"Rokken-lab6/Failure-Analysis-and-Model-Repairment","repo_kind":"official","path":"model_repair/tasks/compute_cluster_metrics_bounded.py","file_url":"https://github.com/Rokken-lab6/Failure-Analysis-and-Model-Repairment/blob/HEAD/model_repair/tasks/compute_cluster_metrics_bounded.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":"eef521946c2bdf94"}},{"code_sha256_prefix":"077a5f705ad200dc","entry":"compute_inter_metric","repo":"Rokken-lab6/Failure-Analysis-and-Model-Repairment","repo_kind":"official","path":"model_repair/tasks/compute_cluster_metrics_bounded.py","file_url":"https://github.com/Rokken-lab6/Failure-Analysis-and-Model-Repairment/blob/HEAD/model_repair/tasks/compute_cluster_metrics_bounded.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":"077a5f705ad200dc"}},{"code_sha256_prefix":"bcea2dec08574dd1","entry":"compute_intra_metrics","repo":"Rokken-lab6/Failure-Analysis-and-Model-Repairment","repo_kind":"official","path":"model_repair/tasks/compute_cluster_metrics_bounded.py","file_url":"https://github.com/Rokken-lab6/Failure-Analysis-and-Model-Repairment/blob/HEAD/model_repair/tasks/compute_cluster_metrics_bounded.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":"bcea2dec08574dd1"}},{"code_sha256_prefix":"9d586db1c3b89519","entry":"do_clustering","repo":"Rokken-lab6/Failure-Analysis-and-Model-Repairment","repo_kind":"official","path":"model_repair/tasks/cluster.py","file_url":"https://github.com/Rokken-lab6/Failure-Analysis-and-Model-Repairment/blob/HEAD/model_repair/tasks/cluster.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":"9d586db1c3b89519"}},{"code_sha256_prefix":"7a7cc54579861c0a","entry":"get_all_grads","repo":"Rokken-lab6/Failure-Analysis-and-Model-Repairment","repo_kind":"official","path":"model_repair/tasks/extract_checkpoint.py","file_url":"https://github.com/Rokken-lab6/Failure-Analysis-and-Model-Repairment/blob/HEAD/model_repair/tasks/extract_checkpoint.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":"7a7cc54579861c0a"}},{"code_sha256_prefix":"88b9adf1c13fa3c4","entry":"get_data","repo":"Rokken-lab6/Failure-Analysis-and-Model-Repairment","repo_kind":"official","path":"model_repair/tasks/embed.py","file_url":"https://github.com/Rokken-lab6/Failure-Analysis-and-Model-Repairment/blob/HEAD/model_repair/tasks/embed.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":"88b9adf1c13fa3c4"}},{"code_sha256_prefix":"627f97ec7477a29c","entry":"get_info_df","repo":"Rokken-lab6/Failure-Analysis-and-Model-Repairment","repo_kind":"official","path":"model_repair/tasks/finetune_on_cluster_ewc.py","file_url":"https://github.com/Rokken-lab6/Failure-Analysis-and-Model-Repairment/blob/HEAD/model_repair/tasks/finetune_on_cluster_ewc.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":"627f97ec7477a29c"}},{"code_sha256_prefix":"97c8df471f827a3c","entry":"get_n_levels","repo":"Rokken-lab6/Failure-Analysis-and-Model-Repairment","repo_kind":"official","path":"model_repair/tasks/embed.py","file_url":"https://github.com/Rokken-lab6/Failure-Analysis-and-Model-Repairment/blob/HEAD/model_repair/tasks/embed.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":"97c8df471f827a3c"}},{"code_sha256_prefix":"84276219016f75da","entry":"make_layers","repo":"Rokken-lab6/Failure-Analysis-and-Model-Repairment","repo_kind":"official","path":"model/model_vgg.py","file_url":"https://github.com/Rokken-lab6/Failure-Analysis-and-Model-Repairment/blob/HEAD/model/model_vgg.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":"84276219016f75da"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}