<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Piper on Linux Colorado</title><link>https://www.linuxcolorado.com/tags/piper/</link><description>Recent content in Piper on Linux Colorado</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sun, 09 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.linuxcolorado.com/tags/piper/index.xml" rel="self" type="application/rss+xml"/><item><title>Teaching the House to Announce the Mail Truck: A Zero-Shot CLIP Classifier on the Homelab</title><link>https://www.linuxcolorado.com/post/2026-08-17-mail-truck-clip-classifier/</link><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid>https://www.linuxcolorado.com/post/2026-08-17-mail-truck-clip-classifier/</guid><description>&lt;p&gt;I wanted my house to say, out loud, &amp;ldquo;the mail truck is out front&amp;rdquo; — the moment the USPS truck pulls up, spoken through the same Home Assistant TTS pipeline that runs the rest of the place. Not &amp;ldquo;a vehicle was detected.&amp;rdquo; Specifically the mail truck.&lt;/p&gt;
&lt;p&gt;The gap between those two sentences is the whole project. My NVR (&lt;a href="https://frigate.video"&gt;Frigate&lt;/a&gt;) is very good at &amp;ldquo;there&amp;rsquo;s a truck in the driveway zone&amp;rdquo; and completely incapable of &amp;ldquo;that&amp;rsquo;s a USPS LLV.&amp;rdquo; Closing that gap meant adding a small &lt;strong&gt;second-stage classifier&lt;/strong&gt; that looks at the snapshot Frigate already captured and decides &lt;em&gt;what kind&lt;/em&gt; of truck it is — running on hardware I already own, with no cloud vision API. It ended up as a &lt;strong&gt;zero-shot CLIP&lt;/strong&gt; classifier, and along the way it picked up a second job I never planned: catching the garbage truck too.&lt;/p&gt;</description></item></channel></rss>