From 59ba028e0124d408ede02f79567fa6b7b04d6775 Mon Sep 17 00:00:00 2001 From: 51hhh Date: Tue, 26 Aug 2025 09:47:04 +0800 Subject: [PATCH] =?UTF-8?q?[MF]=E7=BB=9F=E4=B8=80UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 3 + game/分类器.zip | Bin 0 -> 130276 bytes game/分类器/index.html | 456 +++++++++++- game/分类器/script.js | 43 +- game/橘子/index.html | 407 +++++++++++ game/橘子/script.js | 512 +++++++++++++ game/石头剪刀布/game.html | 1465 +++++++++++++++---------------------- game/钢琴/index.html | 1248 ++++++++++++++++--------------- 8 files changed, 2616 insertions(+), 1518 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 game/分类器.zip create mode 100644 game/橘子/index.html create mode 100644 game/橘子/script.js diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..6f3a291 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5501 +} \ No newline at end of file diff --git a/game/分类器.zip b/game/分类器.zip new file mode 100644 index 0000000000000000000000000000000000000000..13fedf0c47afe44ea7f3354b83e7d2aa04a4131e GIT binary patch literal 130276 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

9q*3g`TpSCcI(o<7??bFgniVe2LreLt(Zq$i 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

oDW(&BN^~ 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 DL<)l0 literal 0 HcmV?d00001 diff --git a/game/分类器/index.html b/game/分类器/index.html index ef65931..8c5ef96 100644 --- a/game/分类器/index.html +++ b/game/分类器/index.html @@ -3,7 +3,7 @@ - Web Serial KNN Classifier + Goood Space - Web Serial 实时分类器 @@ -11,41 +11,439 @@ -

-

📦 Web Serial 实时分类器

+
+

Goood Space

+

Web Serial 实时分类器

+
-
正在检查 Web Serial API 兼容性...
- - +
+ +
+

🔌 串口连接

+
正在检查 Web Serial API 兼容性...
+
+ + +
+
-
+ +
+

🧠 模型管理

+
正在加载 MobileNet 模型...
+
+ +
+
-
正在加载 MobileNet 和 KNN 模型...
- - -
+ +
+

📹 实时预测

+
+ + +
+
+ +
摄像头未启动
+
- - - - -
等待识别...
+ +
等待识别...
+
diff --git a/game/分类器/script.js b/game/分类器/script.js index 3d2f202..d188ceb 100644 --- a/game/分类器/script.js +++ b/game/分类器/script.js @@ -9,6 +9,7 @@ const STOP_WEBCAM_BTN = document.getElementById('stopWebcamBtn'); const MODEL_STATUS = document.getElementById('modelStatus'); const SERIAL_STATUS = document.getElementById('serialStatus'); const PREDICTION_OUTPUT = document.getElementById('prediction'); +const WEBCAM_STATUS_DISPLAY = document.getElementById('webcam-status-display'); // !!! ADDED !!! let mobilenet; // 这个变量将存储加载后的 MobileNet 模型实例 let knnClassifier; // 这个变量将存储 KNN 分类器实例 @@ -55,9 +56,18 @@ function updateSerialUI(isConnected) { } } +// !!! MODIFIED: Adjusted updateWebcamUI to use the new WEBCAM_STATUS_DISPLAY !!! function updateWebcamUI(isRunning) { START_WEBCAM_BTN.disabled = isRunning; STOP_WEBCAM_BTN.disabled = !isRunning; + if (isRunning) { + showStatus(WEBCAM_STATUS_DISPLAY, 'info', '摄像头已启动,等待模型预测...'); + PREDICTION_OUTPUT.classList.remove('idle', 'error'); // !!! ADDED !!! + } else { + showStatus(WEBCAM_STATUS_DISPLAY, 'info', '摄像头未启动'); + PREDICTION_OUTPUT.classList.add('idle'); // !!! ADDED !!! + PREDICTION_OUTPUT.textContent = '等待识别...'; // !!! ADDED !!! + } } function updateModelUI(isLoaded) { @@ -70,6 +80,7 @@ function updateModelUI(isLoaded) { // =================================== async function initModel() { showStatus(MODEL_STATUS, 'info', '正在加载 MobileNet 模型...'); + showStatus(WEBCAM_STATUS_DISPLAY, 'info', '系统初始化中...'); // !!! ADDED !!! try { // 确保 window.mobilenet 和 window.knnClassifier 库已加载 if (!window.mobilenet || !window.knnClassifier) { @@ -108,6 +119,7 @@ async function initModel() { } catch (error) { showStatus(MODEL_STATUS, 'error', `模型加载失败: ${error.message}`); + showStatus(WEBCAM_STATUS_DISPLAY, 'error', '模型加载失败'); // !!! ADDED !!! console.error('MobileNet/KNN加载失败:', error); } } @@ -328,6 +340,7 @@ async function loadKNNModel(jsonUrl = null, binUrl = null) { } catch (error) { showStatus(MODEL_STATUS, 'error', `加载 KNN 模型失败: ${error.message}`); + showStatus(WEBCAM_STATUS_DISPLAY, 'error', '模型加载失败'); // !!! ADDED !!! console.error('加载 KNN 模型总失败:', error); updateModelUI(false); // 重新抛出错误,以便 initModel 可以捕获 CDN 加载失败的情况 @@ -368,6 +381,7 @@ async function loadSingleJsonModel(modelData) { updateModelUI(true); } catch (error) { showStatus(MODEL_STATUS, 'error', `加载单文件JSON模型失败: ${error.message}`); + showStatus(WEBCAM_STATUS_DISPLAY, 'error', '模型加载失败'); // !!! ADDED !!! console.error('加载单文件JSON模型失败:', error); updateModelUI(false); throw error; // 重新抛出错误 @@ -401,11 +415,13 @@ async function startWebcam() { // =================================== isPredicting = true; predictLoop(); - showStatus(MODEL_STATUS, 'info', '摄像头已启动,开始实时预测...'); + showStatus(WEBCAM_STATUS_DISPLAY, 'success', `摄像头已运行,识别中...`); // !!! MODIFIED !!! + PREDICTION_OUTPUT.classList.remove('idle', 'error'); // !!! ADDED !!! }; } catch (error) { showStatus(MODEL_STATUS, 'error', `无法访问摄像头: ${error.message}`); + showStatus(WEBCAM_STATUS_DISPLAY, 'error', '无法启动摄像头'); // !!! MODIFIED !!! console.error('启动摄像头失败:', error); updateWebcamUI(false); } @@ -418,9 +434,8 @@ function stopWebcam() { } isPredicting = false; VIDEO.srcObject = null; - updateWebcamUI(false); - PREDICTION_OUTPUT.textContent = '等待识别...'; - showStatus(MODEL_STATUS, 'info', '摄像头已停止。'); + updateWebcamUI(false); // !!! MODIFIED !!! + showStatus(WEBCAM_STATUS_DISPLAY, 'info', '摄像头已停止'); // !!! MODIFIED !!! // =================================== // 停止摄像头时,清除任何待确认的命令,并发送“停止”或“复位”命令 @@ -455,10 +470,11 @@ async function predictLoop() { if (!knnClassifier || knnClassifier.getNumClasses() === 0) { features.dispose(); PREDICTION_OUTPUT.textContent = 'KNN 分类器未就绪或无数据。'; - commandCandidate = '0'; // 使用默认命令 + PREDICTION_OUTPUT.classList.add('error'); // !!! ADDED !!! + commandCandidate = '0'; } else { const prediction = await knnClassifier.predictClass(features, k); - features.dispose(); // 及时释放 Tensor 内存 + features.dispose(); if (prediction && prediction.confidences) { let maxConfidence = 0; @@ -473,33 +489,36 @@ async function predictLoop() { } }); - const confidenceThreshold = 0.75; // 75%置信度 + const confidenceThreshold = 0.75; if (predictedClassIndex !== -1 && maxConfidence > confidenceThreshold) { const className = classNames[predictedClassIndex] || `Class ${predictedClassIndex + 1}`; const percentage = (maxConfidence * 100).toFixed(1); PREDICTION_OUTPUT.textContent = `识别为: ${className} (${percentage}%)`; + PREDICTION_OUTPUT.classList.remove('idle', 'error'); // !!! MODIFIED !!! - // 根据类别设置本帧的候选命令 if (predictedClassIndex === 0) { commandCandidate = '1'; } else if (predictedClassIndex === 1) { commandCandidate = '2'; } else { - commandCandidate = '0'; // 未匹配到特定类别,或默认复位 + commandCandidate = '0'; } } else { PREDICTION_OUTPUT.textContent = `未知或不确定... (最高置信度: ${(maxConfidence * 100).toFixed(1)}%)`; - commandCandidate = '0'; // 不确定也发送'0'回退 + PREDICTION_OUTPUT.classList.add('idle'); // !!! MODIFIED !!! + commandCandidate = '0'; } } else { PREDICTION_OUTPUT.textContent = '无法识别。'; - commandCandidate = '0'; // 无法识别也发送 '0' 回退 + PREDICTION_OUTPUT.classList.add('error'); // !!! ADDED !!! + commandCandidate = '0'; } } } catch (error) { console.error('预测错误:', error); PREDICTION_OUTPUT.textContent = `预测错误: ${error.message}`; - commandCandidate = '0'; // 错误时也发送'0' + PREDICTION_OUTPUT.classList.add('error'); // !!! ADDED !!! + commandCandidate = '0'; } // ========================================================= diff --git a/game/橘子/index.html b/game/橘子/index.html new file mode 100644 index 0000000..adb1f81 --- /dev/null +++ b/game/橘子/index.html @@ -0,0 +1,407 @@ + + + + + + Goood Space - 实时分类器 + + + + + + + + + +
+

Goood Space

+

实时分类器

+
+ +
+ +
+

🧠 模型管理

+
正在加载 MobileNet 模型...
+
+ +
+
+ + +
+

📹 实时预测

+
+ + +
+
+ +
摄像头未启动
+
+ + +
等待识别...
+
+
+ + + + diff --git a/game/橘子/script.js b/game/橘子/script.js new file mode 100644 index 0000000..42ae5e3 --- /dev/null +++ b/game/橘子/script.js @@ -0,0 +1,512 @@ +// script.js + +const VIDEO = document.getElementById('webcam'); +// const CONNECT_SERIAL_BTN = document.getElementById('connectSerialBtn'); // REMOVED +// const DISCONNECT_SERIAL_BTN = document.getElementById('disconnectSerialBtn'); // REMOVED +const LOAD_MODEL_BTN = document.getElementById('loadModelBtn'); +const START_WEBCAM_BTN = document.getElementById('startWebcamBtn'); +const STOP_WEBCAM_BTN = document.getElementById('stopWebcamBtn'); +const MODEL_STATUS = document.getElementById('modelStatus'); +// const SERIAL_STATUS = document.getElementById('serialStatus'); // REMOVED +const PREDICTION_OUTPUT = document.getElementById('prediction'); +const WEBCAM_STATUS_DISPLAY = document.getElementById('webcam-status-display'); + +let mobilenet; +let knnClassifier; +let classNames = []; +let webcamStream = null; +let isPredicting = false; + +// REMOVED: Web Serial API variables +// let serialPort = null; +// let serialWriter = null; +// const SERIAL_BAUD_RATE = 9600; +// const SERIAL_SEND_MIN_INTERVAL = 500; +// let lastSerialCommand = ''; +// let lastSerialSendTime = 0; + +// REMOVED: Serial connection state variables +// let isSerialConnectedState = false; +// let lastSentClassCommand = null; + +// REMOVED: Confirmation sending logic variables +// let pendingCommandToSend = null; +// let pendingCommandTimerId = null; +// const CONFIRMATION_DELAY_MS = 100; + + +// =================================== +// Helper Functions (UI Status) +// =================================== +function showStatus(element, type, message) { + element.className = `status-message status-${type}`; + element.textContent = message; +} + +// REMOVED: updateSerialUI function +/* +function updateSerialUI(isConnected) { + CONNECT_SERIAL_BTN.disabled = isConnected; + DISCONNECT_SERIAL_BTN.disabled = !isConnected; + isSerialConnectedState = isConnected; + if (!isConnected) { + showStatus(SERIAL_STATUS, 'info', '串口未连接。点击 "连接串口" 开始。'); + } +} +*/ + +function updateWebcamUI(isRunning) { + START_WEBCAM_BTN.disabled = isRunning; + STOP_WEBCAM_BTN.disabled = !isRunning; + if (isRunning) { + showStatus(WEBCAM_STATUS_DISPLAY, 'info', '摄像头已启动,等待模型预测...'); + PREDICTION_OUTPUT.classList.remove('idle', 'error'); + } else { + showStatus(WEBCAM_STATUS_DISPLAY, 'info', '摄像头未启动'); + PREDICTION_OUTPUT.classList.add('idle'); + PREDICTION_OUTPUT.textContent = '等待识别...'; + } +} + +function updateModelUI(isLoaded) { + LOAD_MODEL_BTN.disabled = false; + START_WEBCAM_BTN.disabled = !isLoaded; +} + +// =================================== +// Core Logic: Model & Webcam +// =================================== +async function initModel() { + showStatus(MODEL_STATUS, 'info', '正在加载 MobileNet 模型...'); + showStatus(WEBCAM_STATUS_DISPLAY, 'info', '系统初始化中...'); + try { + if (!window.tf || !window.mobilenet || !window.knnClassifier) { // Added tf check + showStatus(MODEL_STATUS, 'error', 'TensorFlow.js 核心库或模型库未加载。请检查 HTML 引入。'); + console.error('TensorFlow.js 核心库或模型库未加载。'); + return; + } + + mobilenet = await window.mobilenet.load({ version: 2, alpha: 1.0 }); + knnClassifier = window.knnClassifier.create(); + showStatus(MODEL_STATUS, 'success', 'MobileNet 模型和 KNN 分类器已加载。'); + updateModelUI(false); + + const cdnModelBaseUrl = 'https://goood-space-assets.oss-cn-beijing.aliyuncs.com/public/models/'; + const cdnModelJsonFileName = 'knn-model-juzi.json'; + const cdnModelBinFileName = 'knn-model-juzi.bin'; + + const cdnJsonUrl = `${cdnModelBaseUrl}${cdnModelJsonFileName}`; + const cdnBinUrl = `${cdnModelBaseUrl}${cdnModelBinFileName}`; + + console.log(`尝试从 CDN 加载模型: ${cdnJsonUrl}, ${cdnBinUrl}`); + showStatus(MODEL_STATUS, 'info', '正在尝试从 CDN 自动加载 KNN 模型...'); + + try { + await loadKNNModel(cdnJsonUrl, cdnBinUrl); + console.log('CDN 模型自动加载成功。'); + } catch (cdnError) { + showStatus(MODEL_STATUS, 'warning', `从 CDN 加载 KNN 模型失败: ${cdnError.message}。您可以尝试手动加载。`); + console.warn('CDN KNN 模型加载失败:', cdnError); + updateModelUI(false); + } + + } catch (error) { + showStatus(MODEL_STATUS, 'error', `模型加载失败: ${error.message}`); + showStatus(WEBCAM_STATUS_DISPLAY, 'error', '模型加载失败'); + console.error('MobileNet/KNN加载失败:', error); + } +} + +async function getFeatures(img) { + if (!mobilenet) { + throw new Error("MobileNet model is not loaded."); + } + return tf.tidy(() => { + const embeddings = mobilenet.infer(img, true); + const norm = tf.norm(embeddings); + const normalized = tf.div(embeddings, norm); + return normalized; + }); +} + +// loadSingleJsonModel 保持不变 +async function loadSingleJsonModel(modelData) { + try { + knnClassifier.clearAllClasses(); + Object.keys(modelData.dataset).forEach(key => { + const data = modelData.dataset[key]; + const featureDim = modelData.featureDim || 1280; + if (data.length % featureDim !== 0) { + throw new Error(`类别 ${key} 的特征数据长度 ${data.length} 与特征维度 ${featureDim} 不匹配!`); + } + const numSamples = data.length / featureDim; + const tensor = tf.tensor(data, [numSamples, featureDim]); + knnClassifier.addExample(tensor, parseInt(key)); + tf.dispose(tensor); + }); + + if (modelData.classList && Array.isArray(modelData.classList)) { + classNames = modelData.classList.map(c => c.name); + } else if (modelData.classNames && Array.isArray(modelData.classNames)) { + classNames = modelData.classNames; + } else { + console.warn('模型JSON中未找到 classList/classNames 字段,使用默认类别名称。'); + classNames = Object.keys(modelData.dataset).map(key => `Class ${parseInt(key) + 1}`); + } + + showStatus(MODEL_STATUS, 'success', `模型 (单文件JSON格式) 加载成功!类别: ${classNames.join(', ')}。`); + updateModelUI(true); + } catch (error) { + showStatus(MODEL_STATUS, 'error', `加载单文件JSON模型失败: ${error.message}`); + showStatus(WEBCAM_STATUS_DISPLAY, 'error', '模型加载失败'); + console.error('加载单文件JSON模型失败:', error); + updateModelUI(false); + throw error; + } +} + + +async function loadKNNModel(jsonUrl = null, binUrl = null) { + if (!knnClassifier) { + showStatus(MODEL_STATUS, 'error', 'KNN 分类器未初始化。请先加载 MobileNet 模型。'); + return; + } + + let modelData = null; + let binData = null; + let modelName = '未知模型'; + + try { + if (jsonUrl && binUrl) { + showStatus(MODEL_STATUS, 'info', `正在从 CDN 加载模型配置文件 (${jsonUrl})...`); + const jsonResponse = await fetch(jsonUrl); + if (!jsonResponse.ok) { + throw new Error(`无法从 ${jsonUrl} 加载.json文件: ${jsonResponse.statusText}`); + } + modelData = await jsonResponse.json(); + modelName = jsonUrl.split('/').pop(); + + showStatus(MODEL_STATUS, 'info', `正在从 CDN 加载模型权重 (${binUrl})...`); + const binResponse = await fetch(binUrl); + if (!binResponse.ok) { + throw new Error(`无法从 ${binUrl} 加载.bin文件: ${binResponse.statusText}`); + } + const arrayBuffer = await binResponse.arrayBuffer(); + binData = new Float32Array(arrayBuffer); + + if (modelData.dataFile && !binUrl.endsWith(modelData.dataFile)) { + console.warn(`CDN 加载警告:.bin URL (${binUrl}) 与 .json 中定义的 dataFile (${modelData.dataFile}) 不匹配。继续加载。`); + } + + } else { + const inputJson = document.createElement('input'); + inputJson.type = 'file'; + inputJson.accept = '.json'; + inputJson.multiple = false; + + showStatus(MODEL_STATUS, 'info', '请先选择 KNN 模型配置文件 (.json)...'); + + await new Promise((resolve, reject) => { + inputJson.onchange = async (e) => { + const jsonFile = e.target.files[0]; + if (!jsonFile) { + showStatus(MODEL_STATUS, 'info', '未选择 .json 文件。'); + updateModelUI(false); + return reject(new Error('No JSON file selected.')); + } + + showStatus(MODEL_STATUS, 'info', `正在解析 ${jsonFile.name}...`); + modelName = jsonFile.name; + + try { + const reader = new FileReader(); + const jsonText = await new Promise((res, rej) => { + reader.onload = () => res(reader.result); + reader.onerror = () => rej(reader.error); + reader.readAsText(jsonFile); + }); + modelData = JSON.parse(jsonText); + + if (!modelData.dataFile) { + console.warn('模型JSON文件不包含 "dataFile" 字段,尝试以旧的单文件JSON格式加载。'); + await loadSingleJsonModel(modelData); + return resolve(); + } + + } catch (error) { + showStatus(MODEL_STATUS, 'error', `解析 .json 文件失败: ${error.message}`); + console.error('解析 .json 失败:', error); + updateModelUI(false); + return reject(error); + } + + const inputBin = document.createElement('input'); + inputBin.type = 'file'; + inputBin.accept = '.bin'; + inputBin.multiple = false; + + showStatus(MODEL_STATUS, 'info', `已加载 .json 文件。请选择对应的权重文件 "${modelData.dataFile}" (.bin)...`); + + inputBin.onchange = async (eBin) => { + const binFile = eBin.target.files[0]; + if (!binFile) { + showStatus(MODEL_STATUS, 'info', '未选择 .bin 文件。'); + updateModelUI(false); + return reject(new Error('No BIN file selected.')); + } + + if (binFile.name !== modelData.dataFile) { + showStatus(MODEL_STATUS, 'error', `选择的 .bin 文件名 "${binFile.name}" 与 .json 中定义的 "${modelData.dataFile}" 不匹配!请选择正确的文件。`); + updateModelUI(false); + return reject(new Error('BIN file name mismatch.')); + } + + showStatus(MODEL_STATUS, 'info', `正在读取 ${binFile.name} (二进制权重文件)...`); + try { + const reader = new FileReader(); + const arrayBuffer = await new Promise((res, rej) => { + reader.onload = () => res(reader.result); + reader.onerror = () => rej(reader.error); + reader.readAsArrayBuffer(binFile); + }); + binData = new Float32Array(arrayBuffer); + resolve(); + } catch (error) { + showStatus(MODEL_STATUS, 'error', `读取 .bin 文件失败: ${error.message}`); + console.error('读取 .bin 失败:', error); + updateModelUI(false); + return reject(error); + } + }; + inputBin.click(); + }; + inputJson.click(); + }); + } + + if (!modelData) { + return; + } + + if (modelData && binData) { + knnClassifier.clearAllClasses(); + + Object.keys(modelData.dataset).forEach(label => { + const classDataMeta = modelData.dataset[label]; + const startFloat32ElementIndex = classDataMeta.start; + const numFloat32Elements = classDataMeta.length; + + const featureDim = modelData.featureDim || 1280; + + if (startFloat32ElementIndex + numFloat32Elements > binData.length) { + throw new Error(`模型数据错误: 类别 ${label} 的数据超出 .bin 文件范围。`); + } + + const classFeatures = binData.subarray(startFloat32ElementIndex, startFloat32ElementIndex + numFloat32Elements); + + if (classFeatures.length === 0) { + console.warn(`类别 ${label} 没有找到特征数据,跳过。`); + return; + } + + if (classFeatures.length % featureDim !== 0) { + const actualSamples = classFeatures.length / featureDim; + console.error( + `--- 类别: ${label} ---`, + `起始 Float32 元素索引: ${startFloat32ElementIndex}`, + `该类别 Float32 元素数量: ${numFloat32Elements}`, + `ERROR: 特征数据长度 (${classFeatures.length} 个 Float32 元素) 与特征维度 (${featureDim}) 不匹配!` + + `实际样本数计算为 ${actualSamples} (预期为整数)。`, + `请检查您的模型导出逻辑和训练数据的完整性。` + ); + throw new Error("模型数据完整性错误:特征数据长度与维度不匹配。"); + } + + const numSamples = classFeatures.length / featureDim; + + for (let i = 0; i < numSamples; i++) { + const startIndex = i * featureDim; + const endIndex = (i + 1) * featureDim; + const sampleFeatures = classFeatures.subarray(startIndex, endIndex); + + const sampleTensor = tf.tensor(sampleFeatures, [1, featureDim]); + + knnClassifier.addExample(sampleTensor, parseInt(label)); + tf.dispose(sampleTensor); + } + }); + + if (modelData.classList && Array.isArray(modelData.classList)) { + classNames = modelData.classList.map(c => c.name); + } else { + console.warn('模型JSON中未找到 classList 字段或格式不正确,使用默认类别名称。'); + classNames = Object.keys(modelData.dataset).map(key => `Class ${parseInt(key) + 1}`); + } + + showStatus(MODEL_STATUS, 'success', `KNN 模型 "${modelName}" 加载成功!类别: ${classNames.join(', ')}。`); + updateModelUI(true); + + } else if (modelData && !binData && !jsonUrl) { + showStatus(MODEL_STATUS, 'error', '未知模型加载状态:仅有 JSON 数据,没有 BIN 数据。'); + updateModelUI(false); + } + + } catch (error) { + showStatus(MODEL_STATUS, 'error', `加载 KNN 模型失败: ${error.message}`); + showStatus(WEBCAM_STATUS_DISPLAY, 'error', '模型加载失败'); + console.error('加载 KNN 模型总失败:', error); + updateModelUI(false); + throw error; + } +} + + +async function startWebcam() { + if (webcamStream) return; + + if (!knnClassifier || knnClassifier.getNumClasses() === 0) { + showStatus(MODEL_STATUS, 'error', '请先加载训练好的模型!'); + return; + } + + try { + const stream = await navigator.mediaDevices.getUserMedia({ video: { facingMode: 'user' }, audio: false }); + VIDEO.srcObject = stream; + webcamStream = stream; + updateWebcamUI(true); + + VIDEO.onloadeddata = () => { + // REMOVED: Serial related state resets + isPredicting = true; + predictLoop(); + showStatus(WEBCAM_STATUS_DISPLAY, 'success', `摄像头已运行,识别中...`); + PREDICTION_OUTPUT.classList.remove('idle', 'error'); + }; + + } catch (error) { + showStatus(MODEL_STATUS, 'error', `无法访问摄像头: ${error.message}`); + showStatus(WEBCAM_STATUS_DISPLAY, 'error', '无法启动摄像头'); + console.error('启动摄像头失败:', error); + updateWebcamUI(false); + } +} + +function stopWebcam() { + if (webcamStream) { + webcamStream.getTracks().forEach(track => track.stop()); + webcamStream = null; + } + isPredicting = false; + VIDEO.srcObject = null; + updateWebcamUI(false); + showStatus(WEBCAM_STATUS_DISPLAY, 'info', '摄像头已停止'); + + // REMOVED: Serial related state resets + // If there were any non-serial resource cleanup here, it would be moved. +} + +// REMOVED: Serial confirmation logic variables and functions +// predictLoop will be simplified to just predict and update UI. +let currentDetectedClassLabel = '等待识别...'; // For displaying the current prediction. + +async function predictLoop() { + if (!isPredicting) return; + + if (VIDEO.readyState === 4 && VIDEO.videoWidth > 0 && VIDEO.videoHeight > 0) { + try { + const features = await getFeatures(VIDEO); + const k = 3; + + if (!knnClassifier || knnClassifier.getNumClasses() === 0) { + features.dispose(); + PREDICTION_OUTPUT.textContent = 'KNN 分类器未就绪或无数据。'; + PREDICTION_OUTPUT.classList.add('error'); + currentDetectedClassLabel = '模型未就绪'; + } else { + const prediction = await knnClassifier.predictClass(features, k); + features.dispose(); + + if (prediction && prediction.confidences) { + let maxConfidence = 0; + let predictedClassIndex = -1; + + const confidencesArray = Object.entries(prediction.confidences).map(([key, value]) => ({ index: parseInt(key), confidence: value })); + + confidencesArray.forEach(({ index, confidence }) => { + if (confidence > maxConfidence) { + maxConfidence = confidence; + predictedClassIndex = index; + } + }); + + const confidenceThreshold = 0.75; + if (predictedClassIndex !== -1 && maxConfidence > confidenceThreshold) { + const className = classNames[predictedClassIndex] || `Class ${predictedClassIndex + 1}`; + const percentage = (maxConfidence * 100).toFixed(1); + PREDICTION_OUTPUT.textContent = `识别为: ${className} (${percentage}%)`; + PREDICTION_OUTPUT.classList.remove('idle', 'error'); + currentDetectedClassLabel = className; + + // Original logic had commandCandidate = '1', '2', '0' etc. + // Since serial is removed, this part is now purely for UI display. + } else { + PREDICTION_OUTPUT.textContent = `未知或不确定... (最高置信度: ${(maxConfidence * 100).toFixed(1)}%)`; + PREDICTION_OUTPUT.classList.add('idle'); + currentDetectedClassLabel = '未知或不确定'; + } + } else { + PREDICTION_OUTPUT.textContent = '无法识别。'; + PREDICTION_OUTPUT.classList.add('error'); + currentDetectedClassLabel = '无法识别'; + } + } + } catch (error) { + console.error('预测错误:', error); + PREDICTION_OUTPUT.textContent = `预测错误: ${error.message}`; + PREDICTION_OUTPUT.classList.add('error'); + currentDetectedClassLabel = `错误: ${error.message}`; + } + } + requestAnimationFrame(predictLoop); +} + + +// REMOVED: Web Serial API Logic and Event Listeners +/* +async function checkWebSerialCompatibility() { ... } +async function connectSerial() { ... } +async function disconnectSerial() { ... } +async function sendToSerialPort(command) { ... } +CONNECT_SERIAL_BTN.addEventListener('click', connectSerial); +DISCONNECT_SERIAL_BTN.addEventListener('click', disconnectSerial); +*/ + +// =================================== +// Event Listeners (Simplified) +// =================================== +LOAD_MODEL_BTN.addEventListener('click', () => loadKNNModel(null, null)); +START_WEBCAM_BTN.addEventListener('click', startWebcam); +STOP_WEBCAM_BTN.addEventListener('click', stopWebcam); + +// =================================== +// Initialization (Simplified) +// =================================== +document.addEventListener('DOMContentLoaded', () => { + // REMOVED: checkWebSerialCompatibility(); + initModel(); +}); + +// Added cleanup for TensorFlow.js on window close/reload +window.onbeforeunload = () => { + if (animationFrameId) { + cancelAnimationFrame(animationFrameId); + } + if (mobilenet) { + // mobilenet.dispose(); // MobileNet is part of TF.js, tf.disposeAll() handles it + } + if (knnClassifier) { + knnClassifier.clearAllClasses(); + } + tf.disposeAll(); + console.log('Resources cleaned up (tf.disposeAll()).'); +}; diff --git a/game/石头剪刀布/game.html b/game/石头剪刀布/game.html index 8b1a365..ef722c6 100644 --- a/game/石头剪刀布/game.html +++ b/game/石头剪刀布/game.html @@ -3,9 +3,8 @@ - AI剪刀石头布 + Goood Space - AI 石头剪刀布 - + + - - - + + + - - - -
- -
- - -
-
等待摄像头启动...
-
- - -
-
-
-
等待识别...
-
- - -
-

手势分类映射

- -
分类0 (未加载) → 石头 ✊
-
分类1 (未加载) → 剪刀 ✌️
-
分类2 (未加载) → 布 ✋
-
- - -
-
胜利: 0
-
失败: 0
-
平局: 0
-
- - -
-
AI
-
-
- - -
-
玩家
-
- -
- - -
- -
+
+

Goood Space

+

AI 石头剪刀布对战

- -
- - -
+
+
+
+ + +
正在初始化系统...
+
+
- -
-
3
-
+
+
+
+ 你的得分 + 0 +
+
+ AI得分 + 0 +
+
- -
-
WIN
- +
+
准备开始游戏
+ +
+
+ +
+ + + + +
+ +
+

游戏说明

+
    +
  • ✊ 石头 - 握拳手势
  • +
  • ✋ 布 - 张开手掌
  • +
  • ✌️ 剪刀 - 比V手势
  • +
  • 确保手部在摄像头画面中清晰可见
  • +
  • 系统将自动识别您的手势并与AI对战
  • +
+
+
- + \ No newline at end of file diff --git a/game/钢琴/index.html b/game/钢琴/index.html index 697016b..34ff846 100644 --- a/game/钢琴/index.html +++ b/game/钢琴/index.html @@ -3,7 +3,7 @@ - AI 空气钢琴 - 手势控制 + Goood Space - AI 空气钢琴 - + - - - - + + + -

AI 空气钢琴

-

通过手势弹奏虚拟钢琴!

+
+

Goood Space

+

AI 空气钢琴

+

通过手势弹奏虚拟钢琴!

+
-
- -
- - -
正在加载模型,请稍候...
+
+
+
+ + +
正在加载模型,请稍候...
+
- -
+
-

模型管理

+

🎹 钢琴键盘

+
+
+ C +
+
+ D +
+
+ E +
+
+ F +
+
+ G +
+
+ A +
+
+ B +
+
+ C′ +
+
+
+ +
+

🎮 演奏控制

-
- -
-

演奏控制

-
- 实时手势: - 未识别 -
-
- 置信度: - 0% -
-
- 当前演奏音符: - + +
+
+ 实时手势: + 未识别 +
+
+ 置信度: + 0% +
+ +
🎵 无
-

音符映射

-

请确保您的手势分类与音符对应:

-
    - -
  • ID 0: 中央C (C4) → 音段 1
  • -
  • ID 1: D4 → 音段 2
  • -
  • ID 2: E4 → 音段 3
  • -
  • ID 3: F4 → 音段 4
  • -
  • ID 4: G4 → 音段 5
  • -
  • ID 5: A4 → 音段 6
  • -
  • ID 6: B4 → 音段 7
  • -
  • ID 7: 高音C (C5) → 音段 8
  • -
+

📋 音符映射

+
+
    +
  • ID 0: 中央C (C2)
  • +
  • ID 1: D2
  • +
  • ID 2: E2
  • +
  • ID 3: F2
  • +
  • ID 4: G2
  • +
  • ID 5: A2
  • +
  • ID 6: B2
  • +
  • ID 7: 高音C (C3)
  • +
+
- + - + \ No newline at end of file