<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Machine-Learning on Mulham Fetna</title>
    <link>https://mulhamfetna.com/tags/machine-learning/</link>
    <description>Recent content in Machine-Learning on Mulham Fetna</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>contact@mulhamfetna.com (Mulham Fetna)</managingEditor>
    <webMaster>contact@mulhamfetna.com (Mulham Fetna)</webMaster>
    <copyright>© 2026 Mulham Fetna</copyright>
    <lastBuildDate>Tue, 08 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://mulhamfetna.com/tags/machine-learning/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>How MediaPipe sees a hand — and exactly where it fails</title>
      <link>https://mulhamfetna.com/projects/ros2-mediapipe-robotic-hand-digital-twin-vision-teleoperation/mediapipe/</link>
      <pubDate>Tue, 08 Sep 2026 00:00:00 +0000</pubDate>
      <author>contact@mulhamfetna.com (Mulham Fetna)</author>
      <guid>https://mulhamfetna.com/projects/ros2-mediapipe-robotic-hand-digital-twin-vision-teleoperation/mediapipe/</guid>
      <description>&lt;div class=&#34;lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl&#34;&gt;&#xA;  Twenty-one points, thirty frames a second, on a CPU, from a flat RGB image with no depth&#xA;information. This is how that is possible — and the four failure modes you will meet the first&#xA;time you rely on it.&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Every vision-driven robotics project has a moment where the camera stops being a camera and starts&#xA;being a sensor. For this one, that moment is MediaPipe Hands: a webcam frame goes in, and 21&#xA;numbered points in space come out.&lt;/p&gt;&#xA;&lt;p&gt;It is easy to treat that as a black box. It is also a mistake, because the box has a specific&#xA;shape, and its failure modes follow directly from how it was built.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;It is two networks, not one&#xA;    &lt;div id=&#34;it-is-two-networks-not-one&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#it-is-two-networks-not-one&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The single most useful thing to know about MediaPipe Hands is that it is a &lt;strong&gt;cascade&lt;/strong&gt;: a detector&#xA;and a regressor, with completely different jobs.&lt;/p&gt;&#xA;&lt;pre class=&#34;not-prose mermaid&#34;&gt;&#xA;flowchart TB&#xA;    A[&#34;📷 Full frame&lt;br&gt;e.g. 640 × 480&#34;] --&gt; B[&#34;Stage 1 — BlazePalm&lt;br&gt;SSD detector&#34;]&#xA;    B --&gt; C[&#34;Oriented palm crop&lt;br&gt;256 × 256&#34;]&#xA;    C --&gt; D[&#34;Stage 2 — Landmark regressor&lt;br&gt;MobileNetV2-style encoder&#34;]&#xA;    D --&gt; E[&#34;63 floats&lt;br&gt;21 landmarks × (x, y, z)&#34;]&#xA;    D --&gt; F[&#34;Presence score&#34;]&#xA;    D --&gt; G[&#34;Handedness&lt;br&gt;left / right&#34;]&#xA;    F --&gt;|&#34;confidence ≥ 0.5&#34;| C&#xA;    F --&gt;|&#34;confidence &lt; 0.5&#34;| B&#xA;&lt;/pre&gt;&#xA;&#xA;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;auto&#34;&#xA;    alt=&#34;The MediaPipe landmark skeleton overlaid on a hand in the tracker&amp;rsquo;s preview window&#34;&#xA;    width=&#34;800&#34;&#xA;    height=&#34;700&#34;&#xA;    src=&#34;https://mulhamfetna.com/projects/ros2-mediapipe-robotic-hand-digital-twin-vision-teleoperation/mediapipe/mediapipe-landmarks.png&#34;&#xA;    srcset=&#34;https://mulhamfetna.com/projects/ros2-mediapipe-robotic-hand-digital-twin-vision-teleoperation/mediapipe/mediapipe-landmarks.png 800w, https://mulhamfetna.com/projects/ros2-mediapipe-robotic-hand-digital-twin-vision-teleoperation/mediapipe/mediapipe-landmarks.png 1280w&#34;&#xA;    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;&#xA;    data-zoom-src=&#34;https://mulhamfetna.com/projects/ros2-mediapipe-robotic-hand-digital-twin-vision-teleoperation/mediapipe/mediapipe-landmarks.png&#34;&gt;&lt;figcaption&gt;The regressor&amp;rsquo;s output, drawn back onto the frame: 21 points and the connections between them.&lt;/figcaption&gt;&lt;/figure&gt;&#xA;&#xA;&lt;h3 class=&#34;relative group&#34;&gt;Stage 1 — BlazePalm detects palms, never fingers&#xA;    &lt;div id=&#34;stage-1--blazepalm-detects-palms-never-fingers&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#stage-1--blazepalm-detects-palms-never-fingers&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h3&gt;&#xA;&lt;p&gt;This is the design decision the whole system rests on.&lt;/p&gt;</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://mulhamfetna.com/projects/ros2-mediapipe-robotic-hand-digital-twin-vision-teleoperation/mediapipe/featured.png" />
    </item>
    
  </channel>
</rss>
