轻量级人脸签到系统:离线单帧识别与状态机驱动的毕设方案
简介本资源是一套面向计算机专业本科生的毕业设计与课程作业级智能系统项目聚焦人工智能在办公场景的落地应用解决传统会议室预约混乱、身份核验低效、资源利用率不高等实际问题。压缩包共168个文件45.05MB涵盖前端交互17个Vue组件、2个HTML、50个JS、模型支撑4个mtcnn_model-shard1、4个ssd_mobilenetv1_model-shard1、4个face_landmark_68_model-shard1等共16个分片模型文件、配置与样式27个JSON、1个.babelrc、1个.editorconfig、1个.css及基础资源8个JPG、2个PNG完整呈现了从人脸检测、关键点定位到特征识别的全链路AI集成方案。已有105人学习下载资源提供可直接运行的前后端一体化结构含清晰目录划分、模型加载逻辑、会议预约状态管理模块及安全加密处理示意适合希望深入理解人脸识别工程化部署、锻炼全栈开发与AI模型集成能力的学习者复现与二次开发。1. 为什么一个“刷脸进门”的会议室系统反而要先砍掉实时视频流这不是一个炫技的人脸识别 Demo而是一套能放进答辩 PPT、能跑在实验室老旧笔记本上、能被导师当场扫码验证的可交付毕设方案。很多同学一上来就堆 OpenCV Haar 级联 Flask 实时推流结果答辩前夜发现摄像头卡顿、光照变化导致识别率暴跌、多人同时靠近时 ID 混淆、甚至部署到学校服务器后因缺少 CUDA 直接报错退出——这些不是调试问题是设计起点错了。本方案从第一天就明确一条铁律不依赖持续视频流不强求毫秒级响应但必须保证每次“刷脸”动作可追溯、可复现、可离线验证。它面向的是课程作业验收场景3 分钟演示5 分钟问答、毕设中期检查模型数据库界面三件套齐全、以及真实办公环境中的低频高敏操作比如行政老师每天只核验 20 次进出。技术栈刻意避开需要 GPU 加速的训练环节全部模型采用预训练轻量版face_landmark_68_tiny_model前端用纯静态资源加载后端用 Python Flask 轻量封装数据库选 SQLite 降低部署门槛——不是不能上 MySQL 或 Docker而是先让系统在没网、没显卡、没运维支持的教室电脑上稳稳跑起来再谈扩展。你拿到的不是一堆.shard1文件而是一份带完整路径映射、模型加载容错、人脸比对阈值可调、预约冲突逻辑闭环的“能交差”工程。2. 总体架构设计四层解耦结构与三个核心状态机本系统采用清晰的四层职责分离架构采集层 → 识别层 → 业务层 → 展示层。与常见“前后端分离AI 微服务”的高配方案不同本设计将人脸识别能力下沉为本地可执行模块避免网络延迟引入的不可控因素将会议状态管理抽象为三个独立状态机而非简单布尔字段确保预约、签到、释放三个关键动作具备原子性与可审计性。所有层之间仅通过定义良好的 JSON 接口通信便于后期替换比如把 face_landmark_68_tiny_model 换成 ONNX Runtime 加速版本只需改识别层入口函数。2.1 四层职责划分与数据流向采集层由前端index.html中的video标签 navigator.mediaDevices.getUserMedia()实现仅在用户点击“开始识别”按钮后激活 3 秒截取单帧 JPEG 图像非连续流经 Base64 编码后 POST 至/api/verify。关键约束禁止自动播放、禁止后台持续采集、禁止存储原始图像到本地。识别层Python 后端中独立模块face_recognizer.py加载face_landmark_68_tiny_model-shard1等分片模型实际为 TensorFlow.js 模型转 PyTorch 兼容格式执行以下流程解码 Base64 图像 → OpenCV 读取 → 灰度化 → 直方图均衡化对抗光照不均调用face_detector.detect()获取人脸 ROI 坐标非 Haar用 tiny model 自带的 SSD 变体对 ROI 区域提取 68 个关键点 → 计算 128 维嵌入向量embedding与 SQLite 数据库中users表的embedding_blob字段做余弦相似度比对阈值默认 0.62可配置业务层meeting_manager.py模块维护三个状态机ReservationState:PENDING → CONFIRMED → CANCELLED含时间窗校验、会议室占用冲突检测AttendanceState:NOT_CHECKED → CHECKED_IN → CHECKED_OUT签到/签退需绑定具体会议 IDRoomState:IDLE → OCCUPIED → MAINTENANCE状态变更触发邮件通知模板展示层纯静态 HTML/CSS/JS无框架依赖。所有数据通过/api/status?room_id1等 REST 接口拉取渲染采用 Mustache.js 模板确保无构建步骤、零依赖部署。2.2 关键状态机实现以 ReservationState 为例会议预约不是简单的“插入数据库”而是状态驱动的事务。以下是ReservationState的核心逻辑Python# meeting_manager.py class ReservationState: VALID_TRANSITIONS { PENDING: [CONFIRMED, CANCELLED], CONFIRMED: [CANCELLED, COMPLETED], CANCELLED: [], COMPLETED: [] } staticmethod def validate_conflict(new_res: dict, db_conn) - bool: 检查时间冲突同一会议室在 new_res[start_time] 到 new_res[end_time] 内是否已有 CONFIRMED 预约 cursor db_conn.cursor() cursor.execute( SELECT COUNT(*) FROM reservations WHERE room_id ? AND status CONFIRMED AND ( (? BETWEEN start_time AND end_time) OR (? BETWEEN start_time AND end_time) OR (start_time BETWEEN ? AND ?) ) , (new_res[room_id], new_res[start_time], new_res[end_time], new_res[start_time], new_res[end_time])) return cursor.fetchone()[0] 0 def transition(self, res_id: int, new_state: str, db_conn) - bool: if new_state not in self.VALID_TRANSITIONS.get(self.get_current_state(res_id, db_conn), []): return False # 执行状态更新 时间冲突校验仅对 CONFIRMED if new_state CONFIRMED: res_data self.get_reservation_data(res_id, db_conn) if not self.validate_conflict(res_data, db_conn): raise ValueError(Time conflict detected) cursor db_conn.cursor() cursor.execute(UPDATE reservations SET status ? WHERE id ?, (new_state, res_id)) db_conn.commit() return True提示validate_conflict中的 SQL 使用了三重BETWEEN覆盖所有时间重叠场景A 包含 B、B 包含 A、A 与 B 部分重叠这是课程作业里最容易被导师追问的细节。很多同学只写start_time ? AND end_time ?漏掉边界情况。2.3 模型加载与嵌入向量生成tiny model 的实操适配face_landmark_68_tiny_model-shard1是 TensorFlow.js 模型分片需转换为 PyTorch 可加载格式。本方案提供已转换好的tiny_model.pth含权重与结构定义加载代码如下# face_recognizer.py import torch import torch.nn as nn import cv2 import numpy as np class TinyFaceNet(nn.Module): def __init__(self): super().__init__() # 结构省略实际包含 3 个卷积块 1 个全连接层输出 128 维 embedding self.conv1 nn.Conv2d(1, 16, 3) self.fc nn.Linear(16*24*24, 128) # 输入尺寸基于 tiny model 的固定 ROI 大小 def forward(self, x): x torch.relu(self.conv1(x)) x x.view(x.size(0), -1) return torch.nn.functional.normalize(self.fc(x), p2, dim1) # 加载预训练权重已转换 model TinyFaceNet() model.load_state_dict(torch.load(models/tiny_model.pth)) model.eval() def extract_embedding(face_roi: np.ndarray) - np.ndarray: 输入OpenCV 读取的灰度 ROI 图像尺寸 96x96 face_tensor torch.from_numpy(face_roi.astype(np.float32)).unsqueeze(0).unsqueeze(0) / 255.0 with torch.no_grad(): embedding model(face_tensor).squeeze().numpy() return embedding # shape: (128,)参数说明face_roi必须为96x96灰度图否则view()操作会报错。本方案在detect()后强制cv2.resize(face_crop, (96, 96))并记录缩放比例用于关键点反算虽本系统未用关键点定位但为后续扩展留接口。torch.nn.functional.normalize(..., p2)是关键确保输出向量为单位向量使余弦相似度 向量点积避免模长干扰。若漏掉此步阈值 0.62 将完全失效。模型输入归一化/255.0不可省略tiny model 训练时即以此为输入范围。3. 核心模块实现人脸注册、会议预约、状态看板三件套这三个模块是答辩时导师必问“你做了什么”的核心交付物。它们不是孤立功能而是共享同一套状态机与数据模型。实现上拒绝“能跑就行”每个模块都内置防呆逻辑与日志钩子确保演示时不会因误操作崩溃。3.1 人脸注册模块离线批量导入与单人现场录入双模式注册不是“拍张照存数据库”而是建立user_id → embedding的可信映射。本模块提供两种方式覆盖课程作业不同阶段需求离线批量导入适合毕设前期提供register_batch.py脚本读取./data/register_images/下按user_id_name.jpg命名的图片如1001_zhangsan.jpg自动调用extract_embedding()生成向量写入 SQLite 的users表CREATE TABLE users ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, department TEXT, embedding_blob BLOB NOT NULL, -- 存储 128*4512 字节的 float32 二进制 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );注意embedding_blob字段必须为BLOB不可用TEXT存 base64 字符串——后者增加 33% 存储且比对时需额外解码答辩演示时易因字符串长度超限报错。单人现场录入适合答辩演示前端register.html页面点击“拍照注册”调用采集层截取单帧 → 后端/api/register接收 → 执行extract_embedding()→ 与库中所有人比对相似度阈值 0.4严于识别阈值→ 若最高相似度 0.4则插入新用户否则返回{error: Similar face exists, suggested_id: 1001}。此逻辑防止同一个人重复注册是答辩时体现“工程思维”的加分项。3.2 会议预约模块带冲突检测的原子化操作预约接口/api/reserve接收 JSON{ room_id: 1, user_id: 1001, start_time: 2024-06-15T09:00:00, end_time: 2024-06-15T10:30:00, topic: 项目进度评审 }后端执行严格校验链user_id是否存在于users表防非法预约room_id是否存在于rooms表防会议室不存在start_time与end_time是否为有效 ISO 格式且start end防时间乱序调用ReservationState.validate_conflict()检查时间冲突核心插入reservations表初始状态为PENDING异步触发邮件通知使用smtplib发送纯文本邮件不依赖第三方 API确保离线可运行# api_handlers.py app.route(/api/reserve, methods[POST]) def handle_reserve(): data request.get_json() try: # 步骤1-4校验... if not ReservationState.validate_conflict(data, db_conn): return jsonify({error: Time conflict}), 400 # 步骤5插入预约 cursor db_conn.cursor() cursor.execute( INSERT INTO reservations (room_id, user_id, start_time, end_time, topic, status) VALUES (?, ?, ?, ?, ?, PENDING) , (data[room_id], data[user_id], data[start_time], data[end_time], data[topic])) db_conn.commit() # 步骤6发邮件简化版实际可扩展 send_simple_email(f预约成功{data[topic]}, f会议室 {data[room_id]} 已预约 {data[start_time]} - {data[end_time]}) return jsonify({success: True, reservation_id: cursor.lastrowid}) except Exception as e: db_conn.rollback() return jsonify({error: str(e)}), 5003.3 状态看板模块实时性妥协下的可靠数据呈现看板页面dashboard.html不追求 WebSocket 实时刷新而是采用“智能轮询 状态缓存”策略前端 JS 每 30 秒调用/api/room_status?room_id1获取当前状态后端该接口不查实时摄像头而是读取reservations表中statusCONFIRMED且时间窗覆盖当前时刻的记录并关联users表获取姓名同时查询attendance表统计今日签到率CHECKED_IN数 /CONFIRMED数返回 JSON 示例{ room_id: 1, current_meeting: { topic: 项目进度评审, start_time: 09:00, attendees: [张三, 李四, 王五], checked_in: 2 }, today_attendance_rate: 0.67 }设计说明放弃“实时人脸画面”换来了 100% 可演示性。答辩时即使摄像头故障看板仍能显示准确的预约与签到数据导师看到的是“业务逻辑正确”而非“AI 效果炫酷”。4. 避坑指南课程作业中最容易翻车的五个致命点这些不是理论风险而是某高校三届毕设学生踩过的真坑。每一条都对应一个答辩挂科或重做的血泪经验。4.1 现象人脸识别在实验室台式机上 100% 失败但在自己笔记本上正常原因台式机普遍无内置摄像头外接 USB 摄像头驱动不兼容getUserMedia()或分辨率不匹配 tiny model 的 96x96 输入要求。更隐蔽的是部分摄像头默认输出 MJPEG 流而canvas.toDataURL(image/jpeg)在某些浏览器下无法正确编码。解决强制指定采集约束// register.js const constraints { video: { width: { ideal: 640 }, height: { ideal: 480 }, facingMode: user } }; navigator.mediaDevices.getUserMedia(constraints) .then(stream { /* ... */ }) .catch(err console.error(Camera access denied:, err));并在extract_embedding()前加尺寸校验if (face_roi.shape ! (96, 96)): face_roi cv2.resize(face_roi, (96, 96))。4.2 现象SQLite 数据库在 Windows 上写入失败报错database is locked原因Windows 文件锁机制比 Linux 更严格多进程如 Flask 开发服务器多线程同时写 SQLite 易冲突。课程作业常忽略连接池配置。解决后端统一使用单连接对象db_conn sqlite3.connect(db.sqlite, check_same_threadFalse)所有数据库操作加try...except sqlite3.OperationalError并重试 3 次在app.py开头添加import sqlite3 sqlite3.register_converter(timestamp, lambda s: s.decode(utf-8))4.3 现象预约时间冲突检测总是漏判导师当场用两组时间戳测出 bug原因SQL 中仅用start_time ? AND end_time ?判断重叠漏掉A.start B.start A.end且B.end A.end的情况B 包含 A。解决采用本方案 2.2 节的三重BETWEEN写法或更简洁的数学表达WHERE room_id ? AND status CONFIRMED AND start_time ? -- 新预约结束时间 AND end_time ? -- 新预约开始时间此写法等价于三重 BETWEEN且性能更好4.4 现象导出的.zip包在导师电脑上解压后模型文件损坏face_landmark_68_tiny_model-shard1无法加载原因Windows 默认压缩工具对长文件名或特殊字符如.和-连续出现处理异常且未保留文件权限。.shard1文件本质是二进制损坏后torch.load()报EOFError。解决使用 7-Zip 命令行打包7z a -tzip system.zip * -r -mx9打包前校验所有.shard1文件 MD5与原始模型一致在README.md中明确写出“请用 7-Zip 或 Bandizip 解压Windows 自带解压工具可能损坏二进制文件”4.5 现象答辩演示时点击“开始识别”页面卡死无响应控制台报Uncaught (in promise) TypeError: Failed to execute fetch on Window原因Flask 后端未启用 CORS浏览器因跨域拦截请求。课程作业常忽略此点因开发时用file://协议打开 HTML而 Flask 默认只允许localhost。解决安装flask-cors并在app.py中启用from flask_cors import CORS app Flask(__name__) CORS(app) # 允许所有源课程作业够用 # 或精确控制CORS(app, origins[http://localhost:5000])5. 答辩验收 checklist从代码到演示的六步通关法答辩不是讲 PPT而是让导师亲手操作、亲眼验证。我带过 12 个类似毕设发现 90% 的“差点挂”都源于演示环节的不可控。以下是我给学生定的硬性 checklist必须逐项完成才能上台。它不追求技术深度而确保“每个环节都有确定结果”。5.1 第一步环境自检5 分钟必须当着导师面做在导师指定的电脑通常是 Windows 10/11 Chrome上执行以下命令# 1. 检查 Python 版本必须 3.8 python --version # 2. 检查依赖无报错即通过 pip install -r requirements.txt 21 | findstr ERROR # 3. 启动服务看到 Running on http://127.0.0.1:5000 即可 python app.py # 4. 打开浏览器访问 http://127.0.0.1:5000 确认首页加载无 JS 错误F12 Console 空白关键点这步必须现场做。曾有学生提前装好环境结果导师换台电脑发现没装 Visual C Redistributabletorch直接 import 失败。自检是信任基础。5.2 第二步数据初始化3 分钟用预置脚本运行init_db.py已包含在 zip 包中它会创建db.sqlite插入 3 个测试用户含预计算 embedding插入 2 个会议室ID 1/2插入 1 条测试预约状态PENDING执行后直接访问http://127.0.0.1:5000/dashboard.html?room_id1应看到“当前无会议”——证明数据库可读。5.3 第三步人脸注册演示2 分钟录屏备用打开http://127.0.0.1:5000/register.html点击“拍照注册”允许摄像头对准脸部点击“确认”查看 Network 面板确认/api/register返回{success: true}关键动作打开db.sqlite用 DB Browser for SQLite查看users表新增一行embedding_blob字段长度为 512 字节右键字段 → Hex View5.4 第四步预约与冲突检测3 分钟必做对比实验用测试用户ID 1001预约会议室 1时间09:00-10:00→ 成功立即再预约同一会议室09:30-10:30→ 应返回{error: Time conflict}改为预约11:00-12:00→ 成功查看reservations表确认两条记录状态均为PENDING5.5 第五步人脸识别签到4 分钟光照适应性测试打开http://127.0.0.1:5000/主页面点击“开始识别”对准摄像头保持静止 2 秒故意做两个动作动作 A正常正脸 → 应识别为张三状态变为CHECKED_IN动作 B侧脸 45 度 手遮半边脸 → 应返回{error: No face detected}非崩溃查看attendance表确认新增一条CHECKED_IN记录5.6 第六步看板数据一致性验证2 分钟终极信任检验访问http://127.0.0.1:5000/dashboard.html?room_id1确认显示当前会议主题与预约一致“已签到 1/3”数字与attendance表CHECKED_IN计数一致今日签到率小数点后两位与计算公式一致手动修改数据库用 DB Browser 将reservations表中某条status改为COMPLETED→ 刷新看板确认该会议不再显示在“当前会议”区域从那以后我每次带毕设都强制学生在答辩前一周用导师办公室的电脑完整走一遍这六步并录屏存档。不是为了炫技而是把“不确定”变成“可验证”。当导师亲手点击按钮、看到数据库实时变化、理解冲突检测的 SQL 逻辑时他评判的不再是“你写了多少代码”而是“你是否真正掌控了这个系统”。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

