{"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/distributionally-generative-augmentation-for","title":"Distributionally Generative Augmentation for Fair Facial Attribute Classification","arxiv_id":"2403.06606","date":"2024-03-11","proceeding":"CVPR 2024 1","authors":["Fengda Zhang","Qianpei He","Kun Kuang","Jiashuo Liu","Long Chen","Chao Wu","Jun Xiao","Hanwang Zhang"],"abstract":"Facial Attribute Classification (FAC) holds substantial promise in widespread applications. However, FAC models trained by traditional methodologies can be unfair by exhibiting accuracy inconsistencies across varied data subpopulations. This unfairness is largely attributed to bias in data, where some spurious attributes (e.g., Male) statistically correlate with the target attribute (e.g., Smiling). Most of existing fairness-aware methods rely on the labels of spurious attributes, which may be unavailable in practice. This work proposes a novel, generation-based two-stage framework to train a fair FAC model on biased data without additional annotation. Initially, we identify the potential spurious attributes based on generative models. Notably, it enhances interpretability by explicitly showing the spurious attributes in image space. Following this, for each image, we first edit the spurious attributes with a random degree sampled from a uniform distribution, while keeping target attribute unchanged. Then we train a fair FAC model by fostering model invariance to these augmentation. Extensive experiments on three common datasets demonstrate the effectiveness of our method in promoting fairness in FAC without compromising accuracy. Codes are in https://github.com/heqianpei/DiGA.","url_abs":"https://arxiv.org/abs/2403.06606v2","url_pdf":"https://arxiv.org/pdf/2403.06606v2.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":"distributionally-generative-augmentation-for","repo_url":"https://github.com/heqianpei/diga","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"attribute","task_name":"Attribute"},{"task_slug":"classification-1","task_name":"Classification"},{"task_slug":"facial-attribute-classification","task_name":"Facial Attribute Classification"},{"task_slug":"fairness","task_name":"Fairness"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2403.06606","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2403.06606"}},"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":"deterministic:regex_extraction","url":"https://github.com/heqianpei/DiGA","reach":{"status":"ok"}}],"summary":{"ran":6,"ran_violates":1,"ran_draft_wrong":3,"unverified":1},"by_repo_kind":{"official":{"samples":11,"ran":10,"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":11,"samples":[{"code_sha256_prefix":"50ff2f1fe67f4281","entry":"bayes_neg","repo":"heqianpei/DiGA","repo_kind":"official","path":"BayesClassifier.py","file_url":"https://github.com/heqianpei/DiGA/blob/HEAD/BayesClassifier.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"50ff2f1fe67f4281"}},{"code_sha256_prefix":"9b3d118b4894317f","entry":"bayes_pos","repo":"heqianpei/DiGA","repo_kind":"official","path":"BayesClassifier.py","file_url":"https://github.com/heqianpei/DiGA/blob/HEAD/BayesClassifier.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":"9b3d118b4894317f"}},{"code_sha256_prefix":"1c0f269ae9673b08","entry":"default","repo":"heqianpei/DiGA","repo_kind":"official","path":"BYOL/BYOL.py","file_url":"https://github.com/heqianpei/DiGA/blob/HEAD/BYOL/BYOL.py","link_basis":"plan_row","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1c0f269ae9673b08"}},{"code_sha256_prefix":"29b9a890f149a3a6","entry":"get_keys","repo":"heqianpei/DiGA","repo_kind":"official","path":"models/psp.py","file_url":"https://github.com/heqianpei/DiGA/blob/HEAD/models/psp.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"29b9a890f149a3a6"}},{"code_sha256_prefix":"2df912740aaa5bb5","entry":"get_latent_code","repo":"heqianpei/DiGA","repo_kind":"official","path":"boundary/get_latent_codes.py","file_url":"https://github.com/heqianpei/DiGA/blob/HEAD/boundary/get_latent_codes.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":"2df912740aaa5bb5"}},{"code_sha256_prefix":"c6cacd2f9fa3185e","entry":"get_latents","repo":"heqianpei/DiGA","repo_kind":"official","path":"boundary/get_latent_codes.py","file_url":"https://github.com/heqianpei/DiGA/blob/HEAD/boundary/get_latent_codes.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":"c6cacd2f9fa3185e"}},{"code_sha256_prefix":"f8ef5ca2539fcee5","entry":"get_module_device","repo":"heqianpei/DiGA","repo_kind":"official","path":"BYOL/BYOL.py","file_url":"https://github.com/heqianpei/DiGA/blob/HEAD/BYOL/BYOL.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f8ef5ca2539fcee5"}},{"code_sha256_prefix":"4d741352ba58146a","entry":"get_result","repo":"heqianpei/DiGA","repo_kind":"official","path":"BYOL/train_LC.py","file_url":"https://github.com/heqianpei/DiGA/blob/HEAD/BYOL/train_LC.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":"4d741352ba58146a"}},{"code_sha256_prefix":"00cae89471470576","entry":"loss_fn","repo":"heqianpei/DiGA","repo_kind":"official","path":"BYOL/BYOL.py","file_url":"https://github.com/heqianpei/DiGA/blob/HEAD/BYOL/BYOL.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"00cae89471470576"}},{"code_sha256_prefix":"122622470a5e44e0","entry":"pdf","repo":"heqianpei/DiGA","repo_kind":"official","path":"BayesClassifier.py","file_url":"https://github.com/heqianpei/DiGA/blob/HEAD/BayesClassifier.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"122622470a5e44e0"}},{"code_sha256_prefix":"dc0ca3f84b19d396","entry":"train_model","repo":"heqianpei/DiGA","repo_kind":"official","path":"BYOL/train_LC.py","file_url":"https://github.com/heqianpei/DiGA/blob/HEAD/BYOL/train_LC.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":"dc0ca3f84b19d396"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}