基于姿态捕获的超低带宽视频会议系统。通过实时捕获人体姿态并在远端重建,实现卫星级别带宽(约10kb/s)下的流畅视频会议。
现有的视频会议都是采用视频传输(连虚拟背景也是),但我们真的有必要每时每刻传输每个像素点吗?如果是4K60帧,每秒数据量有1.49GB,对于精美的电影当然越精细越好,但视频会议并不需要看清楚你桌上的每一点细节,相反,而只需要人的表情和肢体动作,其余的信息反而会成为干扰。
因此我们的项目实现了原理的革新,预先传输模型,在视频通话中只传输捕捉到的人体姿态数据,大大降低了带宽需求。
在2D环境下,带宽降低或许并不必要(当然,我们降低到了卫星通讯水平,可能在极端环境下有用),但如果是未来的VR,AR通话,必然不可能实时传输整个3D环境。 我们的预传模型+实时姿态再渲染的技术在平面视频会议时代或许并无太大优势,但却是未来必然的选择和发展方向
使用mediapipe模型从摄像头的实时视频流解析姿态关键点坐标,通过网络传输,接收端使用预先传输的初始帧根据关键点坐标进行变形,平滑化后输出视频画面
- 超低带宽传输: 仅传输姿态数据(~1-10kb/s) ======= 现有的视频会议都是采用视频传输(连虚拟背景也是),我们的项目实现了原理的革新,预先传输模型,在视频通话中只传输捕捉到的人体姿态数据,大大降低了带宽需求。
在正式的视频会议中,你是否曾因杂乱的房间和难以调整的摄像头角度或自己不佳的仪容仪表而烦恼,或是被突然出现的异物打断重要的采访,亦或是因网络质量不佳而导致会议卡顿?
但是仔细想来,视频会议并没有必要拍摄你所处环境中所有(可能让你感到尴尬)的东西;事实上,只需要你的声音与动作。那么,为什么不提前录入你的身体模型,这样我们就只需要传输捕获的关节数据了,而且从根本上避免了unwanted objects的闯入--我们只传输必要的数据(你的动作),大大减少了数据传输压力,让你在网络欠佳是仍能顺畅通话。另外,与传统的虚拟背景不同,你仍然可以"真实"地出现在会议中--背景可以实地拍摄,模型也可以真实录入,我们只是让你以你最好的面貌出现在会议中,无论是弱网下稳定的通话质量还是更加稳定的虚拟背景(即使系统卡顿也不会显示原画面的固有安全),都会给你满满的安全感,让你的会议更加顺畅自信!
- 超低带宽传输: 仅传输姿态数据(~10kb/s)
- 高质量重建: 远端基于姿态数据重建人物视频
- 实时性能: 端到端延迟<200ms
- 精细姿态:
- 面部表情(468点)
- 人体姿态(33点)
- 手部动作(21点/手)
-
验证身份保证安全,防止AI换脸
本项目采用的技术容易被用于AI换脸,为保证通话安全,防范电信诈骗,在上传初始参考帧时强制要求人脸识别校验,确认是本人才允许通话
-
人物自动居中,不用调整摄像头角度:
由于使用了姿态数据,可以方便地计算中心点并把人物移动到画面中心,免去了调整摄像头角度的麻烦(尤其是某些摄像头在键盘区的笔记本)
-
方便的裸眼3D:
姿态关键点数据直接省去了深度估计步骤,使用Deep3D项目代码进行简化后方便地达成了裸眼3D效果,接收端资源占用大大减少
完成人体建模和骨骼动画部分后可以方便地升级成为VR全息会议
- 解压环境: 先安装anaconda https://www.anaconda.com/download/success 下载
打开conda的命令行环境,在项目根目录运行:
conda env create -f envs/meet.yaml
运行代码时解释器选择meet环境
cd meet
运行run.py
程序运行后,打开浏览器访问 http://127.0.0.1:5000/
。
project/
├── run.py # 主程序入口
├── requirements.txt # Python依赖
├── config/ # 配置文件
│ ├── __init__.py
│ ├── settings.py # 全局配置
│ └── config.yaml # YAML配置
├── camera/ # 摄像头模块
│ ├── __init__.py
│ └── manager.py # 摄像头管理
├── pose/ # 姿态检测模块
│ ├── __init__.py
│ ├── detector.py # 检测器
│ ├── drawer.py # 绘制器
│ ├── smoother.py # 平滑器
│ ├── binding.py # 绑定器
│ ├── deformer.py # 变形器
│ ├── types.py # 类型定义
│ ├── pose_data.py # 数据结构
│ └── pose_binding.py # 绑定实现
├── connect/ # 连接模块
│ ├── __init__.py
│ ├── socket_manager.py # Socket管理
│ ├── pose_sender.py # 数据发送
│ ├── pose_protocol.py # 数据协议
│ └── room_manager.py # 房间管理
├── receive/ # 接收端
│ ├── __init__.py
│ ├── app.py # 应用程序
│ ├── manager.py # 管理器
│ └── static.py # 静态资源
├── audio/ # 音频
│ ├── __init__.py
│ └── processor.py # 处理器
├── tools/ # 工具集
│ ├── __init__.py
│ ├── demo.py # 演示器
│ └── to_center.py # 居中器
├── docs/ # 文档
│ ├── README.md # 索引
│ ├── config/ # 配置说明
│ ├── testing/ # 测试说明
│ ├── usage/ # 使用说明
│ ├── pose/ # 姿态说明
│ ├── room/ # 房间说明
│ ├── receive/ # 接收说明
│ └── frontend/ # 前端说明
├── frontend/ # 前端
│ ├── pages/ # 页面
│ │ ├── display.html # 发送页
│ │ └── receiver.html # 接收页
│ ├── components/ # 组件
│ └── static/ # 资源
│ ├── js/ # 脚本
│ ├── css/ # 样式
│ └── models/ # 模型
├── envs/ # 环境
│ ├── setup.bat # Windows配置
│ ├── setup.sh # Linux配置
│ ├── setup.py # Python配置
│ └── meet.yaml # 通用配置
└── tests/ # 测试
├── __init__.py
├── conftest.py # 配置
├── test_system.py # 系统测试
├── test_connect.py # 连接测试
├── test_smoother.py # 平滑测试
├── test_to_center.py # 居中测试
└── connect/ # 连接测试
├── __init__.py
├── test_integration.py # 集成
└── test_pose_protocol.py # 协议
类别统计 (2024.01)
-------------------------------------------------------------------------------
语言类型 文件数 空行 注释 代码行
-------------------------------------------------------------------------------
Python 156 4632 4249 18200
Markdown 50 1218 9 5937
HTML 4 232 8 1514
JavaScript 2 84 30 482
配置文件 7 43 35 394
其他 8 59 15 288
-------------------------------------------------------------------------------
总计 227 6268 4346 26815
-------------------------------------------------------------------------------
- 项目结构优化
- 模块化重构
- 依赖管理优化
- 构建流程优化
- 开发环境配置
- 热重载支持
- 调试工具集成
- 测试框架搭建
- 视频渲染系统
- WebGL渲染管线
- 视频纹理处理
- 后处理效果
- 模型系统
- 模型加载器
- 骨骼动画
- 材质系统
- UI系统
- 控制面板
- 预览窗口
- 参数调节
- 视频处理
- 实时编码
- 格式转换
- 质量控制
- 姿态检测
- 实时识别
- 数据平滑
- 动作分析
- 数据管理
- 模型存储
- 缓存系统
- 会话管理
- 渲染优化
- GPU加速
- 内存管理
- 帧率控制
- 数据优化
- 压缩算法
- 缓存策略
- 异步加载
- 单元测试
- 前端模块测试
- 后端接口测试
- 渲染测试
- 性能测试
- 压力测试
- 内存泄漏检测
- 渲染性能分析
- Python: PEP 8
- JavaScript: ESLint (Airbnb)
- CSS: BEM命名
- feat: 新功能
- fix: 修复
- docs: 文档
- style: 格式
- refactor: 重构
- test: 测试
- chore: 构建
- main: 主分支
- develop: 开发分支
- feature/*: 功能分支
- bugfix/*: 修复分支
65CD
pre>