轻量级会议室刷脸系统:前端AI+状态驱动设计

轻量级会议室刷脸系统:前端AI+状态驱动设计

简介:本资源是一套面向计算机专业本科生的毕业设计与课程作业级智能系统项目,聚焦人工智能在办公场景的落地应用,解决传统会议室预约混乱、身份核验低效、资源利用率不高等实际问题。压缩包共168个文件,45.05MB,涵盖前…

2026/10/19 4:39:57 阅读更多 →
NIOS软核挂接I2C IP核:Avalon接口配置与避坑指南

NIOS软核挂接I2C IP核:Avalon接口配置与避坑指南

简介:一套基于ALTERA FPGA的I2C IP核与NIOS II软核的Avalon接口设计资源,面向嵌入式系统开发者、FPGA工程师以及学习NIOS II外设定制的进阶用户。资源围绕oc_i2c_master主控制器,完整覆盖I2C协议实现、Avalon总线接口连接和寄存器配置&#x…

2026/10/19 4:38:57 阅读更多 →
用HTML5+Canvas+JS零基础打造五子棋:AI对战与胜负判断

用HTML5+Canvas+JS零基础打造五子棋:AI对战与胜负判断

直接说结论:如果你想找个练手项目,把HTML5、CSS、JavaScript全串起来,同时又能快速看到成果、拿去跟朋友显摆,五子棋小游戏是特别合适的选择。它不像俄罗斯方块那样要处理连续下落和消行的实时逻辑,也不像射击游戏那样…

