本项目基于 MoViNet(Mobile Video Networks)模型,通过视频识别宠物是否在进行“拆家”行为(如抓咬沙发、咬鞋、翻倒物品等)。适用于家庭监控、宠物看护、智能告警等场景。
- 🚀 使用 Google MoViNet 模型,轻量级、低延迟,适合边缘端侧设备部署
- 🐱🐶 识别宠物是否在“拆家”
- 🎥 支持任意长度视频推理(定长固定窗口处理)
- 📦 提供完整训练和推理脚本
- 📊 输出视频识别类别与置信度
MoViNet 是 Google 提出的轻量级视频动作识别网络,具备以下特点:
- ✔️ 可因果卷积(适合流式输入)
- ✔️ 时间建模 + 空间建模 同步处理
- ✔️ 端到端训练,适配视频序列
- ✔️ 多种规格(A0 ~ A5),可按需选择
本项目使用 MoViNet-A0 (stream 或 base 模式)作为主干网络,并进行了二分类微调(拆家 / 正常)。
本项目支持自行采集或公开数据集构建,组织如下:
dataset/
├── train/ # 训练集
├── mess/ # 拆家视频
├── normal/ # 正常行为视频
├── val/ # 验证集
├── mess/ # 拆家视频
├── normal/ # 正常行为视频
每段视频不定长度,每段视频帧数可变,命名自由,格式支持 .mp4/.avi/.mov 等。
| 类型 | 示例数量 | 建议用途 |
|---|---|---|
| mess | 500+ | 训练 + 验证 |
| normal | 500+ | 训练 + 验证 |
划分方式:
-
训练集:80%
-
验证集:20%
-
注意: 目前训练集视频数量在100+,验证集数量在50+。(后续升级中...)
conda create -n movinet python=3.9
conda activate movinet
pip install torch torchvision
tpip install einops opencv-python tqdm
pip install tensorflow tensorflow-hubpython train_streaming_pro.py默认使用 32 帧 + 图像尺寸 224×224 (MoViNet-A0也支持 128×128, 按照需求调整)。
推理脚本支持对任意视频段以及视频流地址进行视频分析:
python inference.py输出:
[clip][预测结果] 类别: mess(拆家) | 置信度: 0.91
- 使用 OpenCV 读取视频并提取固定数量帧(默认 32 帧)
- 每帧 resize 为 244x244 并归一化处理
- 堆叠为
[B, C, T, H, W]格式输入模型 (pytorch版本, tensorflow需要改变输入格式) - 输出分类结果(拆家 / 正常)和对应置信度
可用于部署边端设备(待完善):
torch.onnx.export(model, dummy_input, "model.onnx", opset_version=11)- [✓] MoViNet 模型训练与推理流程
- [✓] 视频拆帧预处理支持
- [✓] 流式推理(逐帧)
- 数据集调整
- 集成视频流展示
- 移动部署适配
.
├── dataset/ # 数据目录
│ ├── train/
│ └── val/
├── net/ # MoViNet 模型定义
│ ├── cfg.py # 模型配置参数
│ ├── modelA0_statedict # 模型权重
│ ├── movinet.py # MoViNet_A0 模型加载
│ └── transforms.py # 数据预处理
├── runs/ # 模型训练日志
├── export.py # 模型导出
├── inference.py # 视频推理脚本
├── checkpoints/ # 训练输出模型权重
├── load_dataset_with_video.py # 加载视频数据集
│── README.md # 项目介绍
│── train_model.py # 模型训练脚本
├── train_streaming.py # 流式模型训练脚本
- 作者:Kend 🇨🇳
- 邮箱:kendtank@163.com
- 时间:2025年7月
如有交流或部署协作需求,请通过邮件联系我。