{"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/a-distractor-aware-memory-for-visual-object","title":"A Distractor-Aware Memory for Visual Object Tracking with SAM2","arxiv_id":"2411.17576","date":"2024-11-26","proceeding":"CVPR 2025 1","authors":["Jovana Videnovic","Alan Lukezic","Matej Kristan"],"abstract":"Memory-based trackers are video object segmentation methods that form the target model by concatenating recently tracked frames into a memory buffer and localize the target by attending the current image to the buffered frames. While already achieving top performance on many benchmarks, it was the recent release of SAM2 that placed memory-based trackers into focus of the visual object tracking community. Nevertheless, modern trackers still struggle in the presence of distractors. We argue that a more sophisticated memory model is required, and propose a new distractor-aware memory model for SAM2 and an introspection-based update strategy that jointly addresses the segmentation accuracy as well as tracking robustness. The resulting tracker is denoted as SAM2.1++. We also propose a new distractor-distilled DiDi dataset to study the distractor problem better. SAM2.1++ outperforms SAM2.1 and related SAM memory extensions on seven benchmarks and sets a solid new state-of-the-art on six of them.","url_abs":"https://arxiv.org/abs/2411.17576v2","url_pdf":"https://arxiv.org/pdf/2411.17576v2.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":"a-distractor-aware-memory-for-visual-object","repo_url":"https://github.com/jovanavidenovic/dam4sam","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"object-tracking","task_name":"Object Tracking"},{"task_slug":"semi-supervised-video-object-segmentation","task_name":"Semi-Supervised Video Object Segmentation"},{"task_slug":"visual-object-tracking","task_name":"Visual Object Tracking"},{"task_slug":"visual-tracking","task_name":"Visual Tracking"}],"methods":[{"method_slug":"focus","method_name":"Focus"},{"method_slug":"sam","method_name":"SAM"}],"datasets_introduced":[{"slug":"didi","name":"DiDi","full_name":"Distractor Distilled Dataset"}],"methods_introduced":[],"results":[{"leaderboard":"/sota/semi-supervised-video-object-segmentation-on-15","task":"Semi-Supervised Video Object Segmentation","dataset":"VOT2020","model":"DAM4SAM","rank_in_archive_order":1,"of":20,"metrics":{"EAO":"0.729"},"uses_additional_data":false},{"leaderboard":"/sota/visual-object-tracking-on-didi","task":"Visual Object Tracking","dataset":"DiDi","model":"DAM4SAM","rank_in_archive_order":1,"of":11,"metrics":{"Tracking quality":"0.694"},"uses_additional_data":false},{"leaderboard":"/sota/visual-object-tracking-on-got-10k","task":"Visual Object Tracking","dataset":"GOT-10k","model":"DAM4SAM","rank_in_archive_order":2,"of":42,"metrics":{"Average Overlap":"81.1"},"uses_additional_data":false},{"leaderboard":"/sota/visual-object-tracking-on-lasot","task":"Visual Object Tracking","dataset":"LaSOT","model":"DAM4SAM","rank_in_archive_order":7,"of":46,"metrics":{"AUC":"75.1"},"uses_additional_data":false},{"leaderboard":"/sota/visual-object-tracking-on-lasot-ext","task":"Visual Object Tracking","dataset":"LaSOT-ext","model":"DAM4SAM","rank_in_archive_order":2,"of":18,"metrics":{"AUC":"60.9"},"uses_additional_data":false},{"leaderboard":"/sota/visual-object-tracking-on-vot2022","task":"Visual Object Tracking","dataset":"VOT2022","model":"DAM4SAM","rank_in_archive_order":1,"of":5,"metrics":{"EAO":"0.753"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2411.17576","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2411.17576"}},"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/jovanavidenovic/dam4sam","reach":{"status":"ok"}}],"summary":{"ran_violates":1,"ran_honours":1,"ran_fixture":1,"unverified":8},"by_repo_kind":{"official":{"samples":11,"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":11,"samples":[{"code_sha256_prefix":"7ceaad42da42edd5","entry":"compute_axial_cis","repo":"jovanavidenovic/dam4sam","repo_kind":"official","path":"sam2/modeling/position_encoding.py","file_url":"https://github.com/jovanavidenovic/dam4sam/blob/HEAD/sam2/modeling/position_encoding.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7ceaad42da42edd5"}},{"code_sha256_prefix":"bb060d29525f90eb","entry":"init_t_xy","repo":"jovanavidenovic/dam4sam","repo_kind":"official","path":"sam2/modeling/position_encoding.py","file_url":"https://github.com/jovanavidenovic/dam4sam/blob/HEAD/sam2/modeling/position_encoding.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"bb060d29525f90eb"}},{"code_sha256_prefix":"f8f09f78b474ee7c","entry":"reshape_for_broadcast","repo":"jovanavidenovic/dam4sam","repo_kind":"official","path":"sam2/modeling/position_encoding.py","file_url":"https://github.com/jovanavidenovic/dam4sam/blob/HEAD/sam2/modeling/position_encoding.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f8f09f78b474ee7c"}},{"code_sha256_prefix":"f9850c1d4acdbb5a","entry":"build_sam2","repo":"jovanavidenovic/dam4sam","repo_kind":"official","path":"sam2/build_sam.py","file_url":"https://github.com/jovanavidenovic/dam4sam/blob/HEAD/sam2/build_sam.py","link_basis":"harvester_set","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":"f9850c1d4acdbb5a"}},{"code_sha256_prefix":"de8c2a625f263855","entry":"build_sam2_hf","repo":"jovanavidenovic/dam4sam","repo_kind":"official","path":"sam2/build_sam.py","file_url":"https://github.com/jovanavidenovic/dam4sam/blob/HEAD/sam2/build_sam.py","link_basis":"harvester_set","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":"de8c2a625f263855"}},{"code_sha256_prefix":"c1b9e144954a57e5","entry":"build_sam2_video_predictor","repo":"jovanavidenovic/dam4sam","repo_kind":"official","path":"sam2/build_sam.py","file_url":"https://github.com/jovanavidenovic/dam4sam/blob/HEAD/sam2/build_sam.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":"c1b9e144954a57e5"}},{"code_sha256_prefix":"e473e66fedc883c7","entry":"dice_loss","repo":"jovanavidenovic/dam4sam","repo_kind":"official","path":"training/loss_fns.py","file_url":"https://github.com/jovanavidenovic/dam4sam/blob/HEAD/training/loss_fns.py","link_basis":"harvester_set","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":"e473e66fedc883c7"}},{"code_sha256_prefix":"43190a568a27a02f","entry":"get_vot_mask","repo":"jovanavidenovic/dam4sam","repo_kind":"official","path":"vot_wrapper_dam4sam.py","file_url":"https://github.com/jovanavidenovic/dam4sam/blob/HEAD/vot_wrapper_dam4sam.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":"43190a568a27a02f"}},{"code_sha256_prefix":"b8f501ca29e77f1a","entry":"iou_loss","repo":"jovanavidenovic/dam4sam","repo_kind":"official","path":"training/loss_fns.py","file_url":"https://github.com/jovanavidenovic/dam4sam/blob/HEAD/training/loss_fns.py","link_basis":"harvester_set","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":"b8f501ca29e77f1a"}},{"code_sha256_prefix":"8edb076e926c9e81","entry":"make_full_size","repo":"jovanavidenovic/dam4sam","repo_kind":"official","path":"vot_wrapper_dam4sam.py","file_url":"https://github.com/jovanavidenovic/dam4sam/blob/HEAD/vot_wrapper_dam4sam.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":"8edb076e926c9e81"}},{"code_sha256_prefix":"42fec6fdc1faf6f1","entry":"sigmoid_focal_loss","repo":"jovanavidenovic/dam4sam","repo_kind":"official","path":"training/loss_fns.py","file_url":"https://github.com/jovanavidenovic/dam4sam/blob/HEAD/training/loss_fns.py","link_basis":"harvester_set","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":"42fec6fdc1faf6f1"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}