牛只行为及种类识别数据集18g牛只数据,适用于多种图像识别,目标检测,区域入侵检测等算法作为数据集。数据集中包括牛只行走,站立,进食,饮水等不同类型的数据

18g牛只数据,适用于多种图像识别,目标检测,区域入侵检测等算法作为数据集。



数据集中包括牛只行走,站立,进食,饮水等不同类型的数据,可以用于行为检测

数据集中包含多种不同种类的牛只,可以用于牛只的种类识别。
数据集大小约为218g,其中包括牛只视频及已经标注好的部分数据。

牛只行为及种类识别数据集介绍

数据集概述

名称:牛只行为及种类识别数据集
数据类型:图像和视频
数据量:约218GB
用途:该数据集专为多种图像识别、目标检测、区域入侵检测等任务设计,适用于农业自动化、动物行为分析、农场管理等领域。通过使用深度学习模型(如卷积神经网络CNN、目标检测模型如YOLO或SSD),可以实现对牛只行为的准确分类和种类识别。

数据集特点
  • 大规模:包含约218GB的数据,提供了丰富的训练资源。
  • 多样性
    • 行为多样性:包括牛只行走、站立、进食、饮水等多种行为。
    • 种类多样性:涵盖多种不同种类的牛只,支持种类识别任务。
  • 高质量标注:部分数据已经进行了详细的标注,确保了标注的准确性。
  • 实际应用场景:数据来源于真实的农场环境,具有很高的实用价值。
  • 多模态:包含图像和视频两种数据形式,适用于不同的算法需求。
应用领域
  • 行为检测:监测牛只的行为模式,帮助农场主了解牛只的健康状况和生活习惯。
  • 种类识别:区分不同种类的牛只,辅助农场管理和育种计划。
  • 区域入侵检测:监控特定区域,防止牛只进入危险或禁止进入的区域。
  • 自动化管理:结合自动化系统,实现对农场的智能化管理。
  • 数据分析:通过数据分析,提供关于牛只行为和种类分布的统计报告,支持决策制定。
数据集结构
  • 图像数据:包含不同场景下的牛只图像,用于图像分类和目标检测任务。
  • 视频数据:包含牛只在不同时间段的行为记录,用于行为分析和连续帧处理。
  • 标注文件
    • 图像标注:使用常见的标注格式(如PASCAL VOC、COCO等)进行标注。
    • 视频标注:包含时间戳和行为标签,用于行为序列分析。
获取方式

通常情况下,研究人员可以通过官方提供的链接或相关机构网站下载该数据集。请注意,使用时应遵循相应的许可协议和引用要求。

关键代码示例

1. 下载数据集

假设我们已经有了数据集的下载链接,可以使用 Python 的 requests 库来下载数据集:

import requests
import os# 定义下载链接和保存路径
url = 'http://example.com/path/to/cattle_behavior_dataset.zip'  # 替换为实际的下载链接
save_path = './cattle_behavior_dataset.zip'# 检查是否已经下载过
if not os.path.exists(save_path):print("Downloading dataset...")response = requests.get(url, stream=True)with open(save_path, 'wb') as f:for chunk in response.iter_content(chunk_size=8192):if chunk:f.write(chunk)print("Download complete.")
else:print("Dataset already exists.")# 解压数据集
import zipfile
with zipfile.ZipFile(save_path, 'r') as zip_ref:zip_ref.extractall('./cattle_behavior_dataset')
2. 加载和显示图像及其标注

以下是一个加载和显示图像及其标注框的示例:

