{"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/deepeyes-incentivizing-thinking-with-images","title":"DeepEyes: Incentivizing \"Thinking with Images\" via Reinforcement Learning","arxiv_id":"2505.14362","date":"2025-05-20","proceeding":null,"authors":["Ziwei Zheng","Michael Yang","Jack Hong","Chenxiao Zhao","Guohai Xu","Le Yang","Chao Shen","Xing Yu"],"abstract":"Large Vision-Language Models (VLMs) have shown strong capabilities in multimodal understanding and reasoning, yet they are primarily constrained by text-based reasoning processes. However, achieving seamless integration of visual and textual reasoning which mirrors human cognitive processes remains a significant challenge. In particular, effectively incorporating advanced visual input processing into reasoning mechanisms is still an open question. Thus, in this paper, we explore the interleaved multimodal reasoning paradigm and introduce DeepEyes, a model with \"thinking with images\" capabilities incentivized through end-to-end reinforcement learning without the need for cold-start SFT. Notably, this ability emerges natively within the model itself, leveraging its inherent grounding ability as a tool instead of depending on separate specialized models. Specifically, we propose a tool-use-oriented data selection mechanism and a reward strategy to encourage successful tool-assisted reasoning trajectories. DeepEyes achieves significant performance gains on fine-grained perception and reasoning benchmarks and also demonstrates improvement in grounding, hallucination, and mathematical reasoning tasks. Interestingly, we observe the distinct evolution of tool-calling behavior from initial exploration to efficient and accurate exploitation, and diverse thinking patterns that closely mirror human visual reasoning processes. Code is available at https://github.com/Visual-Agent/DeepEyes.","url_abs":"https://arxiv.org/abs/2505.14362v1","url_pdf":"https://arxiv.org/pdf/2505.14362v1.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":"deepeyes-incentivizing-thinking-with-images","repo_url":"https://github.com/visual-agent/deepeyes","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"hallucination","task_name":"Hallucination"},{"task_slug":"mathematical-reasoning","task_name":"Mathematical Reasoning"},{"task_slug":"multimodal-reasoning","task_name":"Multimodal Reasoning"},{"task_slug":"reinforcement-learning","task_name":"Reinforcement Learning"},{"task_slug":"visual-reasoning","task_name":"Visual Reasoning"},{"task_slug":"reinforcement-learning-2","task_name":"reinforcement-learning"}],"methods":[{"method_slug":"sft","method_name":"SFT"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2505.14362","atlas_url":"https://app.syntology.ai/?focus=2505.14362","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2505.14362"}},"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/visual-agent/deepeyes","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":7,"ran_draft_wrong":2,"ran_honours":1,"ran_fixture":1,"unverified":6},"by_repo_kind":{"official":{"samples":17,"ran":11,"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":"f220595adfc5e83c","entry":"compute_ce_dpo_loss_rm","repo":"visual-agent/deepeyes","repo_kind":"official","path":"recipe/prime/prime_core_algos.py","file_url":"https://github.com/visual-agent/deepeyes/blob/HEAD/recipe/prime/prime_core_algos.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f220595adfc5e83c"}},{"code_sha256_prefix":"4d91e4383716e42c","entry":"compute_detach_dpo_loss_rm","repo":"visual-agent/deepeyes","repo_kind":"official","path":"recipe/prime/prime_core_algos.py","file_url":"https://github.com/visual-agent/deepeyes/blob/HEAD/recipe/prime/prime_core_algos.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":"4d91e4383716e42c"}},{"code_sha256_prefix":"42fa1c710986d2ee","entry":"decode_base64_to_image","repo":"visual-agent/deepeyes","repo_kind":"official","path":"eval/eval_hrbench.py","file_url":"https://github.com/visual-agent/deepeyes/blob/HEAD/eval/eval_hrbench.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"42fa1c710986d2ee"}},{"code_sha256_prefix":"ae6c2bb194221137","entry":"encode_image_to_base64","repo":"visual-agent/deepeyes","repo_kind":"official","path":"eval/eval_hrbench.py","file_url":"https://github.com/visual-agent/deepeyes/blob/HEAD/eval/eval_hrbench.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ae6c2bb194221137"}},{"code_sha256_prefix":"988cae1e62ee4e6e","entry":"encode_pil_image_to_base64","repo":"visual-agent/deepeyes","repo_kind":"official","path":"eval/eval_hrbench.py","file_url":"https://github.com/visual-agent/deepeyes/blob/HEAD/eval/eval_hrbench.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"988cae1e62ee4e6e"}},{"code_sha256_prefix":"69e47c426e8167f5","entry":"encode_pil_image_to_base64","repo":"visual-agent/deepeyes","repo_kind":"official","path":"eval/eval_vstar.py","file_url":"https://github.com/visual-agent/deepeyes/blob/HEAD/eval/eval_vstar.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"69e47c426e8167f5"}},{"code_sha256_prefix":"1b4e5e1a7c7a8eee","entry":"get_prompt","repo":"visual-agent/deepeyes","repo_kind":"official","path":"eval/judge_result.py","file_url":"https://github.com/visual-agent/deepeyes/blob/HEAD/eval/judge_result.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1b4e5e1a7c7a8eee"}},{"code_sha256_prefix":"c30b2a96103abd2c","entry":"reward_func","repo":"visual-agent/deepeyes","repo_kind":"official","path":"recipe/r1/reward_score.py","file_url":"https://github.com/visual-agent/deepeyes/blob/HEAD/recipe/r1/reward_score.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c30b2a96103abd2c"}},{"code_sha256_prefix":"e252767324188623","entry":"round_by_factor","repo":"visual-agent/deepeyes","repo_kind":"official","path":"eval/eval_vstar.py","file_url":"https://github.com/visual-agent/deepeyes/blob/HEAD/eval/eval_vstar.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e252767324188623"}},{"code_sha256_prefix":"21331a58f93375e4","entry":"union_tensor_dict","repo":"visual-agent/deepeyes","repo_kind":"official","path":"verl/protocol.py","file_url":"https://github.com/visual-agent/deepeyes/blob/HEAD/verl/protocol.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"DEP_MISSING","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"21331a58f93375e4"}},{"code_sha256_prefix":"25f0ea3f460f6ce1","entry":"unpad_dataproto","repo":"visual-agent/deepeyes","repo_kind":"official","path":"verl/protocol.py","file_url":"https://github.com/visual-agent/deepeyes/blob/HEAD/verl/protocol.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":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"25f0ea3f460f6ce1"}},{"code_sha256_prefix":"b6512040439cb7a2","entry":"get_custom_reward_fn","repo":"visual-agent/deepeyes","repo_kind":"official","path":"recipe/dapo/src/main_dapo.py","file_url":"https://github.com/visual-agent/deepeyes/blob/HEAD/recipe/dapo/src/main_dapo.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":"b6512040439cb7a2"}},{"code_sha256_prefix":"68aa34a57b353cae","entry":"get_generation_config","repo":"visual-agent/deepeyes","repo_kind":"official","path":"verl/utils/model.py","file_url":"https://github.com/visual-agent/deepeyes/blob/HEAD/verl/utils/model.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":"68aa34a57b353cae"}},{"code_sha256_prefix":"9411d1fb7e4f68e5","entry":"get_huggingface_actor_config","repo":"visual-agent/deepeyes","repo_kind":"official","path":"verl/utils/model.py","file_url":"https://github.com/visual-agent/deepeyes/blob/HEAD/verl/utils/model.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":"9411d1fb7e4f68e5"}},{"code_sha256_prefix":"acf240079d434746","entry":"get_weight_loader","repo":"visual-agent/deepeyes","repo_kind":"official","path":"verl/models/weight_loader_registry.py","file_url":"https://github.com/visual-agent/deepeyes/blob/HEAD/verl/models/weight_loader_registry.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":"acf240079d434746"}},{"code_sha256_prefix":"1008c22d29f85015","entry":"get_weight_saver","repo":"visual-agent/deepeyes","repo_kind":"official","path":"verl/models/weight_loader_registry.py","file_url":"https://github.com/visual-agent/deepeyes/blob/HEAD/verl/models/weight_loader_registry.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":"1008c22d29f85015"}},{"code_sha256_prefix":"3b15e2ac7497c441","entry":"squeeze","repo":"visual-agent/deepeyes","repo_kind":"official","path":"verl/utils/model.py","file_url":"https://github.com/visual-agent/deepeyes/blob/HEAD/verl/utils/model.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":"3b15e2ac7497c441"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}