google-ai-edge/mediapipe

Cross-platform, customizable ML solutions for live and streaming media.

28
Hotness score
48
Reliability score
36,177
Stars
about 7 years
Age
0
Published reviews
0
Questions

Scores

Hotness and reliability

The two headline scores, measured daily, with 30, 90, and 180 day views.

Hotness score

Jul 19, 2026

Current28

Previous28

Weekly average

100500
Full metrics details

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Hotness formula

40% Hot today + 40% Hot this week + 20% Breakout.

  • 40% Hot today: 35
  • 40% Hot this week: 41
  • 20% Breakout: 4
  • Stars gained: 1d: 20
  • Stars gained: 7d: 101
  • Stars gained: 14d: 204
  • Stars gained: 30d: 441
  • Stars gained: 90d: 11666

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score

Reliability score

Jul 19, 2026

Current48

Previous48

Weekly average

100500
Full metrics details

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Reliability formula

30% Continuity + 30% Closure + 20% Shipping + 10% Liveness + 10% Support burden.

  • 30% Continuity: 44
  • 30% Closure: 45
  • 20% Shipping: 18
  • 10% Liveness: 100
  • 10% Support burden: 79

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score

Reliability breakdown

What drives the reliability score

Component scores measured daily from GitHub activity (2026-04-29).

Continuity30% of headline44

Activity on 32 of 90 tracked days in the last 90 and 0 of 30 in the last 30.

Closure30% of headline45

Merged 0 of 12 PRs opened and closed 44 of 17 issues opened over the last 90 tracked days — PR flow carries 55% of this component, issue flow 45%.

Shipping20% of headline18

3 releases in the last 180 days, 1 in the last 90 and 0 in the last 30 — a steady cadence scores highest.

Liveness10% of headline100

Last push 3 days ago — freshness decays as pushes age (roughly halves every 83 days without a push).

Support burden10% of headline79

372 open issues against 36,177 stars — about 10 open issues per 1,000 stars. Lighter backlogs score higher.

Adoption confidence9

Modeled — how confidently teams are adopting this repo. Stargazers

Maintenance quality35

Modeled from PR/issue responsiveness and upkeep signals. Activity pulse

Risk score62

Modeled — lower is better; adoption and continuity risk. Repository

Stays active (30d)44%

Modeled chance the repo stays active over 30 days. Activity pulse

Stays active (90d)28%

Modeled chance the repo stays active over 90 days. Activity pulse

Release rhythm (180d)0

Regularity of releases over the last 180 days. Releases

Maintainer bus risk (90d)52%

Modeled — lower is better; concentration of commits in few maintainers. Contributors graph

Measured history

Project metrics

Weekly GitHub totals with 30, 90, and 180 day views.

Weekly star gains

Jul 19, 2026

Current96

Previous97

Weekly star gains

11,0965,5480
Full metrics details

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue

Cumulative stars

Jul 19, 2026

Current36,157

Previous36,061

Cumulative total

36,15718,0790
Full metrics details

Running total of the GitHub GraphQL stargazer count over time (not weekly deltas), reconstructed from starredAt events and totalCount in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue

Issues opened

Jun 14, 2026

Current1

Previous2

Weekly total

630
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

144 observed daily rows. Missing days are not fabricated.

DateValue

Issues closed

Jun 14, 2026

Current5

Previous8

Weekly total

1050
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

144 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests opened

Jun 14, 2026

Current0

Previous0

Weekly total

420
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

144 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests closed

Jun 14, 2026

Current0

Previous0

Weekly total

320
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

144 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests merged

Jun 14, 2026

Current0

Previous0

Weekly total

110
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

144 observed daily rows. Missing days are not fabricated.

DateValue

Issue close ratio (daily)

Jun 8, 2026

Current0.00

Previous1.00

Daily ratio — a gap means nothing was opened that day

How this works: each day's value is issues closed that day ÷ issues opened that day. Days when nothing was opened render as gaps — never a rolling average or a made-up zero. Values above 1 mean the project closed more issues than arrived that day.

6.003.000.00
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

42 observed daily rows. Missing days are not fabricated.

Per-day formula: issues closed that day ÷ issues opened that day; blank when nothing was opened (a gap, not a zero).

DateIssues openedIssues closedStored score

Pull request close ratio (daily)

May 28, 2026

Current1.00

Previous0.00

Daily ratio — a gap means nothing was opened that day

How this works: each day's value is pull requests closed that day ÷ pull requests opened that day. Days when nothing was opened render as gaps — never a rolling average or a made-up zero. Values above 1 mean the project closed more pull requests than arrived that day.

1.000.500.00
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