import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
import xml.etree.ElementTree as ETdef load_image_and_annotations(image_path, annotation_path):image = Image.open(image_path).convert("RGB")tree = ET.parse(annotation_path)root = tree.getroot()annotations = []for obj in root.findall('object'):name = obj.find('name').textbbox = obj.find('bndbox')xmin = int(bbox.find('xmin').text)ymin = int(bbox.find('ymin').text)xmax = int(bbox.find('xmax').text)ymax = int(bbox.find('ymax').text)annotations.append((name, (xmin, ymin, xmax, ymax)))return image, annotationsdef display_image_with_annotations(image, annotations):fig, ax = plt.subplots(1, figsize=(10, 10))ax.imshow(image)for name, (xmin, ymin, xmax, ymax) in annotations:rect = plt.Rectangle((xmin, ymin), xmax - xmin, ymax - ymin, fill=False, edgecolor='red', linewidth=2)ax.add_patch(rect)ax.text(xmin, ymin, name, fontsize=12, color='white', bbox=dict(facecolor='red', alpha=0.5))plt.axis('off')plt.show()# 示例路径
image_path = './cattle_behavior_dataset/images/image_0001.jpg'
annotation_path = './cattle_behavior_dataset/annotations/image_0001.xml'image, annotations = load_image_and_annotations(image_path, annotation_path)
display_image_with_annotations(image, annotations)
3. 创建 YOLO 格式的数据集

YOLO 模型需要特定格式的数据集,通常包括图像文件和对应的标注文件(.txt 格式)。以下是一个将 XML 标注转换为 YOLO 格式的示例:

import os
import xml.etree.ElementTree as ETdef convert_to_yolo_format(xml_dir, img_dir, yolo_dir, classes):os.makedirs(yolo_dir, exist_ok=True)for xml_file in os.listdir(xml_dir):if not xml_file.endswith('.xml'):continuetree = ET.parse(os.path.join(xml_dir, xml_file))root = tree.getroot()image_name = root.find('filename').textimage_path = os.path.join(img_dir, image_name)image = Image.open(image_path)width, height = image.sizeyolo_file = os.path.splitext(xml_file)[0] + '.txt'yolo_path = os.path.join(yolo_dir, yolo_file)with open(yolo_path, 'w') as f:for obj in root.findall('object'):name = obj.find('name').textclass_id = classes.index(name)bbox = obj.find('bndbox')xmin = int(bbox.find('xmin').text)ymin = int(bbox.find('ymin').text)xmax = int(bbox.find('xmax').text)ymax = int(bbox.find('ymax').text)x_center = (xmin + xmax) / 2.0 / widthy_center = (ymin + ymax) / 2.0 / heightbox_width = (xmax - xmin) / widthbox_height = (ymax - ymin) / heightf.write(f"{class_id} {x_center} {y_center} {box_width} {box_height}\n")# 定义类名
classes = ['walking', 'standing', 'eating', 'drinking', 'cow_type1', 'cow_type2']  # 根据实际情况调整类别# 转换标注文件
convert_to_yolo_format(xml_dir='./cattle_behavior_dataset/annotations',img_dir='./cattle_behavior_dataset/images',yolo_dir='./cattle_behavior_dataset/yolo_annotations',classes=classes
)
4. 使用 YOLOv5 进行目标检测

以下是一个使用 YOLOv5 进行目标检测的简单示例:

  1. 安装 YOLOv5

    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
  2. 准备配置文件: 在 yolov5/data 目录下创建一个配置文件 cattle_behavior.yaml,内容如下:

    train: ./cattle_behavior_dataset/images/train
    val: ./cattle_behavior_dataset/images/val
    nc: 6
    names: ['walking', 'standing', 'eating', 'drinking', 'cow_type1', 'cow_type2']
  3. 划分数据集: 将数据集划分为训练集和验证集(例如,80% 训练集,20% 验证集)。

  4. 训练模型

    python train.py --img 640 --batch 16 --epochs 50 --data cattle_behavior.yaml --weights yolov5s.pt
  5. 评估模型

    python val.py --img 640 --batch 16 --data cattle_behavior.yaml --weights runs/train/exp/weights/best.pt
  6. 推理和可视化

     python 

    深色版本

    from yolov5 import detect# 加载模型
    model = torch.hub.load('ultralytics/yolov5', 'custom', path='runs/train/exp/weights/best.pt')# 推理单张图片
    results = model(image_path)# 显示结果
    results.show()
5. 视频数据处理

对于视频数据,可以逐帧处理并应用目标检测模型。以下是一个简单的示例:

