{"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/videollama-3-frontier-multimodal-foundation","title":"VideoLLaMA 3: Frontier Multimodal Foundation Models for Image and Video Understanding","arxiv_id":"2501.13106","date":"2025-01-22","proceeding":null,"authors":["Boqiang Zhang","Kehan Li","Zesen Cheng","Zhiqiang Hu","Yuqian Yuan","Guanzheng Chen","Sicong Leng","Yuming Jiang","Hang Zhang","Xin Li","Peng Jin","Wenqi Zhang","Fan Wang","Lidong Bing","Deli Zhao"],"abstract":"In this paper, we propose VideoLLaMA3, a more advanced multimodal foundation model for image and video understanding. The core design philosophy of VideoLLaMA3 is vision-centric. The meaning of \"vision-centric\" is two-fold: the vision-centric training paradigm and vision-centric framework design. The key insight of our vision-centric training paradigm is that high-quality image-text data is crucial for both image and video understanding. Instead of preparing massive video-text datasets, we focus on constructing large-scale and high-quality image-text datasets. VideoLLaMA3 has four training stages: 1) Vision Encoder Adaptation, which enables vision encoder to accept images of variable resolutions as input; 2) Vision-Language Alignment, which jointly tunes the vision encoder, projector, and LLM with large-scale image-text data covering multiple types (including scene images, documents, charts) as well as text-only data. 3) Multi-task Fine-tuning, which incorporates image-text SFT data for downstream tasks and video-text data to establish a foundation for video understanding. 4) Video-centric Fine-tuning, which further improves the model's capability in video understanding. As for the framework design, to better capture fine-grained details in images, the pretrained vision encoder is adapted to encode images of varying sizes into vision tokens with corresponding numbers, rather than a fixed number of tokens. For video inputs, we reduce the number of vision tokens according to their similarity so that the representation of videos will be more precise and compact. Benefit from vision-centric designs, VideoLLaMA3 achieves compelling performances in both image and video understanding benchmarks.","url_abs":"https://arxiv.org/abs/2501.13106v3","url_pdf":"https://arxiv.org/pdf/2501.13106v3.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":"videollama-3-frontier-multimodal-foundation","repo_url":"https://github.com/damo-nlp-sg/videollama3","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"philosophy","task_name":"Philosophy"},{"task_slug":"video-question-answering","task_name":"Video Question Answering"},{"task_slug":"video-understanding","task_name":"Video Understanding"}],"methods":[{"method_slug":"focus","method_name":"Focus"},{"method_slug":"sft","method_name":"SFT"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/video-question-answering-on-next-qa","task":"Video Question Answering","dataset":"NExT-QA","model":"VideoLLaMA3(7B)","rank_in_archive_order":3,"of":47,"metrics":{"Accuracy":"84.5"},"uses_additional_data":false}],"syntology":{"syntology_url":"https://syntology.ai/paper/2501.13106","atlas_url":"https://app.syntology.ai/?focus=2501.13106","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2501.13106"}},"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/damo-nlp-sg/videollama3","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_draft_wrong":5,"ran":1,"unverified":8},"by_repo_kind":{"official":{"samples":14,"ran":6,"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":"d62ac690ebadd7fa","entry":"build_mlp","repo":"damo-nlp-sg/videollama3","repo_kind":"official","path":"inference/transformers_api/modeling_videollama3.py","file_url":"https://github.com/damo-nlp-sg/videollama3/blob/HEAD/inference/transformers_api/modeling_videollama3.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":"d62ac690ebadd7fa"}},{"code_sha256_prefix":"8409d5a94c95a154","entry":"build_vision_projector","repo":"damo-nlp-sg/videollama3","repo_kind":"official","path":"inference/transformers_api/modeling_videollama3.py","file_url":"https://github.com/damo-nlp-sg/videollama3/blob/HEAD/inference/transformers_api/modeling_videollama3.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":"8409d5a94c95a154"}},{"code_sha256_prefix":"592b3c1a88f93d7c","entry":"expand2square","repo":"damo-nlp-sg/videollama3","repo_kind":"official","path":"videollama3/mm_utils.py","file_url":"https://github.com/damo-nlp-sg/videollama3/blob/HEAD/videollama3/mm_utils.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"592b3c1a88f93d7c"}},{"code_sha256_prefix":"d8e25fe3aa75d2ce","entry":"load_mm_projector","repo":"damo-nlp-sg/videollama3","repo_kind":"official","path":"videollama3/model/projector.py","file_url":"https://github.com/damo-nlp-sg/videollama3/blob/HEAD/videollama3/model/projector.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":"d8e25fe3aa75d2ce"}},{"code_sha256_prefix":"04129d1d261c322a","entry":"parse_snapshot_folder","repo":"damo-nlp-sg/videollama3","repo_kind":"official","path":"videollama3/model/projector.py","file_url":"https://github.com/damo-nlp-sg/videollama3/blob/HEAD/videollama3/model/projector.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"04129d1d261c322a"}},{"code_sha256_prefix":"b99eea6376d1e212","entry":"rotate_half","repo":"damo-nlp-sg/videollama3","repo_kind":"official","path":"inference/transformers_api/modeling_videollama3_encoder.py","file_url":"https://github.com/damo-nlp-sg/videollama3/blob/HEAD/inference/transformers_api/modeling_videollama3_encoder.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b99eea6376d1e212"}},{"code_sha256_prefix":"48f12d3a9c4a15e8","entry":"apply_rotary_pos_emb_vision","repo":"damo-nlp-sg/videollama3","repo_kind":"official","path":"inference/transformers_api/modeling_videollama3_encoder.py","file_url":"https://github.com/damo-nlp-sg/videollama3/blob/HEAD/inference/transformers_api/modeling_videollama3_encoder.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":"48f12d3a9c4a15e8"}},{"code_sha256_prefix":"771a5c9570d61ca3","entry":"build_vision_encoder","repo":"damo-nlp-sg/videollama3","repo_kind":"official","path":"videollama3/model/encoder.py","file_url":"https://github.com/damo-nlp-sg/videollama3/blob/HEAD/videollama3/model/encoder.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":"771a5c9570d61ca3"}},{"code_sha256_prefix":"a8b8b3e9a82ab02e","entry":"chunk_list","repo":"damo-nlp-sg/videollama3","repo_kind":"official","path":"videollama3/mm_utils.py","file_url":"https://github.com/damo-nlp-sg/videollama3/blob/HEAD/videollama3/mm_utils.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":"a8b8b3e9a82ab02e"}},{"code_sha256_prefix":"14fb23ef45b146d1","entry":"get_mm_adapter_state_maybe_zero_3","repo":"damo-nlp-sg/videollama3","repo_kind":"official","path":"videollama3/videollama3_trainer.py","file_url":"https://github.com/damo-nlp-sg/videollama3/blob/HEAD/videollama3/videollama3_trainer.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":"14fb23ef45b146d1"}},{"code_sha256_prefix":"fa1225dfac92bc0d","entry":"get_peft_state_maybe_zero_3","repo":"damo-nlp-sg/videollama3","repo_kind":"official","path":"videollama3/videollama3_trainer.py","file_url":"https://github.com/damo-nlp-sg/videollama3/blob/HEAD/videollama3/videollama3_trainer.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":"fa1225dfac92bc0d"}},{"code_sha256_prefix":"0dde2e782959c0bd","entry":"load_image_from_base64","repo":"damo-nlp-sg/videollama3","repo_kind":"official","path":"videollama3/mm_utils.py","file_url":"https://github.com/damo-nlp-sg/videollama3/blob/HEAD/videollama3/mm_utils.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":"0dde2e782959c0bd"}},{"code_sha256_prefix":"616ffbdc154ed2d8","entry":"maybe_zero_3","repo":"damo-nlp-sg/videollama3","repo_kind":"official","path":"videollama3/videollama3_trainer.py","file_url":"https://github.com/damo-nlp-sg/videollama3/blob/HEAD/videollama3/videollama3_trainer.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":"616ffbdc154ed2d8"}},{"code_sha256_prefix":"285dd14346d5d119","entry":"spatial_downsampling","repo":"damo-nlp-sg/videollama3","repo_kind":"official","path":"videollama3/model/videollama3_arch.py","file_url":"https://github.com/damo-nlp-sg/videollama3/blob/HEAD/videollama3/model/videollama3_arch.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":"285dd14346d5d119"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}