25 observed daily rows. Missing days are not fabricated.

Per-day formula: pull requests closed that day ÷ pull requests opened that day; blank when nothing was opened (a gap, not a zero).

DatePRs openedPRs closedStored score

Releases

Jul 19, 2026

Current0

Previous0

Weekly total

110
Full metrics details

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue

Project Overview

MediaPipe is Google's open-source framework for running machine learning pipelines on live and streaming media. You point it at a camera feed, a video file, or an audio stream, and it gives you real-time hand tracking, pose estimation, face landmarks, segmentation, and object detection — on Android, iOS, the web, and desktop, with the same models running everywhere.

It's really two products in one repo. The first is a set of prebuilt, pretrained tasks you call from Python, JavaScript, Kotlin, Swift, or C++ without training anything. The second is a lower-level C++ graph framework for wiring custom perception pipelines out of reusable components. Most teams only ever touch the first layer, and that's the right call — the prebuilt tasks are the main product.

The license is Apache 2.0, so commercial use is straightforward. One structural shift matters before you write any code: the original Solutions API (the mp.solutions namespace you'll see in older tutorials) is in maintenance mode, and active development happens in the MediaPipe Tasks API. Start with Tasks and treat pre-2023 tutorials with suspicion. The official documentation lives at ai.google.dev/edge/mediapipe.

Key Challenges Addressed

Real-time perception is hard to ship, and MediaPipe targets the specific problems that make it hard:

  • On-device inference speed. Models run through TensorFlow Lite with GPU delegates — OpenGL ES on Android, Metal on iOS — so you get usable frame rates on midrange phones without a server round trip or per-frame API costs.
  • Frame synchronization and backpressure. The graph runtime stamps every packet with a timestamp and drops frames when a downstream stage can't keep up, instead of letting queues grow without bound. Latency stays flat under load rather than drifting seconds behind the camera.
  • Cross-platform duplication. A pipeline is defined once as a graph of calculators and runs on every supported platform. You don't rewrite the hand tracker for iOS after shipping it on Android.
  • Cold start. Pretrained models for hands, pose, faces, and segmentation mean you skip data collection and training entirely for the common cases.

Getting Started

Python is the fastest way in:

pip install mediapipe

Download a model bundle for your task, then run it. Hand landmarks look like this:

import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision

base_options = python.BaseOptions(model_asset_path='hand_landmarker.task')
options = vision.HandLandmarkerOptions(base_options=base_options, num_hands=2)
detector = vision.HandLandmarker.create_from_options(options)

image = mp.Image.create_from_file('hand.jpg')
result = detector.detect(image)
print(result.hand_landmarks)

Sharp edges you'll hit in the first hour:

  • If pip install mediapipe fails with "No matching distribution found", your Python version is newer than the published wheels. Create a virtualenv on a supported Python version first instead of fighting pip.
  • create_from_options raises at startup if model_asset_path doesn't point to a real .task bundle — the model is a separate download, not part of the pip package. Grab the bundle from the official model page for your task before running anything.
  • Mixing APIs breaks immediately: mp.solutions.hands snippets from old tutorials won't work with Tasks objects. Pick the Tasks API and ignore code that imports mp.solutions.
  • In live-stream mode, sending frames with non-increasing timestamps makes the graph error out and stop. Derive timestamps from a monotonic counter, never from wall-clock time that can repeat.
  • Building the C++ framework from source requires the exact Bazel version the repo pins. Use Bazelisk, which reads .bazelversion automatically, instead of a system Bazel that will fail mid-build.

Features and Use Cases

The Tasks API groups features by domain:

  • Vision: hand landmarks (21 keypoints per hand), pose landmarks (33 keypoints), face landmarks (478 points plus blendshape scores), gesture recognition, image and selfie segmentation, object detection, image classification, and image embeddings.
  • Audio: audio classification.
  • Text: text classification and language detection.
  • GenAI: an LLM inference API for running small language models on-device.

What that translates to in practice:

  • AR effects and try-on. Face landmarks plus blendshape scores drive filters, makeup try-on, and avatar animation from a selfie camera.
  • Fitness and movement apps. Pose landmarks give you joint positions per frame; you build rep counting and form checks on top.
  • Gesture control. The gesture recognizer ships with common gestures, and Model Maker lets you retrain it on your own gesture set without touching model internals.
  • Background replacement. Selfie segmentation produces a per-pixel mask fast enough for live video calls.

Model Maker is the customization story: transfer learning for a handful of task types, gesture recognition and image classification among them. If your need falls outside what it supports, you're into full custom-model territory — budget for that before you commit.

Ecosystem and Dependencies

MediaPipe runs inference through TensorFlow Lite, which lives in the TensorFlow repo. Desktop C++ examples use OpenCV for camera capture and window display. On the web, tasks run through WebAssembly with WebGL acceleration via the @mediapipe/tasks-vision npm package — no plugin required. Source builds use Bazel.

The practical gain: prototype in Python, then ship the same .task model bundle to Android (Kotlin), iOS (Swift), and the browser (JavaScript) without conversion work.

Architectural Overview

Every MediaPipe pipeline is a graph. Nodes are calculators — C++ classes that consume and produce typed packets. Edges are streams of timestamped packets. Graph topology lives in .pbtxt text protos, separate from calculator code.

Three design choices matter for you:

  • Timestamped packets let the framework synchronize multiple streams (video frames plus detection results) and drop stale work deliberately. That's the mechanism behind stable live-stream latency.
  • Calculators are reusable and individually testable. The prebuilt tasks are compositions of the same calculators you'd use in a custom graph, so customization extends the system rather than forking it.
  • Graph config as data means pipeline changes don't require recompiling app code — but errors surface as C++ status messages at graph initialization, which is painful to debug from Python or JavaScript.

The cost of the design is the cliff between consuming prebuilt tasks (easy) and authoring custom calculators (C++, Bazel, protobuf). Know which side of that cliff your project sits on before committing.

Pros and Cons

Pros:

  • Real-time performance on phones is the headline: GPU-accelerated inference designed for 30fps live streams.
  • One model bundle and consistent APIs across Android, iOS, web, Python, and C++.
  • Pretrained models under Apache 2.0 — no training infrastructure, no licensing surprises.
  • The Tasks API gets you working results in about twenty lines of Python.

Cons:

  • Customization beyond Model Maker's supported task types is a steep drop into C++ graphs and Bazel builds.
  • Search results and Stack Overflow answers skew heavily toward the deprecated Solutions API, which wastes debugging time.
  • Desktop Python inference is CPU-oriented; GPU acceleration is strongest on mobile and web.
  • You can't retrain the core models — the model zoo updates on Google's schedule, not yours.

Comparison and Alternatives

Measured 90-day trends for this project and its alternatives.

GitHub stars

Weekly star gains

11,0965,543-10
Full metrics details

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

Mediapipe

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
OpenPose

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
OpenCV

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

80 observed daily rows. Missing days are not fabricated.

DateValue
tfjs-models

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue

Issues opened

Weekly total

530
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Mediapipe

GitHub API observation. Historical values render only when the source provides a real observation for that day.

144 observed daily rows. Missing days are not fabricated.

DateValue
OpenPose

GitHub API observation. Historical values render only when the source provides a real observation for that day.

144 observed daily rows. Missing days are not fabricated.

DateValue
OpenCV

GitHub API observation. Historical values render only when the source provides a real observation for that day.

36 observed daily rows. Missing days are not fabricated.

DateValue
tfjs-models

GitHub API observation. Historical values render only when the source provides a real observation for that day.

143 observed daily rows. Missing days are not fabricated.

DateValue

Issues closed

Weekly total

1050
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

Mediapipe

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

144 observed daily rows. Missing days are not fabricated.

DateValue
OpenPose

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

144 observed daily rows. Missing days are not fabricated.

DateValue
OpenCV

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

36 observed daily rows. Missing days are not fabricated.

DateValue
tfjs-models

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

143 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests opened

Weekly total

1580
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Mediapipe

GitHub API observation. Historical values render only when the source provides a real observation for that day.

144 observed daily rows. Missing days are not fabricated.

DateValue
OpenPose

GitHub API observation. Historical values render only when the source provides a real observation for that day.

144 observed daily rows. Missing days are not fabricated.

DateValue
OpenCV

GitHub API observation. Historical values render only when the source provides a real observation for that day.

36 observed daily rows. Missing days are not fabricated.

DateValue
tfjs-models

GitHub API observation. Historical values render only when the source provides a real observation for that day.

143 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests closed

Weekly total

1050
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

Mediapipe

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

144 observed daily rows. Missing days are not fabricated.

DateValue
OpenPose

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

144 observed daily rows. Missing days are not fabricated.

DateValue
OpenCV

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

36 observed daily rows. Missing days are not fabricated.

DateValue
tfjs-models

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

143 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests merged

Weekly total

110
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Mediapipe

GitHub API observation. Historical values render only when the source provides a real observation for that day.

144 observed daily rows. Missing days are not fabricated.

DateValue
OpenPose

GitHub API observation. Historical values render only when the source provides a real observation for that day.

144 observed daily rows. Missing days are not fabricated.

DateValue
OpenCV

GitHub API observation. Historical values render only when the source provides a real observation for that day.

36 observed daily rows. Missing days are not fabricated.

DateValue
tfjs-models

GitHub API observation. Historical values render only when the source provides a real observation for that day.

143 observed daily rows. Missing days are not fabricated.

DateValue

Open/closed pull request ratio

Weekly average

100500
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

Mediapipe

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
OpenPose

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
OpenCV

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

80 observed daily rows. Missing days are not fabricated.

DateValue
tfjs-models

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue

Open/closed issues ratio

Weekly average

100500
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

Mediapipe

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
OpenPose

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
OpenCV

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

80 observed daily rows. Missing days are not fabricated.

DateValue
tfjs-models

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue

Releases

Weekly total

110
Full metrics details

GitHub release published_at events bucketed by UTC day; drafts are excluded.

Mediapipe

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue
OpenPose

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue
OpenCV

GitHub release published_at events bucketed by UTC day; drafts are excluded.

80 observed daily rows. Missing days are not fabricated.

DateValue
tfjs-models

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue

Hotness score

Weekly average

100500
Full metrics details

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

Mediapipe

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
OpenPose

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
OpenCV

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

80 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
tfjs-models

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score

Reliability score

Weekly average

100500
Full metrics details

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

Mediapipe

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
OpenPose

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
OpenCV

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

80 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
tfjs-models

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score

If MediaPipe doesn't fit, here's where to look:

  • OpenPose is the classic multi-person pose estimator. It's accurate, but it needs a serious GPU, and its license restricts commercial use without a paid agreement — read it before building a product on it.
  • OpenCV is the general-purpose computer vision library. It won't hand you a pretrained hand tracker out of the box, but its DNN module runs public models and you control every pipeline stage.
  • tfjs-models packages browser-ready models for pose, face, and hand detection — overlapping scope with MediaPipe, but web-only.
  • InsightFace goes deeper on faces: recognition and identity, which MediaPipe's face tasks don't attempt.
  • PaddleDetection is a training-first detection and keypoint toolkit. Choose it when you must train custom models rather than consume pretrained ones.
Project Repo Hotness (~6mo) PRs merged (~6mo) Star growth (~6mo)
MediaPipe https://github.com/google/mediapipe 12.40 0 14954
OpenPose https://github.com/CMU-Perceptual-Computing-Lab/openpose 6.33 0 1460
OpenCV https://github.com/opencv/opencv 2.42 0 15221
tfjs-models https://github.com/tensorflow/tfjs-models metrics pending 0 9
InsightFace https://github.com/deepinsight/insightface metrics pending 0 186
PaddleDetection https://github.com/PaddlePaddle/PaddleDetection metrics pending 0 metrics pending

The best overall alternative is OpenCV: it's actively maintained, its documentation is mature, and it runs on every platform MediaPipe targets while leaving you in full control of the models you deploy.

Conclusion

If you're building a mobile or web app that needs real-time hand, pose, or face tracking, use MediaPipe — the pretrained Tasks API gets you a working prototype in an afternoon, and the same model bundles ship to production. Start with the official docs at ai.google.dev/edge/mediapipe and the Python quickstarts.

Do not build new code on the legacy mp.solutions API — it's in maintenance mode, its models no longer receive updates, and code written against it won't migrate cleanly to the Tasks API. Do this first: run pip install mediapipe, download the hand_landmarker.task bundle from the official model page, and run the hand landmarker quickstart end to end.

Join the conversation

Reviews · Questions · Posts

Share what you know about mediapipe — write a review from your real experience, ask an implementation question, or publish a post about how you use it.

Share your experience

Write or update your review

Explain what worked, what broke down, and what another team should know before adopting mediapipe.

Write your review now — it saves locally and publishes automatically after you sign in.

Rating
Positive attributes
Negative attributes

Project Q&A

Questions and answers

Browse implementation threads tied directly to google-ai-edge/mediapipe. Each question links through to the full answer page.

Q&A No threads yet

Be the first to ask how teams run mediapipe in production. Every question you post becomes a durable, searchable answer page other developers can find.

Ask the first question

Related posts

Posts tagged with the same topics

These posts come from the same topic surface as this repo, so readers can move from project evaluation into practical writeups and migration notes without leaving context.

Posts No topic-linked posts yet

Share how your team uses mediapipe — a migration note, an architecture writeup, or a comparison. Your post reaches everyone browsing these same topics.

Write the first post
Get a weekly email with the hottest new projects in the Blog Platforms and Blog world.
No Spam. Unsubscribe easily at any time.

Copyright 2018-2026 Awesome Open Source.  All rights reserved.