import cv2def process_video(video_path, model, device, output_path):cap = cv2.VideoCapture(video_path)fourcc = cv2.VideoWriter_fourcc(*'XVID')out = cv2.VideoWriter(output_path, fourcc, 20.0, (int(cap.get(3)), int(cap.get(4))))while cap.isOpened():ret, frame = cap.read()if not ret:break# 转换为 RGB 并进行预测frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)results = model(frame_rgb)# 可视化结果frame_bgr = cv2.cvtColor(np.array(results.imgs[0]), cv2.COLOR_RGB2BGR)out.write(frame_bgr)cap.release()out.release()# 示例路径
video_path = './cattle_behavior_dataset/videos/video_0001.mp4'
output_path = './cattle_behavior_dataset/output/video_0001_output.avi'process_video(video_path, model, device, output_path)

通过上述步骤,您将拥有一个完整的牛只行为及种类识别系统,包括数据集、预训练模型和相关的训练流程。希望这些代码能帮助您更好地利用该数据集!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/882383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黑盒测试 | 挖掘.NET程序中的反序列化漏洞

通过不安全反序列化漏洞远程执行代码 今天,我将回顾 OWASP 的十大漏洞之一:不安全反序列化,重点是 .NET 应用程序上反序列化漏洞的利用。 📝$ _序列化_与_反序列化 序列化是将数据对象转换为字节流的过程,字节流可以…

基于SpringBoot+Vue+uniapp的诗词学习系统的详细设计和实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不…

Maxwell 底层原理 详解

Maxwell 是一个 MySQL 数据库的增量数据捕获(CDC, Change Data Capture)工具,它通过读取 MySQL 的 binlog(Binary Log)来捕获数据变化,并将这些变化实时地发送到如 Kafka、Kinesis、RabbitMQ 或其他输出端。…

0x3D service

0x3D service 1. 概念2. Request message 数据格式3. Respone message 数据格式3.1 正响应格式3.2 negative respone codes(NRC)4. 示例4.1 正响应示例:4.2 NRC 示例1. 概念 UDS(统一诊断服务)中的0x3D服务,即Write Memory By Address(按地址写内存)服务,允许客户端向服…

2024年中国工业大模型行业发展研究报告|附43页PDF文件下载

工业大模型伴随着大模型技术的发展,逐渐渗透至工业,处于萌芽阶段。 就大模型的本质而言,是由一系列参数化的数学函数组成的计算系统,且是一个概率模型,其工作机制是基于概率和统计推动进行的,而非真正的理解…

aardio 中最重要的控件:自定义控件使用指南

aardio虽然是个小众编程语言,但其在windows下做个小软件生成exe文件,确实方便。只是这个编程语言的生态圈小,文档的详细程度也完全无法和大的编程语言相提并论。今天介绍一下,aardio中的自定义控件如何使用。 这里我们只介绍如何做…

python 作业1

任务1: python为主的工作是很少的 学习的python的优势在于制作工具,制作合适的工具可以提高我们在工作中的工作效率的工具 提高我们的竞争优势。 任务2: 不换行 换行 任务3: 安装pycharm 进入相应网站Download PyCharm: The Python IDE for data science and we…

AnaTraf | TCP重传的工作原理与优化方法

目录 什么是TCP重传? TCP重传的常见触发原因 TCP重传对网络性能的影响 1. 高延迟与重传 2. 吞吐量的下降 如何优化和减少TCP重传 1. 优化网络设备配置 2. 优化网络链路 3. 网络带宽的合理规划 4. 部署CDN和缓存策略 结语 AnaTraf 网络性能监控系统NPM | …

餐饮店怎么标注地图位置信息?

随着市场竞争的日益激烈,商家若想在竞争中脱颖而出,就必须想方设法去提高自身的曝光度和知名度,为店铺带来更多的客流量。其中,地图标注便是一种简单却极为有效的方法。通过在地图平台上添加店铺位置信息,不仅可以方便…

Qt-系统文件相关介绍使用(61)

目录 描述 输⼊输出设备类 打开/读/写/关闭 使用 先初始化,创建出大致的样貌 输入框设置 绑定槽函数 保存文件 打开文件 提取文件属性 描述 在C/C Linux 中我们都接触过关于文件的操作,当然 Qt 也会有对应的文件操作的 ⽂件操作是应⽤程序必不…

【C语言】文件操作(1)(文件打开关闭和顺序读写函数的万字笔记)

文章目录 一、什么是文件1.程序文件2.数据文件 二、数据文件1.文件名2.数据文件的分类文本文件二进制文件 三、文件的打开和关闭1.流和标准流流标准流 2.文件指针3.文件的打开和关闭文件的打开文件的关闭 四、文件的顺序读写1.fgetc函数2.fputc函数3.fgets函数4.fputs函数5.fsc…

微信小程序上传组件封装uploadHelper2.0使用整理

一、uploadHelper2.0使用步骤说明 uploadHelper.js ---上传代码封装库 cos-wx-sdk-v5.min.js---腾讯云,对象存储封装库 第一步,下载组件代码,放置到自己的小程序项目中 第二步、 创建上传对象,执行选择图片/视频 var _this th…

npm install进度卡在 idealTree:node_global: sill idealTree buildDeps

ping一下源:ping http://registry.npm.taobao.org/ ping不通,原因:原淘宝npm永久停止服务,已更新新域名~~震惊!!! 重新安装:npm config set registry https://registry.npmmirror.c…

推荐?还是踩雷?3款中英互译软件大盘点,你真的选对了吗?

作为一个爱到处跑的人,我特别明白旅行的时候能说会道有多重要。不管是跟当地人聊天,还是看路标、菜单,有个好用的翻译软件是肯定少不了的。今天,我打算给你们介绍3款中英文互译的翻译工具,帮你挑出最适合自己的那一个。…

机器学习:opencv--人脸检测以及微笑检测

目录 前言 一、人脸检测的原理 1.特征提取 2.分类器 二、代码实现 1.图片预处理 2.加载分类器 3.进行人脸识别 4.标注人脸及显示 三、微笑检测 前言 人脸检测是计算机视觉中的一个重要任务,旨在自动识别图像或视频中的人脸。它可以用于多种应用&#xff0…

Python和MATLAB锂电铅蓄电化学微分模型和等效电路

🎯要点 对比三种电化学颗粒模型:电化学的锂离子电池模型、单粒子模型和带电解质的单粒子模型。求解粒子域内边界通量与局部电流密度有关的扩散方程。扩展为两个相的负或正电极复合电极粒子模型。模拟四种耦合机制下活性物质损失情况。模拟锂离子电池三参…

【PhpSpreadsheet】ThinkPHP5+PhpSpreadsheet实现批量导出数据

目录 前言 一、安装 二、API使用 三、完整实例 四、效果图 前言 为什么使用PhpSpreadsheet? 由于PHPExcel不再维护,所以建议使用PhpSpreadsheet来导出exlcel,但是PhpSpreadsheet由于是个新的类库,所以只支持PHP7.1及以上的版…

服务器数据恢复—RAID5阵列上层Linux操作系统中节点损坏的数据恢复案例

服务器数据恢复环境: 一台服务器上有一组由5块硬盘(4块数据盘1块热备盘)组建的raid5阵列。服务器安装Linux Redhat操作系统,运行一套基于oracle数据库的OA系统。 服务器故障: 这组raid5阵列中一块磁盘离线&#xff0c…

观测云 AI 助手上线:智能运维,从此触手可及!

在当前的云原生时代,运维的复杂性和数据的爆炸式增长给企业带来了前所未有的挑战。为了帮助企业高效应对这些挑战,观测云自豪地推出了 AI 助手——智能化的运维助手,让每位用户都能轻松驾驭复杂的可观测性场景。 01 你身边的 PE 助手&#x…

《重置MobaXterm密码并连接Linux虚拟机的完整操作指南》

目录 引言 一、双击MobaXterm_Personal_24.2进入,但是忘记密码。 那么接下来请跟着我操作。 二、点击此链接,重设密码。 三、下载完成后,现在把这个exe文件解压。注意解压要与MobaXterm_Personal_24.2.exe在同一目录下哦,不然…