<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hot spots on Boris Dupoux</title><link>https://borisdupoux.com/tags/hot-spots/</link><description>Recent content in Hot spots on Boris Dupoux</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Thu, 20 Mar 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://borisdupoux.com/tags/hot-spots/index.xml" rel="self" type="application/rss+xml"/><item><title>Thermal Anomalies on Solar Panels from Drone Orthophotos</title><link>https://borisdupoux.com/research/pv-panel-anomalies/</link><pubDate>Thu, 20 Mar 2025 00:00:00 +0000</pubDate><guid>https://borisdupoux.com/research/pv-panel-anomalies/</guid><description>&lt;h2 id="whats-original"&gt;&lt;a href="#whats-original" class="header-anchor"&gt;&lt;/a&gt;What&amp;rsquo;s original
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Relative, not absolute.&lt;/strong&gt; Each panel is compared with itself first: cells on one panel share the same sun, angle and wind, so a local deviation says more than a raw value.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Labels without hand drawing.&lt;/strong&gt; The training polygons come from a classical contour pipeline, then each panel is turned into several rotated and sheared views so the model ignores orientation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Masks, not boxes.&lt;/strong&gt; The model outlines each panel to the pixel, so the statistics exclude the ground between rows, which can be much warmer or colder than the panels.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="how-it-works"&gt;&lt;a href="#how-it-works" class="header-anchor"&gt;&lt;/a&gt;How it works
&lt;/h2&gt;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart TB
 A["Thermal drone orthophoto"] --&gt; B["Classical contour pipeline"]
 B --&gt; C["Automatic panel labels&lt;br/&gt;several views each"]
 C --&gt; D["YOLO segmentation model&lt;br/&gt;one class: solar panel"]
 A --&gt; E["Tiled inference&lt;br/&gt;over the whole orthophoto"]
 D --&gt; E
 E --&gt; F["One mask and crop per panel"]
 F --&gt; G["Per-panel grey-level statistics"]
 G --&gt; H["Hot-spot candidates&lt;br/&gt;(prototype)"]
 G -.-&gt; I["Cold zones&lt;br/&gt;(objective)"]
 G -.-&gt; J["Panel vs neighbours&lt;br/&gt;(objective)"]&lt;/pre&gt;&lt;p&gt;A drone flight turns the plant into one thermal orthophoto. Hot spots usually point to faulty cells, bypass diodes or soiling; cold zones to shading, reflections or modules not working like their neighbours. The model finds every panel on overlapping tiles of the orthophoto, and a per-panel step flags pixels well above the panel&amp;rsquo;s own level. Dotted arrows are objectives.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Thermal orthophoto detail with panels outlined in blue and flagged hot-spot peaks marked by dots" class="gallery-image" data-flex-basis="265px" data-flex-grow="110" height="776" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://borisdupoux.com/research/pv-panel-anomalies/pv-hotspot-prototype.jpg" srcset="https://borisdupoux.com/research/pv-panel-anomalies/pv-hotspot-prototype_hu_94a830cea75f498c.jpg 800w, https://borisdupoux.com/research/pv-panel-anomalies/pv-hotspot-prototype.jpg 859w" width="859"&gt;
&lt;em&gt;Hot-spot prototype on a detail of the orthophoto: panel outlines (blue) and flagged peaks (dots). Not checked against field inspection.&lt;/em&gt;&lt;/p&gt;
&lt;p class="bd-sources"&gt;&lt;span class="bd-sources-label"&gt;Sources:&lt;/span&gt; one thermal drone orthophoto, 2025 · illustration from a project presentation&lt;/p&gt;

