{"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/phg-net-persistent-homology-guided-medical","title":"PHG-Net: Persistent Homology Guided Medical Image Classification","arxiv_id":"2311.17243","date":"2023-11-28","proceeding":null,"authors":["Yaopeng Peng","Hongxiao Wang","Milan Sonka","Danny Z. Chen"],"abstract":"Modern deep neural networks have achieved great successes in medical image analysis. However, the features captured by convolutional neural networks (CNNs) or Transformers tend to be optimized for pixel intensities and neglect key anatomical structures such as connected components and loops. In this paper, we propose a persistent homology guided approach (PHG-Net) that explores topological features of objects for medical image classification. For an input image, we first compute its cubical persistence diagram and extract topological features into a vector representation using a small neural network (called the PH module). The extracted topological features are then incorporated into the feature map generated by CNN or Transformer for feature fusion. The PH module is lightweight and capable of integrating topological features into any CNN or Transformer architectures in an end-to-end fashion. We evaluate our PHG-Net on three public datasets and demonstrate its considerable improvements on the target classification tasks over state-of-the-art methods.","url_abs":"https://arxiv.org/abs/2311.17243v1","url_pdf":"https://arxiv.org/pdf/2311.17243v1.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":"phg-net-persistent-homology-guided-medical","repo_url":"https://github.com/yaoppeng/topoclassification","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"classification-1","task_name":"Classification"},{"task_slug":"image-classification","task_name":"Image Classification"},{"task_slug":"medical-image-analysis","task_name":"Medical Image Analysis"},{"task_slug":"medical-image-classification","task_name":"Medical Image Classification"},{"task_slug":"image-classification","task_name":"image-classification"}],"methods":[{"method_slug":"absolute-position-encodings","method_name":"Absolute Position Encodings"},{"method_slug":"adam","method_name":"Adam"},{"method_slug":"attention","method_name":"Attention"},{"method_slug":"bpe","method_name":"BPE"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"dropout","method_name":"Dropout"},{"method_slug":"label-smoothing","method_name":"Label Smoothing"},{"method_slug":"layer-normalization","method_name":"Layer Normalization"},{"method_slug":"linear-layer","method_name":"Linear Layer"},{"method_slug":"multi-head-attention","method_name":"Multi-Head Attention"},{"method_slug":"position-wise-feed-forward-layer","method_name":"Position-Wise Feed-Forward Layer"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"transformer","method_name":"Transformer"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2311.17243","atlas_url":"https://app.syntology.ai/?focus=2311.17243","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2311.17243"}},"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/yaoppeng/topoclassification","reach":{"status":"ok"}}],"summary":{"ran_violates":1,"ran_honours":2,"ran":1,"unverified":5},"by_repo_kind":{"official":{"samples":9,"ran":4,"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":9,"samples":[{"code_sha256_prefix":"c0a5cd5e8d1e1870","entry":"create_mask","repo":"yaoppeng/topoclassification","repo_kind":"official","path":"models/swin_transformer.py","file_url":"https://github.com/yaoppeng/topoclassification/blob/HEAD/models/swin_transformer.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c0a5cd5e8d1e1870"}},{"code_sha256_prefix":"ea931f8eaca3c48c","entry":"get_relative_distances","repo":"yaoppeng/topoclassification","repo_kind":"official","path":"models/swin_transformer.py","file_url":"https://github.com/yaoppeng/topoclassification/blob/HEAD/models/swin_transformer.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ea931f8eaca3c48c"}},{"code_sha256_prefix":"4783fbece52f500e","entry":"pc_normalize","repo":"yaoppeng/topoclassification","repo_kind":"official","path":"dataset/pd_utils.py","file_url":"https://github.com/yaoppeng/topoclassification/blob/HEAD/dataset/pd_utils.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4783fbece52f500e"}},{"code_sha256_prefix":"b2a5be8a58a8e8c8","entry":"process_pd","repo":"yaoppeng/topoclassification","repo_kind":"official","path":"dataset/pd_utils.py","file_url":"https://github.com/yaoppeng/topoclassification/blob/HEAD/dataset/pd_utils.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":"b2a5be8a58a8e8c8"}},{"code_sha256_prefix":"af107b37def4cf67","entry":"conv1d","repo":"yaoppeng/topoclassification","repo_kind":"official","path":"models/pointnet/layers_tf.py","file_url":"https://github.com/yaoppeng/topoclassification/blob/HEAD/models/pointnet/layers_tf.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"af107b37def4cf67"}},{"code_sha256_prefix":"fa235afda89234e6","entry":"conv2d","repo":"yaoppeng/topoclassification","repo_kind":"official","path":"models/pointnet/layers_tf.py","file_url":"https://github.com/yaoppeng/topoclassification/blob/HEAD/models/pointnet/layers_tf.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fa235afda89234e6"}},{"code_sha256_prefix":"9ba01df4045b7ebb","entry":"conv2d_transpose","repo":"yaoppeng/topoclassification","repo_kind":"official","path":"models/pointnet/layers_tf.py","file_url":"https://github.com/yaoppeng/topoclassification/blob/HEAD/models/pointnet/layers_tf.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9ba01df4045b7ebb"}},{"code_sha256_prefix":"aa294f8cd9093d1f","entry":"shifted_window_attention","repo":"yaoppeng/topoclassification","repo_kind":"official","path":"models/swin_utils.py","file_url":"https://github.com/yaoppeng/topoclassification/blob/HEAD/models/swin_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"aa294f8cd9093d1f"}},{"code_sha256_prefix":"516538f47edf5014","entry":"swin_t","repo":"yaoppeng/topoclassification","repo_kind":"official","path":"models/swin_transformer.py","file_url":"https://github.com/yaoppeng/topoclassification/blob/HEAD/models/swin_transformer.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"516538f47edf5014"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}