{"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/agentic-keyframe-search-for-video-question","title":"Agentic Keyframe Search for Video Question Answering","arxiv_id":"2503.16032","date":"2025-03-20","proceeding":null,"authors":["Sunqi Fan","Meng-Hao Guo","Shuojin Yang"],"abstract":"Video question answering (VideoQA) enables machines to extract and comprehend key information from videos through natural language interaction, which is a critical step towards achieving intelligence. However, the demand for a thorough understanding of videos and high computational costs still limit the widespread applications of VideoQA. To address it, we propose Agentic Keyframe Search (AKeyS), a simple yet powerful algorithm for identifying keyframes in the VideoQA task. It can effectively distinguish key information from redundant, irrelevant content by leveraging modern language agents to direct classical search algorithms. Specifically, we first segment the video and organize it as a tree structure. Then, AKeyS uses a language agent to estimate heuristics and movement costs while dynamically expanding nodes. Finally, the agent determines if sufficient keyframes have been collected based on termination conditions and provides answers. Extensive experiments on the EgoSchema and NExT-QA datasets show that AKeyS outperforms all previous methods with the highest keyframe searching efficiency, which means it can accurately identify key information and conduct effective visual reasoning with minimal computational overhead. For example, on the EgoSchema subset, it achieves 1.8% higher accuracy while processing only 43.5% of the frames compared to VideoTree. We believe that AKeyS represents a significant step towards building intelligent agents for video understanding. The code is publicly available at https://github.com/fansunqi/AKeyS.","url_abs":"https://arxiv.org/abs/2503.16032v1","url_pdf":"https://arxiv.org/pdf/2503.16032v1.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":"agentic-keyframe-search-for-video-question","repo_url":"https://github.com/fansunqi/akeys","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":null,"task_name":"EgoSchema"},{"task_slug":"question-answering","task_name":"Question Answering"},{"task_slug":"video-question-answering","task_name":"Video Question Answering"},{"task_slug":"video-understanding","task_name":"Video Understanding"},{"task_slug":"visual-reasoning","task_name":"Visual Reasoning"},{"task_slug":"zeroshot-video-question-answer","task_name":"Zero-Shot Video Question Answer"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/zero-shot-video-question-answer-on-next-qa","task":"Zero-Shot Video Question Answer","dataset":"NExT-QA","model":"AKEYS","rank_in_archive_order":3,"of":27,"metrics":{"Accuracy":"78.1"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2503.16032","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2503.16032"}},"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":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/fansunqi/akeys","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":3,"unverified":5},"by_repo_kind":{"official":{"samples":8,"ran":3,"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":"036725c05a3d96f8","entry":"identity","repo":"fansunqi/akeys","repo_kind":"official","path":"model.py","file_url":"https://github.com/fansunqi/akeys/blob/HEAD/model.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":"036725c05a3d96f8"}},{"code_sha256_prefix":"658682feda4928a2","entry":"load_json","repo":"fansunqi/akeys","repo_kind":"official","path":"util.py","file_url":"https://github.com/fansunqi/akeys/blob/HEAD/util.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":"658682feda4928a2"}},{"code_sha256_prefix":"8080055de6293a6b","entry":"load_pkl","repo":"fansunqi/akeys","repo_kind":"official","path":"util.py","file_url":"https://github.com/fansunqi/akeys/blob/HEAD/util.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":"8080055de6293a6b"}},{"code_sha256_prefix":"ad128b0e378edd25","entry":"get_video_filenames","repo":"fansunqi/akeys","repo_kind":"official","path":"util.py","file_url":"https://github.com/fansunqi/akeys/blob/HEAD/util.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":"ad128b0e378edd25"}},{"code_sha256_prefix":"4d8d4f2f6a658e84","entry":"postprocess_response_dict","repo":"fansunqi/akeys","repo_kind":"official","path":"summarizer.py","file_url":"https://github.com/fansunqi/akeys/blob/HEAD/summarizer.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":"4d8d4f2f6a658e84"}},{"code_sha256_prefix":"ca69974dd31afab3","entry":"replace_extension_with_png","repo":"fansunqi/akeys","repo_kind":"official","path":"analyze_results.py","file_url":"https://github.com/fansunqi/akeys/blob/HEAD/analyze_results.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":"ca69974dd31afab3"}},{"code_sha256_prefix":"7d9027e01b5d0aeb","entry":"split_and_reconnect_segments","repo":"fansunqi/akeys","repo_kind":"official","path":"video_seg.py","file_url":"https://github.com/fansunqi/akeys/blob/HEAD/video_seg.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":"7d9027e01b5d0aeb"}},{"code_sha256_prefix":"f4a376f891cfd3ee","entry":"summarize_one_video","repo":"fansunqi/akeys","repo_kind":"official","path":"summarizer.py","file_url":"https://github.com/fansunqi/akeys/blob/HEAD/summarizer.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":"f4a376f891cfd3ee"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}