{"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/teach-a-robot-to-fish-versatile-imitation","title":"Teach a Robot to FISH: Versatile Imitation from One Minute of Demonstrations","arxiv_id":"2303.01497","date":"2023-03-02","proceeding":null,"authors":["Siddhant Haldar","Jyothish Pari","Anant Rai","Lerrel Pinto"],"abstract":"While imitation learning provides us with an efficient toolkit to train robots, learning skills that are robust to environment variations remains a significant challenge. Current approaches address this challenge by relying either on large amounts of demonstrations that span environment variations or on handcrafted reward functions that require state estimates. Both directions are not scalable to fast imitation. In this work, we present Fast Imitation of Skills from Humans (FISH), a new imitation learning approach that can learn robust visual skills with less than a minute of human demonstrations. Given a weak base-policy trained by offline imitation of demonstrations, FISH computes rewards that correspond to the \"match\" between the robot's behavior and the demonstrations. These rewards are then used to adaptively update a residual policy that adds on to the base-policy. Across all tasks, FISH requires at most twenty minutes of interactive learning to imitate demonstrations on object configurations that were not seen in the demonstrations. Importantly, FISH is constructed to be versatile, which allows it to be used across robot morphologies (e.g. xArm, Allegro, Stretch) and camera configurations (e.g. third-person, eye-in-hand). Our experimental evaluations on 9 different tasks show that FISH achieves an average success rate of 93%, which is around 3.8x higher than prior state-of-the-art methods.","url_abs":"https://arxiv.org/abs/2303.01497v1","url_pdf":"https://arxiv.org/pdf/2303.01497v1.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":"teach-a-robot-to-fish-versatile-imitation","repo_url":"https://github.com/siddhanthaldar/FISH","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"imitation-learning","task_name":"Imitation Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2303.01497","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2303.01497"}},"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/siddhanthaldar/FISH","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_violates":1,"ran":2,"ran_honours":2,"ran_draft_wrong":1,"unverified":7},"by_repo_kind":{"official":{"samples":13,"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":"3201fb6cb44890b3","entry":"cosine_distance","repo":"siddhanthaldar/FISH","repo_kind":"official","path":"FISH/rewarder.py","file_url":"https://github.com/siddhanthaldar/FISH/blob/HEAD/FISH/rewarder.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3201fb6cb44890b3"}},{"code_sha256_prefix":"9f840a22d31a89bc","entry":"episode_len","repo":"siddhanthaldar/FISH","repo_kind":"official","path":"FISH/replay_buffer_hand.py","file_url":"https://github.com/siddhanthaldar/FISH/blob/HEAD/FISH/replay_buffer_hand.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":"9f840a22d31a89bc"}},{"code_sha256_prefix":"5ddff5153e2b8494","entry":"euclidean_distance","repo":"siddhanthaldar/FISH","repo_kind":"official","path":"FISH/rewarder.py","file_url":"https://github.com/siddhanthaldar/FISH/blob/HEAD/FISH/rewarder.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5ddff5153e2b8494"}},{"code_sha256_prefix":"184876e5f4ab6562","entry":"load_episode","repo":"siddhanthaldar/FISH","repo_kind":"official","path":"FISH/replay_buffer_hand.py","file_url":"https://github.com/siddhanthaldar/FISH/blob/HEAD/FISH/replay_buffer_hand.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":"184876e5f4ab6562"}},{"code_sha256_prefix":"ae234269debed3f4","entry":"schedule","repo":"siddhanthaldar/FISH","repo_kind":"official","path":"FISH/utils.py","file_url":"https://github.com/siddhanthaldar/FISH/blob/HEAD/FISH/utils.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ae234269debed3f4"}},{"code_sha256_prefix":"6244e9922f4e0610","entry":"to_torch","repo":"siddhanthaldar/FISH","repo_kind":"official","path":"FISH/utils.py","file_url":"https://github.com/siddhanthaldar/FISH/blob/HEAD/FISH/utils.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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6244e9922f4e0610"}},{"code_sha256_prefix":"52cbdb60c855f08b","entry":"compute_gradient_penalty","repo":"siddhanthaldar/FISH","repo_kind":"official","path":"FISH/agent/dac.py","file_url":"https://github.com/siddhanthaldar/FISH/blob/HEAD/FISH/agent/dac.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":"52cbdb60c855f08b"}},{"code_sha256_prefix":"6dcf7786ccfa6051","entry":"make_agent","repo":"siddhanthaldar/FISH","repo_kind":"official","path":"FISH/eval_robot.py","file_url":"https://github.com/siddhanthaldar/FISH/blob/HEAD/FISH/eval_robot.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":"6dcf7786ccfa6051"}},{"code_sha256_prefix":"b6a479ef98b42e5f","entry":"make_agent","repo":"siddhanthaldar/FISH","repo_kind":"official","path":"FISH/train_hand.py","file_url":"https://github.com/siddhanthaldar/FISH/blob/HEAD/FISH/train_hand.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":"b6a479ef98b42e5f"}},{"code_sha256_prefix":"552d3925ad4f9b07","entry":"make_agent","repo":"siddhanthaldar/FISH","repo_kind":"official","path":"FISH/train_robot.py","file_url":"https://github.com/siddhanthaldar/FISH/blob/HEAD/FISH/train_robot.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":"552d3925ad4f9b07"}},{"code_sha256_prefix":"cc4c5cba4f6f2757","entry":"make_replay_loader","repo":"siddhanthaldar/FISH","repo_kind":"official","path":"FISH/replay_buffer_hand.py","file_url":"https://github.com/siddhanthaldar/FISH/blob/HEAD/FISH/replay_buffer_hand.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":"cc4c5cba4f6f2757"}},{"code_sha256_prefix":"d1fbf3515dde771e","entry":"optimal_transport_plan","repo":"siddhanthaldar/FISH","repo_kind":"official","path":"FISH/rewarder.py","file_url":"https://github.com/siddhanthaldar/FISH/blob/HEAD/FISH/rewarder.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":"d1fbf3515dde771e"}},{"code_sha256_prefix":"19a25f21c8bbd6b7","entry":"update_mean_var_count_from_moments","repo":"siddhanthaldar/FISH","repo_kind":"official","path":"FISH/utils.py","file_url":"https://github.com/siddhanthaldar/FISH/blob/HEAD/FISH/utils.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":"19a25f21c8bbd6b7"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}