English | 中文
基于多模态大模型与端云一体化架构,构建智能婴儿床监控系统,实现婴儿状态实时识别、风险预警与智能交互。
-
🎯 婴儿状态多分类识别:基于 Qwen2.5-VL-7B 的 LoRA 微调,覆盖 9 种典型行为
- 翻身、爬床栏、哭闹、吐奶、打喷嚏、打哈欠、转身、睡眠、安静状态
- 训练 Loss 收敛至 0.0175,模型精度优异
-
📊 自动化数据处理管道
- 视频自动抽帧,高效数据采集
- 多种数据增强:亮度调整、角度变换、随机裁剪、镜像翻转
- JSON 格式化标注,支持批量数据处理
-
🚀 高效推理部署
- 支持单张图像和视频批量推理
- 实时分类结果输出和可视化
- 混淆矩阵和分类报告生成
-
🔧 端云一体化架构
- 本地推理和云端微调相结合
- 灵活的配置管理系统
- 支持模型热更新
- Python 3.11+
- CUDA 12.0+ (推荐使用 GPU)
- 8GB+ 显存(推荐 16GB+)
# 克隆仓库
git clone https://github.com/Zsyyxrs/smart-crib-guard.git
cd smart-crib-guard
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txtpython scripts/inference/infer_image.py \
--image_path "path/to/image.jpg" \
--model_name_or_path "Qwen/Qwen2.5-VL-7B" \
--adapter_name_or_path "path/to/lora/adapter"python scripts/inference/infer_video.py \
--video_path "path/to/video.mp4" \
--model_name_or_path "Qwen/Qwen2.5-VL-7B" \
--adapter_name_or_path "path/to/lora/adapter" \
--output_dir "./output"python scripts/data/build_dataset.py \
--input_dir "path/to/raw/data" \
--output_json "dataset.json"smart-crib-guard/
├── README.md # 中文文档(主)
├── README_EN.md # 英文文档
├── LICENSE # MIT 许可证
├── requirements.txt # 依赖文件
├── pyproject.toml # 项目配置
│
├── src/
│ └── crib_guard/ # 核心包
│ ├── __init__.py
│ ├── data/ # 数据处理模块
│ │ ├── augmentation.py # 数据增强
│ │ ├── dataset.py # 数据集处理
│ │ └── processing.py # 数据预处理
│ ├── models/ # 模型模块
│ │ └── inference.py # 推理相关
│ └── utils/ # 工具函数
│ └── helpers.py # 辅助函数
│
├── scripts/ # 脚本目录
│ ├── train/ # 训练脚本
│ │ ├── train_lora.py # LoRA 微调
│ │ └── config/ # 训练配置
│ ├── data/ # 数据处理脚本
│ │ ├── build_dataset.py # 构建数据集
│ │ ├── augment.py # 数据增强
│ │ └── merge.py # 合并数据集
│ └── inference/ # 推理脚本
│ ├── infer_image.py # 图像推理
│ └── infer_video.py # 视频推理
│
├── result/ # 推理结果目录
│ ├── .gitkeep
│ └── README.md
│
├── output/ # 模型输出目录
│ ├── .gitkeep
│ └── README.md
│
└── data/ # 数据目录(仅本地)
├── .gitkeep
└── README.md
| 指标 | 数值 |
|---|---|
| 基础模型 | Qwen2.5-VL-7B |
| 微调方法 | LoRA (r=64, alpha=16) |
| 训练 Loss | 0.0175 ↓ |
| 识别类别数 | 9 种 |
| 推理延迟 | ~1.2s/图像 (GPU) |
| 序号 | 行为类别 | 风险等级 | 描述 |
|---|---|---|---|
| 1 | 翻身 | 低 | 婴儿自主翻身动作 |
| 2 | 爬床栏 | 高 | 婴儿尝试爬出床栏 |
| 3 | 哭闹 | 中 | 婴儿哭泣状态 |
| 4 | 吐奶 | 中 | 婴儿吐奶表现 |
| 5 | 打喷嚏 | 低 | 生理反射行为 |
| 6 | 打哈欠 | 低 | 正常睡眠迹象 |
| 7 | 转身 | 低 | 身体转向动作 |
| 8 | 睡眠 | 低 | 正常睡眠状态 |
| 9 | 安静状态 | 低 | 清醒且安静 |
原始视频
↓
[视频抽帧] → 帧序列
↓
[数据增强] → 多样化数据集
• 亮度调整
• 角度变换
• 随机裁剪
• 镜像翻转
↓
[JSON 标注] → 标准化格式
↓
[数据集构建] → 可用于训练
Qwen2.5-VL-7B (基础模型)
↓
[LoRA 适配器]
↓
[监督微调] (SFT)
• 训练配置:learning_rate=1e-4
• 批次大小:32
• 优化器:AdamW
↓
[收敛验证] Loss: 0.0175
↓
[模型合并] → 生产模型
输入(图像/视频)
↓
[预处理] → Qwen2.5-VL 格式
↓
[模型推理] → 分类结果
↓
[后处理] → 风险预警
↓
输出(分类结果 + 可视化)
from src.crib_guard.data import build_dataset
# 从原始视频构建数据集
dataset = build_dataset(
video_dir="./data/videos",
annotation_file="./data/annotations.json",
output_dir="./output/dataset"
)from src.crib_guard.models import InferenceEngine
engine = InferenceEngine(
model_name="Qwen/Qwen2.5-VL-7B",
adapter_path="./output/adapter",
device="cuda:0"
)
# 推理
results = engine.infer_video("path/to/video.mp4")
# 可视化
engine.visualize_results(results, output_path="./output/results.mp4")python scripts/inference/infer_video.py \
--video_path "test_video.mp4" \
--generate_report \
--save_confusion_matrix# Qwen2.5-VL-7B LoRA 微调配置
model_name_or_path: Qwen/Qwen2.5-VL-7B
adapter_name_or_path: null
lora_target: q_proj,v_proj,k_proj,o_proj,gate_proj,up_proj,down_proj
lora_rank: 64
lora_alpha: 16
lora_dropout: 0.1
dataset: baby_behavior
template: qwen_vl
learning_rate: 1e-4
num_train_epochs: 3
batch_size: 32# 推理参数
config = {
"model_name": "Qwen/Qwen2.5-VL-7B",
"adapter_path": "./output/adapter",
"temperature": 0.3,
"max_tokens": 128,
"device": "cuda:0"
}欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 MIT 许可证。详见 LICENSE 文件。
Shangyi Zhu
- GitHub: @Zsyyxrs
- Email: y5bcgb98fr@privaterelay.appleid.com
- 支持更多视觉模型(如 LLaVA, GPT-4V)
- 实时推理 Web 服务
- 移动端部署适配
- 更大规模数据集训练
- 行为预测和异常检测
最后更新: 2026-05-29
如有问题,欢迎通过 GitHub Issues 反馈。