summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/cnn_v2_test/index.html30
1 files changed, 25 insertions, 5 deletions
diff --git a/tools/cnn_v2_test/index.html b/tools/cnn_v2_test/index.html
index c112905..88c4733 100644
--- a/tools/cnn_v2_test/index.html
+++ b/tools/cnn_v2_test/index.html
@@ -723,11 +723,22 @@ class CNNTester {
const numLayers = view.getUint32(8, true);
const totalWeights = view.getUint32(12, true);
- this.log(`Binary header: version=${version}, layers=${numLayers}, weights=${totalWeights}`);
+ // Version 2: added mip_level field (20-byte header)
+ let mipLevel = 0;
+ let headerSize = 16;
+ if (version === 2) {
+ mipLevel = view.getUint32(16, true);
+ headerSize = 20;
+ this.log(`Binary header: version=${version}, layers=${numLayers}, weights=${totalWeights}, mip_level=${mipLevel}`);
+ } else if (version === 1) {
+ this.log(`Binary header: version=${version}, layers=${numLayers}, weights=${totalWeights}`);
+ } else {
+ throw new Error(`Unsupported binary version: ${version}`);
+ }
const layers = [];
for (let i = 0; i < numLayers; i++) {
- const offset = 16 + i * 20;
+ const offset = headerSize + i * 20;
const layer = {
kernelSize: view.getUint32(offset, true),
inChannels: view.getUint32(offset + 4, true),
@@ -739,7 +750,7 @@ class CNNTester {
this.log(` Layer ${i}: ${layer.inChannels}→${layer.outChannels}, kernel=${layer.kernelSize}×${layer.kernelSize}, weights=${layer.weightCount}`);
}
- const weightsOffset = 16 + numLayers * 20;
+ const weightsOffset = headerSize + numLayers * 20;
const weights = new Uint32Array(buffer.slice(weightsOffset));
// Calculate min/max per layer
@@ -769,7 +780,7 @@ class CNNTester {
}
this.log(` Weight buffer: ${weights.length} u32 (${nonZero} non-zero)`);
- return { layers, weights, fileSize: buffer.byteLength };
+ return { layers, weights, mipLevel, fileSize: buffer.byteLength };
}
unpackF16(packed) {
@@ -883,7 +894,15 @@ class CNNTester {
const buffer = await file.arrayBuffer();
this.weights = this.parseWeights(buffer);
this.weightsBuffer = buffer;
+ this.mipLevel = this.weights.mipLevel; // Set mip level from binary format
this.log(`Loaded weights: ${file.name} (${this.weights.layers.length} layers, ${(buffer.byteLength/1024).toFixed(1)} KB)`);
+
+ // Update UI dropdown to reflect loaded mip level
+ const mipLevelSelect = document.getElementById('mipLevel');
+ if (mipLevelSelect) {
+ mipLevelSelect.value = this.mipLevel.toString();
+ }
+
this.updateWeightsPanel();
if (this.image) {
this.setStatus(`Ready: ${this.image.width}×${this.image.height}`);
@@ -895,12 +914,13 @@ class CNNTester {
updateWeightsPanel() {
const panel = document.getElementById('weightsInfo');
- const { layers, fileSize } = this.weights;
+ const { layers, mipLevel, fileSize } = this.weights;
let html = `
<div style="margin-bottom: 12px;">
<div><strong>File Size:</strong> ${(fileSize / 1024).toFixed(2)} KB</div>
<div><strong>CNN Layers:</strong> ${layers.length}</div>
+ <div><strong>Mip Level:</strong> ${mipLevel} (p0-p3 features)</div>
<div style="font-size: 9px; color: #808080; margin-top: 4px;">Static features (input) + ${layers.length} conv layers</div>
</div>
<table>