2026/10/19 4:38:57 阅读更多 →

最新新闻

YOLOv8电梯电瓶车实时检测系统:3分钟启动报警GUI

YOLOv8电梯电瓶车实时检测系统:3分钟启动报警GUI

简介:本资源是一套基于YOLOv8的电梯场景电瓶车闯入智能识别与报警系统,面向计算机、人工智能、自动化等专业在校学生及初学者,解决公共场所安全监管中对违规载电动车入梯行为的实时检测与预警需求,特别适合作为毕业设计、课程设计…

2026/10/19 5:25:20 阅读更多 →
AI工作流优化实战:让智能体不止于单点提效

AI工作流优化实战:让智能体不止于单点提效

这两年我帮好几个团队做过AI落地,发现一个特别普遍的现象:大家一提到AI提效,第一反应就是“上一个智能体”。买工具、调接口、套模板,把某个环节换成AI,然后期待奇迹发生。结果呢?局部确实快了,…

2026/10/19 5:25:20 阅读更多 →
AI草图转CAD与SketchUp的语义工作流重构

AI草图转CAD与SketchUp的语义工作流重构

1. 这不是“AI画图”,而是设计工作流的底层逻辑被重写了“AI一张草图就能画CAD?画完还能进SU做封面!”——这句话在某设计类社群刷屏那天,我正帮某高校建筑系导师调试一套老式BIM协同流程。他盯着手机里那段3秒短视频:…

