游乐游手机版
首页/AI教程/文章详情

开源免费全本地运行的视觉模型Next.JS系统

时间:2026-05-28 17:41
Seven 视觉模型项目介绍 今天想跟大家聊一个很有意思的开源项目——Seven视觉模型。说白了,这是一个完全跑在浏览器里的实时目标检测系统,不需要云端AI接口,一切推理都在本地完成。 1 项目概述 这个项目的核心思路很简单:打开浏览器,调用摄像头,然后在本地就完成目标检测和告警。它用Next j

Seven 视觉模型项目介绍

今天想跟大家聊一个很有意思的开源项目——Seven视觉模型。说白了,这是一个完全跑在浏览器里的实时目标检测系统,不需要云端AI接口,一切推理都在本地完成。

1. 项目概述

这个项目的核心思路很简单:打开浏览器,调用摄像头,然后在本地就完成目标检测和告警。它用Next.js、React、TypeScript、MediaPipe Object Detector、EfficientDet-Lite0和MySQL构建,主要实现的功能包括摄像头实时画面采集、目标检测、威胁等级配置、告警截图、截图管理、历史记录和摄像头配置等。

绕来绕去,最核心的一个点就是——目标检测不依赖云端AI接口,而是在浏览器端通过MediaPipe WASM加载本地模型完成推理。这样一来,既减少了服务端压力,也避免了摄像头画面上传到第三方平台,隐私性有保障。

项目使用的目标检测模型是:MediaPipe Object Detector + EfficientDet-Lite0,模型文件存放在public/models/efficientdet_lite0_uint8.tflite

2. 项目技术栈

整体采用前后端一体化架构,页面和接口都由Next.js统一提供。前端UI用Ant Design搭建,目标检测逻辑全部跑在浏览器端,数据持久化则交给了MySQL。看下核心依赖就知道了:

// package.json 中的核心依赖
{
  "dependencies": {
    "@mediapipe/tasks-vision": "0.10.34",
    "antd": "^6.3.6",
    "mysql2": "^3.22.2",
    "next": "16.2.4",
    "react": "19.2.5",
    "react-dom": "19.2.5"
  }
}

具体来说,项目主要用到了这些技术:

  • Next.js App Router:负责页面路由和API Routes
  • React Hooks:管理摄像头状态、检测状态和页面交互
  • TypeScript:提供类型约束
  • Ant Design:构建后台管理界面
  • MediaPipe Object Detector:实现浏览器端目标检测
  • EfficientDet-Lite0:轻量级目标检测模型
  • MySQL:保存威胁配置、截图、历史记录和摄像头配置

3. 系统功能模块

系统主要分为五个页面,结构很清晰:

/ 实时视觉分析首页
/history 历史记录
/threats 威胁管理
/snapshots 截图管理
/cameras 摄像头管理

components/AppShell.tsx中,项目通过导航菜单把这些页面统一组织起来,方便快速切换。

首页主要负责实时检测,其他页面则用于管理和查看数据。这样一来,整个系统不仅能检测目标,还能完成告警的完整闭环。

4. 浏览器摄像头采集

摄像头采集这块,项目用的是浏览器原生的MediaDevices.getUserMedia API,相关逻辑封装在hooks/useObjectDetector.ts中。

具体设置是这样的:

  • audio: false:只读取视频,不碰音频
  • facingMode: "environment":移动端优先使用后置摄像头
  • widthheight:期望摄像头输出1280x720
  • playsInline:提升移动端Safari兼容性,避免视频全屏播放

如果用户拒绝摄像头权限,项目会根据浏览器返回的异常类型展示对应的错误提示。比如权限被拒时提示“请允许摄像头访问”,没找到设备时提示“确认设备已连接”,设备被占用时提示“可能正在被其他应用占用”——这些都是很贴心的用户体验设计。

5. MediaPipe 模型加载

目标检测模型通过MediaPipe Tasks Vision在浏览器端加载。这里有个关键点:项目使用动态导入,避免服务端渲染阶段去访问浏览器API,否则会报错。

