{"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/2505-11049","title":"GuardReasoner-VL: Safeguarding VLMs via Reinforced Reasoning","arxiv_id":"2505.11049","date":"2025-05-16","proceeding":null,"authors":["Yue Liu","Shengfang Zhai","Mingzhe Du","Yulin Chen","Tri Cao","Hongcheng Gao","Cheng Wang","Xinfeng Li","Kun Wang","Junfeng Fang","Jiaheng Zhang","Bryan Hooi"],"abstract":"To enhance the safety of VLMs, this paper introduces a novel reasoning-based VLM guard model dubbed GuardReasoner-VL. The core idea is to incentivize the guard model to deliberatively reason before making moderation decisions via online RL. First, we construct GuardReasoner-VLTrain, a reasoning corpus with 123K samples and 631K reasoning steps, spanning text, image, and text-image inputs. Then, based on it, we cold-start our model's reasoning ability via SFT. In addition, we further enhance reasoning regarding moderation through online RL. Concretely, to enhance diversity and difficulty of samples, we conduct rejection sampling followed by data augmentation via the proposed safety-aware data concatenation. Besides, we use a dynamic clipping parameter to encourage exploration in early stages and exploitation in later stages. To balance performance and token efficiency, we design a length-aware safety reward that integrates accuracy, format, and token cost. Extensive experiments demonstrate the superiority of our model. Remarkably, it surpasses the runner-up by 19.27% F1 score on average. We release data, code, and models (3B/7B) of GuardReasoner-VL at https://github.com/yueliu1999/GuardReasoner-VL/","url_abs":"https://arxiv.org/abs/2505.11049v1","url_pdf":"https://arxiv.org/pdf/2505.11049v1.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":"2505-11049","repo_url":"https://github.com/yueliu1999/guardreasoner-vl","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"data-augmentation","task_name":"Data Augmentation"}],"methods":[{"method_slug":"sft","method_name":"SFT"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2505.11049","atlas_url":"https://app.syntology.ai/?focus=2505.11049","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2505.11049"}},"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/yueliu1999/guardreasoner-vl","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":8,"unverified":4},"by_repo_kind":{"official":{"samples":12,"ran":8,"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":"d4fcebcf31275298","entry":"cal_weighted_f1","repo":"yueliu1999/guardreasoner-vl","repo_kind":"official","path":"evaluate.py","file_url":"https://github.com/yueliu1999/guardreasoner-vl/blob/HEAD/evaluate.py","link_basis":"harvester_set","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":"d4fcebcf31275298"}},{"code_sha256_prefix":"e12b5e0633d1b0a3","entry":"compute_gae_advantage_return","repo":"yueliu1999/guardreasoner-vl","repo_kind":"official","path":"train/EasyR1/verl/trainer/core_algos.py","file_url":"https://github.com/yueliu1999/guardreasoner-vl/blob/HEAD/train/EasyR1/verl/trainer/core_algos.py","link_basis":"harvester_set","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":"e12b5e0633d1b0a3"}},{"code_sha256_prefix":"e82f29866d9b24d6","entry":"concat_text","repo":"yueliu1999/guardreasoner-vl","repo_kind":"official","path":"train/data_augmentation.py","file_url":"https://github.com/yueliu1999/guardreasoner-vl/blob/HEAD/train/data_augmentation.py","link_basis":"harvester_set","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":"e82f29866d9b24d6"}},{"code_sha256_prefix":"b5973cf2aefac349","entry":"get_kl_controller","repo":"yueliu1999/guardreasoner-vl","repo_kind":"official","path":"train/EasyR1/verl/trainer/core_algos.py","file_url":"https://github.com/yueliu1999/guardreasoner-vl/blob/HEAD/train/EasyR1/verl/trainer/core_algos.py","link_basis":"harvester_set","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":"b5973cf2aefac349"}},{"code_sha256_prefix":"d797f71ea34bc6e9","entry":"prompt_gt_mix","repo":"yueliu1999/guardreasoner-vl","repo_kind":"official","path":"train/data_augmentation.py","file_url":"https://github.com/yueliu1999/guardreasoner-vl/blob/HEAD/train/data_augmentation.py","link_basis":"harvester_set","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":"d797f71ea34bc6e9"}},{"code_sha256_prefix":"d0231286cb1e3033","entry":"res_gt_mix","repo":"yueliu1999/guardreasoner-vl","repo_kind":"official","path":"train/data_augmentation.py","file_url":"https://github.com/yueliu1999/guardreasoner-vl/blob/HEAD/train/data_augmentation.py","link_basis":"harvester_set","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":"d0231286cb1e3033"}},{"code_sha256_prefix":"a940cd1fa5eb303c","entry":"reverse","repo":"yueliu1999/guardreasoner-vl","repo_kind":"official","path":"evaluate.py","file_url":"https://github.com/yueliu1999/guardreasoner-vl/blob/HEAD/evaluate.py","link_basis":"harvester_set","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":"a940cd1fa5eb303c"}},{"code_sha256_prefix":"a91c18341292d50e","entry":"unpad_dataproto","repo":"yueliu1999/guardreasoner-vl","repo_kind":"official","path":"train/EasyR1/verl/protocol.py","file_url":"https://github.com/yueliu1999/guardreasoner-vl/blob/HEAD/train/EasyR1/verl/protocol.py","link_basis":"harvester_set","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":"a91c18341292d50e"}},{"code_sha256_prefix":"2f407d7f61063ffb","entry":"cal_f1","repo":"yueliu1999/guardreasoner-vl","repo_kind":"official","path":"evaluate.py","file_url":"https://github.com/yueliu1999/guardreasoner-vl/blob/HEAD/evaluate.py","link_basis":"harvester_set","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":"2f407d7f61063ffb"}},{"code_sha256_prefix":"dc62e3047c2f6e56","entry":"compute_grpo_outcome_advantage","repo":"yueliu1999/guardreasoner-vl","repo_kind":"official","path":"train/EasyR1/verl/trainer/core_algos.py","file_url":"https://github.com/yueliu1999/guardreasoner-vl/blob/HEAD/train/EasyR1/verl/trainer/core_algos.py","link_basis":"harvester_set","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":"dc62e3047c2f6e56"}},{"code_sha256_prefix":"2604e5877f8242b0","entry":"pad_dataproto_to_divisor","repo":"yueliu1999/guardreasoner-vl","repo_kind":"official","path":"train/EasyR1/verl/protocol.py","file_url":"https://github.com/yueliu1999/guardreasoner-vl/blob/HEAD/train/EasyR1/verl/protocol.py","link_basis":"harvester_set","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":"2604e5877f8242b0"}},{"code_sha256_prefix":"ad658a1d6fe829ba","entry":"union_tensor_dict","repo":"yueliu1999/guardreasoner-vl","repo_kind":"official","path":"train/EasyR1/verl/protocol.py","file_url":"https://github.com/yueliu1999/guardreasoner-vl/blob/HEAD/train/EasyR1/verl/protocol.py","link_basis":"harvester_set","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":"ad658a1d6fe829ba"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}