{"id":15633909,"url":"https://github.com/tucan9389/poseestimation-tfliteswift","last_synced_at":"2025-08-12T06:06:11.718Z","repository":{"id":37671479,"uuid":"247087396","full_name":"tucan9389/PoseEstimation-TFLiteSwift","owner":"tucan9389","description":"The baseline project for inferencing various Pose Estimation tflite models with TFLiteSwift on iOS","archived":false,"fork":false,"pushed_at":"2022-09-04T19:17:28.000Z","size":25022,"stargazers_count":153,"open_issues_count":23,"forks_count":20,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-05-30T02:43:14.195Z","etag":null,"topics":["3d-pose-estimation","cpm","hourglass","ios","mobilenetv2","on-device","openpose","pose-matching","posenet","simplepose","tensorflow","tensorflow-lite","tflite"],"latest_commit_sha":null,"homepage":"https://github.com/motlabs/awesome-ml-demos-with-ios","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tucan9389.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-03-13T14:14:27.000Z","updated_at":"2025-05-01T15:25:02.000Z","dependencies_parsed_at":"2022-08-27T02:39:48.583Z","dependency_job_id":null,"html_url":"https://github.com/tucan9389/PoseEstimation-TFLiteSwift","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/tucan9389/PoseEstimation-TFLiteSwift","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tucan9389%2FPoseEstimation-TFLiteSwift","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tucan9389%2FPoseEstimation-TFLiteSwift/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tucan9389%2FPoseEstimation-TFLiteSwift/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tucan9389%2FPoseEstimation-TFLiteSwift/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tucan9389","download_url":"https://codeload.github.com/tucan9389/PoseEstimation-TFLiteSwift/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tucan9389%2FPoseEstimation-TFLiteSwift/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270011172,"owners_count":24511896,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-12T02:00:09.011Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d-pose-estimation","cpm","hourglass","ios","mobilenetv2","on-device","openpose","pose-matching","posenet","simplepose","tensorflow","tensorflow-lite","tflite"],"created_at":"2024-10-03T10:50:36.182Z","updated_at":"2025-08-12T06:06:11.689Z","avatar_url":"https://github.com/tucan9389.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"![logo-pose-estimatiton-for-tflite-3](https://user-images.githubusercontent.com/37643248/120911940-18fd2680-c6c6-11eb-972e-9bdd3e975c3b.png)\n\n![platform-ios](https://img.shields.io/badge/platform-ios-lightgrey.svg)\n![swift-version](https://img.shields.io/badge/swift-5-red.svg)\n![lisence](https://img.shields.io/badge/license-MIT-black.svg)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\n\nThis project is Pose Estimation on iOS with TensorFlow Lite.\u003cbr\u003eIf you are interested in iOS + Machine Learning, visit [here](https://github.com/motlabs/iOS-Proejcts-with-ML-Models) you can see various DEMOs.\u003cbr\u003e\n\n|               2D pose estimation in real-time                |                      3D pose estimation                      |\n| :----------------------------------------------------------: | :----------------------------------------------------------: |\n| \u003cimg src=\"https://user-images.githubusercontent.com/37643248/77227994-99ba2a80-6bc7-11ea-9b08-9bb57723bc42.gif\" width=240px\u003e | \u003cimg src=\"https://user-images.githubusercontent.com/37643248/110994933-e68ca780-83bc-11eb-8331-d827e19d2d36.gif\" width=240px\u003e |\n\n\n## Features\n\n- [x] Support 2D pose estimaiton TFLite models\n    - [x] Real-time demo with Metal framwork\n    - [x] Photo album demo\n- [x] Support 3D pose estimation TFLite model\n    - [x] Real-time demo with Metal framwork (but realtime model is not ready yet)\n    - [x] Real-time pose matching demo\n    - [x] Photo album demo\n- [x] Render the result keypoints of 2D pose estimation in 2D demo page\n- [x] Render the result keypoints of 3D pose estimation with SceneKit\n- [x] Render the heatmaps of 2D pose estimation output\n    - [x] Part Confidence Maps for typical heatmap based models\n    - [x] Part Affinity Fields for OpenPose (2D multi-person)\n- [x] Implemented pose-matching with cosine similiarity in 3D pose demo\n- [x] Implemented to fix the shoulders' keypoints in 3D pose estimation to pre-process for pose-matching\n\n\n## Models\n\n\u003cdetails\u003e\u003csummary\u003eSource Images\u003c/summary\u003e\n\u003cp\u003e\n\nName | gif | img-0 | img-1 | img-2\n:---: | :---: | :---: | :---: | :---:\nSource | - | \u003cimg src=\"https://user-images.githubusercontent.com/37643248/81012180-15301c80-8e94-11ea-83ec-bd45a690efb3.jpg\" width=200px\u003e | \u003cimg src=\"https://user-images.githubusercontent.com/37643248/81010350-1ca1f680-8e91-11ea-81fd-0ff4c78b8641.png\" width=200px\u003e | \u003cimg src=\"https://user-images.githubusercontent.com/37643248/81009122-0135ec00-8e8f-11ea-8a3a-e62929f19d8e.png\" width=200px\u003e\n\n\u003c/p\u003e\n\u003c/details\u003e\n\n\n### Joint Samples\n\nModel Names | gif | img-0 | img-1 | img-2\n:---: | :---: | :---: | :---: | :---:\nPoseNet | - | ![pose-demo-linedot-posenet-0](https://user-images.githubusercontent.com/37643248/81031293-bf289c80-8ec6-11ea-9ec2-6fa4fa07effb.jpeg) | ![pose-demo-linedot-posenet-2](https://user-images.githubusercontent.com/37643248/81031298-c64faa80-8ec6-11ea-8cf6-29eff18ef832.jpeg) | ![pose-demo-linedot-posenet-3](https://user-images.githubusercontent.com/37643248/81031302-c94a9b00-8ec6-11ea-9de8-f91cd97bc48a.jpeg)\nPEFM CPM | - | ![pose-demo-PEFMCPM-0](https://user-images.githubusercontent.com/37643248/81031404-21819d00-8ec7-11ea-8a65-4bb2575808c6.jpeg) | ![pose-demo-PEFMCPM-2](https://user-images.githubusercontent.com/37643248/81031420-29414180-8ec7-11ea-8388-260baada3a3d.jpeg) | ![pose-demo-PEFMCPM-3](https://user-images.githubusercontent.com/37643248/81031426-2a726e80-8ec7-11ea-975e-5ad0037650a8.jpeg)\nPEFM Hourglass | - | ![pose-demo-PEFMHourglass-0](https://user-images.githubusercontent.com/37643248/81031512-6efe0a00-8ec7-11ea-9e27-b411044cdf39.jpeg) | ![pose-demo-PEFMHourglass-2](https://user-images.githubusercontent.com/37643248/81031522-77564500-8ec7-11ea-8dba-71982428d1ce.jpeg) | ![pose-demo-PEFMHourglass-3](https://user-images.githubusercontent.com/37643248/81031523-78877200-8ec7-11ea-8160-858a6a7fc527.jpeg)\nOpenPose (multi-person) | - | ![pose-demo-openpose-0](https://user-images.githubusercontent.com/37643248/81030774-fa29d080-8ec4-11ea-8164-a5e960d09fe4.jpeg) | ![pose-demo-openpose-2](https://user-images.githubusercontent.com/37643248/81030820-28a7ab80-8ec5-11ea-9fcc-283ca97b5748.jpeg) | ![pose-demo-openpose-3](https://user-images.githubusercontent.com/37643248/81030783-ff871b00-8ec4-11ea-94dc-f609bce71536.jpeg)\n\n### Heatmap-ConfidenceMap Samples\n\nModel Names | gif | img-0 | img-1 | img-2\n:---: | :---: | :---: | :---: | :---:\nPoseNet | - | - | - | - | -\nPEFM CPM | - | ![pose-demo-heatmap-PEFMCPM-0](https://user-images.githubusercontent.com/37643248/81032662-aa023c80-8ecb-11ea-8e6d-bbcb8be2a695.jpeg) | ![pose-demo-heatmap-PEFMCPM-2](https://user-images.githubusercontent.com/37643248/81032670-b38ba480-8ecb-11ea-9821-15eeb9af4946.jpeg) | ![pose-demo-heatmap-PEFMCPM-3](https://user-images.githubusercontent.com/37643248/81032672-b5556800-8ecb-11ea-9660-2d0626a6213e.jpeg)\nPEFM Hourglass | - | ![pose-demo-heatmap-PEFMHourglass-0](https://user-images.githubusercontent.com/37643248/81032762-fe0d2100-8ecb-11ea-965d-8443e3d3e24e.jpeg) | ![pose-demo-heatmap-PEFMHourglass-2](https://user-images.githubusercontent.com/37643248/81032758-fc435d80-8ecb-11ea-9f18-4ad82374ff63.jpeg) | ![pose-demo-heatmap-PEFMHourglass-3](https://user-images.githubusercontent.com/37643248/81032752-f3eb2280-8ecb-11ea-949a-80a34f6752a3.jpeg)\nOpenPose (multi-person) | - | ![pose-demo-heatmap-posenet-0](https://user-images.githubusercontent.com/37643248/81032579-52fc6780-8ecb-11ea-9c6f-2dfa5a7f524e.jpeg) | ![pose-demo-heatmap-posenet-2](https://user-images.githubusercontent.com/37643248/81032601-5f80c000-8ecb-11ea-8f05-f95e8b1e9d28.jpeg) | ![pose-demo-heatmap-posenet-3](https://user-images.githubusercontent.com/37643248/81032603-63144700-8ecb-11ea-9af5-b9b38380a8b8.jpeg)\n\n\n### Heatmap-PAF Samples\n\nModel Names | gif | img-0 | img-1 | img-2\n:---: | :---: | :---: | :---: | :---:\nOpenPose (PAF x) | - | ![pose-demo-heatmap-pafx-PEFMHourglass-0](https://user-images.githubusercontent.com/37643248/81033830-fea7b680-8ecf-11ea-991d-37868d902c64.jpeg) | ![pose-demo-heatmap-pafx-PEFMHourglass-2](https://user-images.githubusercontent.com/37643248/81033840-07988800-8ed0-11ea-8c71-8474399e8660.jpeg) | ![pose-demo-heatmap-pafx-PEFMHourglass-3](https://user-images.githubusercontent.com/37643248/81033842-09624b80-8ed0-11ea-9374-3812b5702917.jpeg)\nOpenPose (PAF y) | - | ![pose-demo-heatmap-pafy-PEFMHourglass-0](https://user-images.githubusercontent.com/37643248/81033852-12531d00-8ed0-11ea-85b4-c8efa8e61232.jpeg) | ![pose-demo-heatmap-pafy-PEFMHourglass-2](https://user-images.githubusercontent.com/37643248/81033861-17b06780-8ed0-11ea-9806-6b819d3c78ff.jpeg) | ![pose-demo-heatmap-pafy-PEFMHourglass-3](https://user-images.githubusercontent.com/37643248/81033864-1848fe00-8ed0-11ea-8ccc-1adc358a85b3.jpeg) \n\n### Meta Data\n\n#### 2D\n\n✅ vs ☑️ | Name | Size | Inference\u003cbr\u003eTime\u003cbr\u003eon iPhone11Pro | Post-process\u003cbr\u003eTime\u003cbr\u003eon iPhone11Pro | PCKh-0.5 | multi person \u003cbr\u003evs\u003cbr\u003e single person | Model Source | Paper | tflite\u003cbr\u003edownload\n:---: | --- | --- | --- | --- | --- | :---: | --- | --- | ---\n✅ | **PoseNet** | 13.3 MB | - | - | - | single | [tensorflow/tensorflow](https://github.com/tensorflow/examples/blob/master/lite/examples/posenet/ios) | [PersonLab](https://arxiv.org/abs/1803.08225)\n✅ | **PEFM CPM** | 2.4 MB | - | - | - | single | [edvardHua/PoseEstimationForMobile](https://github.com/edvardHua/PoseEstimationForMobile) | [Convolutional Pose Machines](https://arxiv.org/abs/1602.00134)\n✅ | **PEFM Hourglass v1** | 1.8 MB | - | - | - | single | [edvardHua/PoseEstimationForMobile](https://github.com/edvardHua/PoseEstimationForMobile) | [Stacked Hourglass Networks](https://arxiv.org/abs/1603.06937)\n✅ | **PEFM Hourglass v2** | 1.7 MB | - | - | - | single | [edvardHua/PoseEstimationForMobile](https://github.com/edvardHua/PoseEstimationForMobile) | [Stacked Hourglass Networks](https://arxiv.org/abs/1603.06937)\n✅ | **OpenPose** | 7.8 MB | - | - | - | multi | [ildoonet/tf-pose-estimation](https://github.com/ildoonet/tf-pose-estimation/issues/355) | [OpenPose](https://arxiv.org/abs/1812.08008)\n☑️ | **AlphaPose** | - | - | - | - | single | [osmr/imgclsmob](https://github.com/osmr/imgclsmob) | [RMPE](https://arxiv.org/abs/1612.00137)\n☑️ | **SelecSLS** | - | - | - | - | single | [osmr/imgclsmob](https://github.com/osmr/imgclsmob) | -\n☑️ | **IBPPose** | - | - | - | - | single | [osmr/imgclsmob](https://github.com/osmr/imgclsmob) | -\n☑️ | **Lightweight OpenPose** | - | - | - | - | single | [osmr/imgclsmob](https://github.com/osmr/imgclsmob) | [OpenPose](https://arxiv.org/abs/1812.08008)\n\n#### 3D \n\n✅ vs ☑️ | Name | Size | Inference\u003cbr\u003eTime\u003cbr\u003eon iPhone11Pro | Post-process\u003cbr\u003eTime\u003cbr\u003eon iPhone11Pro | (metric) | Model Source | Paper | tflite\u003cbr\u003edownload\n:---: | --- | --- | --- | --- | ---  | --- | --- | ---\n✅ | **Baseline3DPose** | 137.1 MB | 347 ms | 79 ms | - | [mks0601/3DMPPE_POSENET_RELEASE](https://github.com/mks0601/3DMPPE_POSENET_RELEASE) | [Baseline3D](https://arxiv.org/abs/1907.11346) | [download](https://github.com/tucan9389/PoseEstimation-TFLiteSwift/releases/download/v2.0.0/baseline_moon_noS.tflite)\n✅ | **LiteBaseline3DPose** | **16.6 MB** | 116 ms\u003cbr\u003e(cpu only) | 19 ms\u003cbr\u003e(cpu only) |  | [SangbumChoi/MobileHumanPose](https://github.com/SangbumChoi/MobileHumanPose) | [MHP](https://openaccess.thecvf.com/content/CVPR2021W/MAI/papers/Choi_MobileHumanPose_Toward_Real-Time_3D_Human_Pose_Estimation_in_Mobile_Devices_CVPRW_2021_paper.pdf) | [download](https://github.com/tucan9389/PoseEstimation-TFLiteSwift/releases/download/v2.1.0/lightweight_baseline_choi.tflite)\n\n## Requirements\n\n- Xcode 11.3+\n- iOS 11.0+\n- Swift 5\n- CocoaPods\n```shell\ngem install cocoapods\n```\n\n## Build \u0026 Run\n\n1. Install dependencies with cocoapods\n```shell\ncd ~/{PROJECT_PATH}\npod install\n```\n\n2. Open the `PoseEstimation-TFLiteSwift.xcworkspace` and run the project\n\n\n## See also\n\n- [motlabs/awesome-ml-demos-with-ios](https://github.com/motlabs/awesome-ml-demos-with-ios)\n- TensorFlow Lite or Tensorflow models provided by:\n  - CPM and Hourglass model provided by  [edvardHua/PoseEstimationForMobile](https://github.com/edvardHua/PoseEstimationForMobile)\n  - PoseNet model provided by [tensorflow/examples](https://github.com/tensorflow/examples/blob/master/lite/examples/posenet/ios)\n  - OpenPose model provided by [ildoonet/tf-pose-estimation](https://github.com/ildoonet/tf-pose-estimation)\n  - Various model provided by [osmr/imgclsmob](https://github.com/osmr/imgclsmob)\n  - 3DMPPE PoseNet model provided by [mks0601/3DMPPE_POSENET_RELEASE](https://github.com/mks0601/3DMPPE_POSENET_RELEASE)\n- Pose estimation with Core ML - [tucan9389/PoseEstimation-CoreML](https://github.com/tucan9389/PoseEstimation-CoreML)\n\n## License\n\nThis repository is licensed under Apache 2.0. Full license text is available in [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftucan9389%2Fposeestimation-tfliteswift","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftucan9389%2Fposeestimation-tfliteswift","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftucan9389%2Fposeestimation-tfliteswift/lists"}