代码逻辑也很清晰:WASM文件从/mediapipe/wasm加载,检测模型从/models/efficientdet_lite0_uint8.tflite加载。runningMode: "VIDEO"表示使用视频流检测模式,maxResults: 20表示最多返回20个检测结果,scoreThreshold: 0.45表示置信度低于0.45的目标会被过滤掉。

为了让模型文件和WASM文件自动准备好,项目还提供了一个脚本,安装依赖后执行npm run prepare:mediapipe就能搞定。

6. 实时检测与节流处理

目标检测不能每一帧都执行,否则浏览器主线程压力太大了。因此项目设置了检测间隔:DETECTION_INTERVAL_MS = 700,也就是每700ms对当前视频帧执行一次目标检测。

检测启动后,通过setInterval周期性执行推理。这样既能保持实时感,又不会让浏览器资源占用过高,算是性能和体验之间一个不错的平衡点。

7. 检测结果处理

MediaPipe返回的检测结果会被转换成项目内部统一的数据结构。这里面有几个关键字段:

  • label:模型原始标签,比如personcarknife
  • displayName:中文显示名称,比如汽车
  • score:置信度
  • box:目标框坐标,使用百分比表示,便于在响应式视频区域上绘制

项目内置了一份英文标签到中文名称的映射,放在一个常量对象里。目标框坐标会被转换成百分比,这样在页面上绘制检测框时,只需要设置CSS百分比定位,省去了很多麻烦。

8. 威胁等级配置

项目支持为不同目标设置威胁等级,等级分为nonelowmediumhighcritical五种。

默认威胁配置写在lib/db.ts中,比如:

  • 行人:中等威胁,检测到人员进入监控区域
  • 车辆:低威胁,检测到车辆经过
  • 刀具:严重威胁,高危告警
  • 手机:无威胁

首页检测到目标后,会根据数据库中的威胁配置判断是否需要告警。如果目标被启用,并且威胁等级不是none,系统就会把它视为告警目标。

9. 告警提醒

当检测到威胁目标时,系统会弹出告警通知,显示威胁信息、等级和置信度。为了避免同一个目标连续重复提醒,项目使用lastNoticeRef保存上次提醒时间,同一类威胁目标在6秒内不会重复弹出提醒——这个细节做得挺到位。

10. 告警截图生成

系统检测到威胁目标时,会使用Canvas截取当前视频帧,然后在截图上绘制目标框和文字。截图顶部还会添加上告警信息和时间戳,看起来就很像一个完整的告警证据。

最后,截图会被转换为Base64并提交到后端保存。项目也设置了截图冷却时间,默认12秒,避免连续保存过多截图。

11. 历史记录管理

项目不仅记录某一帧的检测结果,还会记录目标进入和离开的时间。每当画面中间出现新的目标,就创建一条历史记录;当目标从画面中消失时,系统会更新该记录的离开时间和最高置信度。后端会根据进入时间和离开时间计算停留时长,这样就能知道某个目标在画面里待了多久。

12. 数据库连接与建表

数据库连接逻辑位于lib/db.ts,使用的是MySQL连接池。数据库名为vision_analysis_system,项目启动接口时会自动创建数据库和表。

数据库表包括:

  • threat_configs:威胁配置
  • threat_snapshots:威胁截图
  • system_events:系统事件
  • cameras:摄像头配置
  • detection_records:检测记录

同时项目也提供了独立的SQL文件database/vision_analysis_system.sql,可以通过命令行手动导入。

13. 后端 API 设计

项目使用Next.js API Routes实现后端接口,前端页面和后端接口都在同一个Next.js项目中。比如截图接口位于app/api/snapshots/route.ts,保存截图时前端向/api/snapshots发送POST请求,后端接收后写入MySQL。这种设计让部署和维护都变得很简单。

14. 页面与响应式设计

界面使用Ant Design组件搭建,通过全局CSS实现深色科技风格。页面整体分为顶部导航、实时视频区域和右侧信息区域。桌面端使用左右布局,视频画面占主要区域;手机端则按内容自然向下排列,变成单列布局。这样既能保证电脑端的大画面体验,又能适配手机端的浏览习惯。

