牛只行为及种类识别数据集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.rhkb.cn/news/447332.html

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

相关文章

【MATLAB源码-第249期】基于matlab的信道量化反馈的预编码仿真,采用均匀量化方式和LDL分解的预编码。

操作环境: MATLAB 2022a 1、算法描述 基于信道量化反馈的预编码技术是当今无线通信系统中的一个核心研究方向。随着多输入多输出(MIMO)系统的广泛应用,如何有效地利用信道状态信息(CSI)进行预编码成为提…

用自己的数据集复现YOLOv5

yolov5已经出了很多版本了,这里我以目前最新的版本为例,先在官网下载源码:GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite 然后下载预训练模型,需要哪个就点击哪个模型就行&am…

统一时序预测模型,上下文长度首次扩展至千级别!!!

统一时序预测模型,上下文长度首次扩展至千级别,适用各类数据集! 今天给大家介绍一篇清华大学的时间序列预测最新工作,提出了统一的Transformer时序预测模型,能同时处理单变量和多变量时序预测,并将时序预测…

PPT分享:埃森哲-如何利用大数据进行数据挖掘与分析

PPT下载链接见文末~ 在当今信息爆炸的时代,大数据已成为企业决策、科学研究及社会发展的重要驱动力。数据挖掘与分析作为大数据应用的核心环节,能够帮助我们从海量数据中提取有价值的信息和知识。 本文将引导您了解如何利用大数据进行数据挖掘与分析&a…

Android从上帝视角来看PackageManagerService

戳蓝字“牛晓伟”关注我哦! 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章,技术文章也可以有温度。 前言 阅读该篇之前,建议先阅读下面的系列文章: Android深入理解包管理–PackageManagerService和它的“小伙伴…

苹果正式宣布:iPhone全面开放近场通信(Near Field Communication,简称NFC)【使用安全元件提供app内NFC数据交换功能】

文章目录 引言I iPhone的NFC功能开发者用户数据交换的体验革新安全与隐私II 知识扩展:近场通信(NFC)技术钱包NFC开关打开读取NFC标签(NFC tags )权限demo引言 2014年iPhone 6开始,苹果首次引入了NFC功能,但最初只允许自家的Apple Pay进行移动支付。慢慢地适配了交通卡,增…

【CSS】纯css3螺旋状loading加载特效

效果图 <div class"ai-loader"><div class"dot"></div><div class"dot"></div><div class"dot"></div><div class"dot"></div><div class"dot">&…

【AI知识点】三种不同架构的大语言模型(LLMs)的区别

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】 在自然语言处理&#xff08;NLP&#xff09;中&#xff0c;预训练语言模型&#xff08;LLMs, Large Language Models&#xff09;通常基于不同的架构&#xff0c;如仅编码器的模型&#xff08;Encoder-only&#xff09;、…

量子计算机的原理与物理实现

量子计算机的原理与物理实现很复杂 指导性原则 首先思考制备一台量子计算机需要些什么&#xff1f; 需要量子比特——二能级量子系统。除了量子计算机需要满足一些物理特性&#xff0c;它还必须要把量子比特绘制到某种初态上&#xff0c;以及测量系统的输出态。 而实验上的挑战…

基于SSM+微信小程序的实验室设备故障报修管理系统2

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM微信小程序的实验室设备故障报修管理系统2实现了管理员&#xff0c;用户&#xff0c;维修员三个角色。 管理员功能有 个人中心&#xff0c;用户管理&#xff0c;维修员管理&#…

[网络基础]——ICMP(互联网控制消息协议)协议介绍

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;网络通信基础TCP/IP专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年10月15日8点23分 在现代网络通信中&#xff0c;互联网控制消息协议&#xff08;ICMP&#xff09;扮演着至关重要的角色…

使用Go语言的gorm框架查询数据库并分页导出到Excel实例

文章目录 基本配置配置文件管理命令行工具: Cobra快速入门基本用法 生成mock数据SQL准备gorm自动生成结构体代码生成mock数据 查询数据导出Excel使用 excelize实现思路完整代码参考 入口文件效果演示分页导出多个Excel文件合并为一个完整的Excel文件 完整代码 基本配置 配置文…

Java项目实战II基于Spring Boot的问卷调查系统的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 基于Spring…

第十三章 RabbitMQ之消息幂等性

目录 一、引言 二、消息幂等解决方案 2.1. 方案一 2.2. 方案二 一、引言 幂等是一个数学概念&#xff0c;用函数表达式来描述是这样的&#xff1a;f(x) f(f(x)) 。在程序开发中&#xff0c;则是指同一个业务&#xff0c;执行一次或多次对业务状态的影响是一致的。有些业务…

【Web——HTML 初阶】网页设计标题

♥HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;是构建网页和Web应用的基础语言之一。它不是一种编程语言&#xff0c;而是一种标记语言&#xff0c;用于描述网页的结构和内容。HTML使用标签&#xff08;tags&#xff09;来标记不同类型的…

Jetpack-Room

Room是Android Jetpack中的一个组件&#xff0c;它提供了一个抽象层&#xff0c;帮助开发者在本地数据库&#xff08;如SQLite&#xff09;上进行持久化数据存储。Room通过简化数据库操作&#xff0c;使得数据管理变得更加容易和高效。 Room重要的概念 实体&#xff08;Entit…

[实时计算flink]CREATE DATABASE AS(CDAS)语句

CDAS支持整库级别的表结构和数据的实时同步&#xff0c;还支持表结构变更的同步。本文为您介绍CREATE DATABASE AS&#xff08;CDAS&#xff09;的使用方法&#xff0c;并提供了多种使用场景下的示例。 背景信息 CDAS是CTAS语法的一个语法糖&#xff0c;用于实现整库同步、多…

CesiumLab介绍

软考鸭小程序 学软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 CesiumLab是一个围绕Cesium平台设计的完整易用的数据预处理工具集&#xff0c;它旨在最大化提升三维数据可视化效率。本文将详细介绍CesiumLab的安装、主要功能…

【stm32】DMA的介绍与使用

DMA的介绍与使用 1、DMA简介2、存储器映像3、DMA框图4、DMA基本结构5、DMA请求6、数据宽度与对齐7、数据转运DMA&#xff08;存储器到存储器的数据转运&#xff09;程序编写&#xff1a; 8、ADC连续扫描模式DMA循环转运DMA配置&#xff1a;程序编写&#xff1a; 1、DMA简介 DM…

C++笔记之类三种的继承方式

C++笔记之类三种的继承方式 code review! 文章目录 C++笔记之类三种的继承方式1.《C++ Primer Plus》(第6版)中文版Page 5502.C++类继承方式与能否隐式向上转换的关系1.《C++ Primer Plus》(第6版)中文版Page 550 除基类私有成员变量外(基类公有成员变量和保护成员变量):…