{"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/ap-10k-a-benchmark-for-animal-pose-estimation","title":"AP-10K: A Benchmark for Animal Pose Estimation in the Wild","arxiv_id":"2108.12617","date":"2021-08-28","proceeding":null,"authors":["Hang Yu","Yufei Xu","Jing Zhang","Wei Zhao","Ziyu Guan","DaCheng Tao"],"abstract":"Accurate animal pose estimation is an essential step towards understanding animal behavior, and can potentially benefit many downstream applications, such as wildlife conservation. Previous works only focus on specific animals while ignoring the diversity of animal species, limiting the generalization ability. In this paper, we propose AP-10K, the first large-scale benchmark for mammal animal pose estimation, to facilitate the research in animal pose estimation. AP-10K consists of 10,015 images collected and filtered from 23 animal families and 54 species following the taxonomic rank and high-quality keypoint annotations labeled and checked manually. Based on AP-10K, we benchmark representative pose estimation models on the following three tracks: (1) supervised learning for animal pose estimation, (2) cross-domain transfer learning from human pose estimation to animal pose estimation, and (3) intra- and inter-family domain generalization for unseen animals. The experimental results provide sound empirical evidence on the superiority of learning from diverse animals species in terms of both accuracy and generalization ability. It opens new directions for facilitating future research in animal pose estimation. AP-10k is publicly available at https://github.com/AlexTheBad/AP10K.","url_abs":"https://arxiv.org/abs/2108.12617v2","url_pdf":"https://arxiv.org/pdf/2108.12617v2.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":"ap-10k-a-benchmark-for-animal-pose-estimation","repo_url":"https://github.com/alexthebad/ap10k","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"CC-BY-4.0"}},{"paper_slug":"ap-10k-a-benchmark-for-animal-pose-estimation","repo_url":"https://github.com/AlexTheBad/AP-10K","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"CC-BY-4.0"}},{"paper_slug":"ap-10k-a-benchmark-for-animal-pose-estimation","repo_url":"https://github.com/rikichou/mmpose","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"ap-10k-a-benchmark-for-animal-pose-estimation","repo_url":"https://github.com/vitae-transformer/aptv2","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"ap-10k-a-benchmark-for-animal-pose-estimation","repo_url":"https://github.com/wtjiang98/mmpose-gyl","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"animal-pose-estimation","task_name":"Animal Pose Estimation"},{"task_slug":"diversity","task_name":"Diversity"},{"task_slug":"domain-generalization","task_name":"Domain Generalization"},{"task_slug":"pose-estimation","task_name":"Pose Estimation"},{"task_slug":"transfer-learning","task_name":"Transfer Learning"}],"methods":[],"datasets_introduced":[{"slug":"ap-10k","name":"AP-10K","full_name":""}],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2108.12617","atlas_url":"https://app.syntology.ai/?focus=2108.12617","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2108.12617"}},"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":"deterministic:regex_extraction","url":"https://github.com/AlexTheBad/AP10K","reach":{"status":"ok","spdx":"CC-BY-4.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/wtjiang98/mmpose-gyl","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/AlexTheBad/AP-10K","reach":{"status":"ok","spdx":"CC-BY-4.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/vitae-transformer/aptv2","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/alexthebad/ap10k","reach":{"status":"ok","spdx":"CC-BY-4.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/rikichou/mmpose","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":8,"unverified":1},"by_repo_kind":{"listed":{"samples":9,"ran":8,"repositories":2}},"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":"4670b554f85bd5fd","entry":"aggregate_stage_flip","repo":"rikichou/mmpose","repo_kind":"listed","path":"mmpose/core/evaluation/bottom_up_eval.py","file_url":"https://github.com/rikichou/mmpose/blob/HEAD/mmpose/core/evaluation/bottom_up_eval.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":"4670b554f85bd5fd"}},{"code_sha256_prefix":"125c410fd33efbc4","entry":"compute_similarity_transform","repo":"rikichou/mmpose","repo_kind":"listed","path":"mmpose/core/evaluation/mesh_eval.py","file_url":"https://github.com/rikichou/mmpose/blob/HEAD/mmpose/core/evaluation/mesh_eval.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":"125c410fd33efbc4"}},{"code_sha256_prefix":"10e3dd78691455b0","entry":"covert_keypoint_definition","repo":"vitae-transformer/aptv2","repo_kind":"listed","path":"demo/body3d_two_stage_video_demo.py","file_url":"https://github.com/vitae-transformer/aptv2/blob/HEAD/demo/body3d_two_stage_video_demo.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":"10e3dd78691455b0"}},{"code_sha256_prefix":"79272b7e8ff21207","entry":"extract_pose_sequence","repo":"rikichou/mmpose","repo_kind":"listed","path":"mmpose/apis/inference_3d.py","file_url":"https://github.com/rikichou/mmpose/blob/HEAD/mmpose/apis/inference_3d.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":"79272b7e8ff21207"}},{"code_sha256_prefix":"a94052dc985dbd44","entry":"flip_feature_maps","repo":"rikichou/mmpose","repo_kind":"listed","path":"mmpose/core/evaluation/bottom_up_eval.py","file_url":"https://github.com/rikichou/mmpose/blob/HEAD/mmpose/core/evaluation/bottom_up_eval.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":"a94052dc985dbd44"}},{"code_sha256_prefix":"43e4fca5256ad4e2","entry":"split_ae_outputs","repo":"rikichou/mmpose","repo_kind":"listed","path":"mmpose/core/evaluation/bottom_up_eval.py","file_url":"https://github.com/rikichou/mmpose/blob/HEAD/mmpose/core/evaluation/bottom_up_eval.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":"43e4fca5256ad4e2"}},{"code_sha256_prefix":"bd6d6a2a69c4bcc1","entry":"vis_3d_pose_result","repo":"rikichou/mmpose","repo_kind":"listed","path":"mmpose/apis/inference_3d.py","file_url":"https://github.com/rikichou/mmpose/blob/HEAD/mmpose/apis/inference_3d.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":"bd6d6a2a69c4bcc1"}},{"code_sha256_prefix":"83b319f3508e6fe2","entry":"vis_pose_tracking_result","repo":"rikichou/mmpose","repo_kind":"listed","path":"mmpose/apis/inference_tracking.py","file_url":"https://github.com/rikichou/mmpose/blob/HEAD/mmpose/apis/inference_tracking.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":"83b319f3508e6fe2"}},{"code_sha256_prefix":"000768447d5adf6c","entry":"process_face_det_results","repo":"vitae-transformer/aptv2","repo_kind":"listed","path":"demo/face_img_demo.py","file_url":"https://github.com/vitae-transformer/aptv2/blob/HEAD/demo/face_img_demo.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":"000768447d5adf6c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}