15. 项目总结

Seven视觉模型是一个前后端一体化的浏览器端实时目标检测系统。它通过MediaPipe Object Detector和EfficientDet-Lite0模型在浏览器中完成本地推理,完全不依赖云端AI接口。系统不仅实现了摄像头画面检测,还扩展了威胁等级配置、告警截图、历史记录、截图管理和摄像头管理等完整功能。

从技术实现上看,项目结合了浏览器摄像头API、WebAssembly本地推理、React Hooks状态管理、Canvas截图绘制、Next.js API Routes和MySQL数据持久化。整体结构清晰,很适合作为计算机视觉、前端AI、智能监控和本地化目标检测方向的学习项目或毕业设计项目。

项目的核心价值在于:用普通浏览器就能完成实时视觉分析,不需要专门客户端,也不需要付费云端AI服务。部署简单、成本较低、隐私性好、扩展性强——这几个特点让它在一众监控方案中显得很特别。

来源:https://juejin.cn/post/7631160059813838848
上一篇阿里云OpenClaw成本断崖降,年费等于本地一月,免费Token不限量 下一篇AI智能数学家教一对一高效在线辅导
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
RAG四标融合企业知识资产体系四库协同GEO优化实践
AI教程 · 2026-07-01

RAG四标融合企业知识资产体系四库协同GEO优化实践

生成式AI正在彻底改写信息检索的底层逻辑。传统SEO依赖关键词堆砌和外链建设的策略,在大模型的内容采信规则下已经基本失效。取而代之的,是生成式引擎优化(GEO)。它不再关注外链数量,而是重点衡量你的知识是否结构化、证据链是否坚实、信源是否可靠——这些维度才是RAG(检索增强生成)架构真正看重的核心指

一个普通上班人分享WorkBuddy使用心得与真实体验
AI教程 · 2026-07-01

一个普通上班人分享WorkBuddy使用心得与真实体验

前言 最近我开始使用WorkBuddy——这是腾讯推出的一款AI办公工作台。差不多用了一周时间,趁印象还新鲜,把真实的使用感受记录下来,给还在犹豫的朋友做个参考。不吹不黑,只说实际体验。 初印象:不只是聊天机器人 之前用过不少AI工具,大多数就是个对话框,你问它答,答完就结束了。WorkBuddy不

AI幻觉变真功能实战教程:App Inventor 2视频录制拓展一周开发实录
AI教程 · 2026-07-01

AI幻觉变真功能实战教程:App Inventor 2视频录制拓展一周开发实录

先讲一个颇具戏剧性的开端。 这件事的开端颇显荒诞——有用户前来咨询,称AI Pro版的介绍中提到我们有一款“视频录制拓展”。团队全体成员都感到困惑,翻遍产品列表,发现根本不存在该组件。AI那种“一本正经胡说八道”的能力,这次确实让我们陷入尴尬。 按常理,此事到此便可结束——一句“抱歉,暂时没有这个拓

别再混淆OLAP和SQL-on-Hadoop两者查询本质不同
AI教程 · 2026-07-01

别再混淆OLAP和SQL-on-Hadoop两者查询本质不同

OLAP和SQL-on-Hadoop虽都使用SQL查询数据,但本质不同。SQL-on-Hadoop负责海量数据批量计算与ETL,查询速度秒级至分钟级;OLAP通过预聚合实现毫秒级多维分析,适合BI报表。两者在数据平台分工协作,前者是后厨加工,后者是前台快速服务。

GEO优化深度解析:AI偏好FAQ还是长文内容?
AI教程 · 2026-07-01

GEO优化深度解析:AI偏好FAQ还是长文内容?

在GEO优化中,AI对内容形式无统一偏好:FAQ在简单查询中引用率41%,长文在复杂查询中达58%。内容应基于用户意图选择形式,FAQ适配简单事实类问题,长文建立主题权威,两者互补而非替代。