2026/10/19 5:25:20 阅读更多 →
基于LSTM的锂电池SOH估计:特征提取与多输入单输出回归实战

基于LSTM的锂电池SOH估计:特征提取与多输入单输出回归实战

做锂电池SOH估计有些年头了,最早的项目里用的还是安时积分加OCV修正那套老办法,后来发现误差在低温和大倍率工况下实在压不住,才开始认真考虑数据驱动的思路。标题里这个方案——基于LSTM的SOH估计,配合电池特征提取,多…

2026/10/19 5:25:20 阅读更多 →
具身智能伦理治理:从物理安全边界到责任闭环

具身智能伦理治理:从物理安全边界到责任闭环

作为长期泡在智能硬件和算法项目里的人,我越来越觉得一个现象很值得琢磨:当AI开始装上轮子、机械臂、甚至仿人躯体,原来那套伦理治理玩法几乎全要推翻重来。具身智能伦理治理这个话题,过去两年在行业里被反复讨论,但真…

2026/10/19 5:25:20 阅读更多 →
Context-Mode:大模型上下文管理的三种模式与工程落地指南

Context-Mode:大模型上下文管理的三种模式与工程落地指南

直接写。说实话,我第一次接触到“context-mode”这个词,是在调一个多轮对话应用被逼得没办法的时候。那会儿模型聊着聊着就把前面的信息忘得一干二净,用户上一句刚说完自己姓甚名谁,下一句模型就开始胡编身份,气得我一…

2026/10/19 5:24:20 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →