近年来,随着智能家居设备的普及,宠物监控系统开始受到宠物主人的广泛关注。相比于传统的视频记录或GPS追踪,基于视觉的宠物行为识别系统能更精准地判断宠物的日常活动,如“吃饭、睡觉、玩耍、乱抓沙发、翻垃圾桶”等行为。
应用场景包括: 宠物健康监测:监控是否进食、是否活跃。异常行为预警:例如过度舔舐、频繁走动等可能预示健康问题。智能喂食控制:根据行为识别,合理安排投喂时间。训练辅助工具:识别错误行为并及时反馈。整个系统可以拆分为以下模块:
diff 复制编辑 +------------------------+ | 摄像头实时捕捉视频 | +------------------------+ ↓ +------------------------+ | YOLOv8行为检测 | +------------------------+ ↓ +------------------------+ | 行为时序分析模块 | +------------------------+ ↓ +------------------------+ | UI界面可视展示 | +------------------------+ ↓ +------------------------+ | 活动统计与日志输出 | +------------------------+
123456789101112131415161718192021我们选择以下两个主要的数据集,结合自定义标注:
1. Stanford Dogs Dataset用于获取不同姿态下的狗狗图像。
2. Kaggle Cats and Dogs Dataset提供丰富的猫狗图像,可用于基础训练。
3. 自定义行为数据标注(强烈推荐)我们使用Label Studio或Roboflow自行采集了以下几种行为数据:
行为类别描述eating低头进食,碗或罐头前sleeping卧倒、眼睛闭合walking四肢运动,步伐移动明显playing翻滚、跳跃、追逐等行为barking/meowing嘴部张开,抬头发声scratching抓挠家具、墙壁、地面等 数据格式我们采用YOLO格式(.txt文件):
php-template 复制编辑 <class> <x_center> <y_center> <width> <height> 123
bash 复制编辑 pip install ultralytics opencv-python PyQt5 123 YOLOv8训练命令
bash 复制编辑 yolo task=detect mode=train model=yolov8s.pt data=pet_behavior.yaml epochs=100 imgsz=640 123 pet_behavior.yaml 示例:
yaml 复制编辑 path: ./datasets/pet_behavior train: images/train val: images/val test: images/test names: 0: eating 1: sleeping 2: walking 3: playing 4: barking 5: scratching
1234567891011121314在YOLOv8检测出某一帧的行为后,我们使用滑动窗口的时间序列方法统计频次。例如:
python 复制编辑 from collections import deque, Counter buffer = deque(maxlen=100) # 最近100帧行为缓存 def update_behavior(label): buffer.append(label) counter = Counter(buffer) return counter.most_common()
12345678910可以生成如下模式图:
plaintext 复制编辑 ⏰时间段:08:00 - 09:00 行为分布: - eating: 10% - playing: 45% - sleeping: 30% - walking: 15% 12345678
使用 PyQt5 搭建轻量级前端:
界面功能: 实时视频流显示 实时识别结果展示 行为统计图 日志存储 界面核心代码:python 复制编辑 # main_ui.py from PyQt5.QtWidgets import QApplication, QLabel, QVBoxLayout, QPushButton, QWidget from PyQt5.QtGui import QPixmap, QImage import cv2, sys class PetBehaviorUI(QWidget): def __init__(self): super().__init__() self.setWindowTitle("Pet Behavior Analyzer") self.image_label = QLabel("摄像头未打开") self.btn_start = QPushButton("启动检测") self.btn_start.clicked.connect(self.start_camera) layout = QVBoxLayout() layout.addWidget(self.image_label) layout.addWidget(self.btn_start) self.setLayout(layout) def start_camera(self): # 加载YOLO模型 from ultralytics import YOLO model = YOLO("runs/detect/train/weights/best.pt") cap = cv2.VideoCapture(0) while cap.isOpened(): ret, frame = cap.read() if not ret: break results = model.predict(frame, conf=0.4) annotated_frame = results[0].plot() rgb_image = cv2.cvtColor(annotated_frame, cv2.COLOR_BGR2RGB) h, w, ch = rgb_image.shape bytes_per_line = ch * w qt_image = QImage(rgb_image.data, w, h, bytes_per_line, QImage.Format_RGB888) self.image_label.setPixmap(QPixmap.fromImage(qt_image)) cap.release() if __name__ == "__main__": app = QApplication(sys.argv) ui = PetBehaviorUI() ui.show() sys.exit(app.exec_())
123456789101112131415161718192021222324252627282930313233343536373839404142434445我们将分析结果保存为 CSV 或 JSON,并用 matplotlib 可视化:
python 复制编辑 import matplotlib.pyplot as plt def plot_behavior_pie(counter): labels = counter.keys() sizes = counter.values() plt.pie(sizes, labels=labels, autopct='%1.1f%%') plt.title("宠物行为分布") plt.show()
12345678910本项目系统性地展示了如何通过 YOLOv8 实现猫狗行为模式检测,并配套开发了实时UI可视化界面。通过训练自定义行为数据集,我们可实现较高精度的宠物行为监测,为未来的智慧宠物管理系统奠定了坚实基础。
相关知识
PetBehaviorAnalyzer:基于YOLOv8的宠物行为研究系统 —— 猫狗活动模式检测与可视化分析
深度学习在宠物行为研究中的应用:基于YOLOv10的猫狗活动模式分析
鸟类领域超大规模检测实践,基于YOLOv8轻量级检测模型开发构建超大规模生活场景下500种鸟类检测识别分析系统
基于深度学习的吸烟行为检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)
VisionAgent宠物行为分析:动物活动监测与异常行为预警
基于深度学习的多目标检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)
基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的障碍物检测系统(深度学习代码+UI界面+训练数据集)
基于深度学习的血细胞检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)
基于AI的宠物行为分析
基于深度学习的安全帽检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)
网址: PetBehaviorAnalyzer:基于YOLOv8的宠物行为研究系统 —— 猫狗活动模式检测与可视化分析 https://m.mcbbbk.com/newsview1331366.html
| 上一篇: 6000亿宠物经济背后的‘情感刚 |
下一篇: 宠物发情期攻略—读懂毛孩子的 & |