From bf8c088763eda14ff269f2152f1ff806bc545c90 Mon Sep 17 00:00:00 2001 From: skal Date: Fri, 13 Feb 2026 15:31:41 +0100 Subject: CNN v2 web tool: Major UI redesign with three-panel layout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UI Changes: - Three-panel layout: left (weights), center (canvas), right (activations) - Left sidebar: clickable weights drop zone, weights info, kernel visualization - Right sidebar: 4 small activation views + large 4× zoom view - Controls moved to header (inline with title) Weights Visualization: - Dedicated panel in left sidebar with layer buttons - 1 pixel per weight (was 20px) - All input channels horizontal, output channels stacked vertically - Renders to separate canvas (not in activation grid) Activation Viewer: - 4 channels in horizontal row (was 2×2 grid) - Mouse-driven zoom view below (32×32 area at 4× magnification) - Zoom shows all 4 channels in 2×2 quadrant layout - Removed activations/weights mode toggle State Preservation: - Blend changes preserve selected layer/channel - Fixed activation view reset bug Documentation: - Updated README with new layout and feature descriptions - Marked implemented features (weights viz, layer viewer) - Updated size estimates (~22 KB total) Co-Authored-By: Claude Sonnet 4.5 --- tools/cnn_v2_test/index.html | 403 ++++++++++++++++++++++++++++--------------- 1 file changed, 265 insertions(+), 138 deletions(-) (limited to 'tools/cnn_v2_test/index.html') diff --git a/tools/cnn_v2_test/index.html b/tools/cnn_v2_test/index.html index 91f7942..cc045f1 100644 --- a/tools/cnn_v2_test/index.html +++ b/tools/cnn_v2_test/index.html @@ -37,8 +37,12 @@ background: #2a2a2a; padding: 16px; border-bottom: 1px solid #404040; + display: flex; + align-items: center; + gap: 24px; + flex-wrap: wrap; } - h1 { font-size: 18px; margin-bottom: 12px; } + h1 { font-size: 18px; } .controls { display: flex; gap: 16px; @@ -60,7 +64,8 @@ cursor: pointer; transition: all 0.2s; font-size: 12px; - margin-top: 12px; + background: #1a1a1a; + border-radius: 4px; } .drop-zone:hover { border-color: #606060; background: #252525; } .drop-zone.active { border-color: #4a9eff; background: #1a2a3a; } @@ -69,6 +74,17 @@ flex: 1; display: flex; overflow: hidden; + gap: 1px; + background: #404040; + } + .left-sidebar { + width: 300px; + background: #2a2a2a; + overflow-y: auto; + display: flex; + flex-direction: column; + gap: 16px; + padding: 16px; } .main { flex: 1; @@ -78,6 +94,7 @@ padding: 24px; overflow: auto; position: relative; + background: #1a1a1a; } .main.drop-active::after { content: 'Drop PNG image here'; @@ -94,9 +111,8 @@ z-index: 10; } .sidebar { - width: 350px; + width: 400px; background: #2a2a2a; - border-left: 1px solid #404040; overflow-y: auto; display: flex; flex-direction: column; @@ -175,8 +191,9 @@ } .layer-grid { display: grid; - grid-template-columns: 1fr 1fr; - gap: 8px; + grid-template-columns: repeat(4, 1fr); + gap: 4px; + margin-bottom: 12px; } .layer-view { aspect-ratio: 1; @@ -186,6 +203,18 @@ flex-direction: column; overflow: hidden; } + .layer-zoom { + background: #1a1a1a; + border: 1px solid #404040; + display: flex; + flex-direction: column; + overflow: hidden; + } + .layer-zoom canvas { + width: 100%; + height: 100%; + image-rendering: pixelated; + } .layer-view-label { background: #2a2a2a; padding: 4px; @@ -252,9 +281,27 @@ CNN Output -
Drop .bin Weights
+
@@ -265,14 +312,6 @@

Load image + weights

-
-
- Weights Info -
-
-

No weights loaded

-
-