&lt;p&gt;&lt;img alt="Four training tiles showing the same solar panel table with its label polygon in orange: plain, rotated, sheared, and rotated plus sheared; in the last one the polygon does not follow the panel" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="1296" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://borisdupoux.com/research/pv-panel-anomalies/pv-training-tiles.jpg" srcset="https://borisdupoux.com/research/pv-panel-anomalies/pv-training-tiles_hu_44a942e53d44934f.jpg 800w, https://borisdupoux.com/research/pv-panel-anomalies/pv-training-tiles.jpg 1296w" width="1296"&gt;
&lt;em&gt;Four views generated from one automatically labelled panel. In the last view the label is not rotated with the image, a bug found on inspection.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="results"&gt;&lt;a href="#results" class="header-anchor"&gt;&lt;/a&gt;Results
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;A YOLO segmentation model fine-tuned on automatically labelled panels, and a tiled inference step that returns one crop per panel over a full orthophoto.&lt;/li&gt;
&lt;li&gt;A per-panel hot-spot prototype that normalises each panel by its own grey level and marks candidate peaks.&lt;/li&gt;
&lt;li&gt;Two side tracks explored for finding panels without training: straight-line grouping and Segment Anything.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="evidence--limits"&gt;&lt;a href="#evidence--limits" class="header-anchor"&gt;&lt;/a&gt;Evidence &amp;amp; limits
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No performance reported.&lt;/strong&gt; The training and evaluation results stay on the compute machine and are not available; neither panel localisation nor hot-spot detection has been scored or checked in the field.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Labels and split are weak.&lt;/strong&gt; Labels inherit the classical pipeline&amp;rsquo;s misses; the views of one panel fall in several splits, and training, validation and test all come from a single orthophoto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grey levels, not temperatures.&lt;/strong&gt; The orthophoto is an uncalibrated greyscale export, so thresholds depend on the colour scale chosen at export.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Thermal step is a prototype.&lt;/strong&gt; Only hot spots are flagged, on the prototype&amp;rsquo;s own outlines rather than the YOLO masks; cold zones and neighbour comparison are not implemented.&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;Technical details&lt;/summary&gt;
&lt;p&gt;&lt;strong&gt;Next steps.&lt;/strong&gt; Regenerate the mislabelled rotated-and-sheared views, label every panel in each tile, split by panel and test on held-out sites; mask no-data areas and merge masks rather than boxes at tile edges; run the thermal statistics inside the YOLO masks, add a robust cold-zone test and compare each panel with its row.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Side tracks.&lt;/strong&gt; Grouping straight Hough segments into parallelograms, and Segment Anything on tiles, were tried as label-free ways to find panels.&lt;/p&gt;
&lt;p&gt;&lt;img alt="A detail of the orthophoto with solar panel tables in rows; many tables are outlined in green by the classical contour pipeline, others are not" class="gallery-image" data-flex-basis="384px" data-flex-grow="160" height="1000" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://borisdupoux.com/research/pv-panel-anomalies/pv-classical-polygons.jpg" srcset="https://borisdupoux.com/research/pv-panel-anomalies/pv-classical-polygons_hu_4718c5694ce8fee.jpg 800w, https://borisdupoux.com/research/pv-panel-anomalies/pv-classical-polygons.jpg 1600w" width="1600"&gt;
&lt;em&gt;The classical contour pipeline: polygons like these became the training labels. Some tables have none, so the model can only learn what the pipeline found.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="A detail of a second orthophoto in which Segment Anything has outlined most panel tables in blue; straight lines mark the tile boundaries" class="gallery-image" data-flex-basis="384px" data-flex-grow="160" height="1000" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://borisdupoux.com/research/pv-panel-anomalies/pv-sam-contours.jpg" srcset="https://borisdupoux.com/research/pv-panel-anomalies/pv-sam-contours_hu_4247b8e8fca147b6.jpg 800w, https://borisdupoux.com/research/pv-panel-anomalies/pv-sam-contours.jpg 1600w" width="1600"&gt;
&lt;em&gt;Side track: Segment Anything outlines most tables without training, but leaves seams at tile edges and contours on the road and ground.&lt;/em&gt;&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id="stack"&gt;&lt;a href="#stack" class="header-anchor"&gt;&lt;/a&gt;Stack
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Python&lt;/code&gt; · &lt;code&gt;OpenCV&lt;/code&gt; · &lt;code&gt;NumPy&lt;/code&gt; · &lt;code&gt;Ultralytics YOLO&lt;/code&gt; · &lt;code&gt;PyTorch&lt;/code&gt; · &lt;code&gt;Segment Anything&lt;/code&gt;&lt;/p&gt;</description></item></channel></rss>