老鼠目标检测数据集(3000张)
一、数据集概述
老鼠目标检测数据集(Mouse Detection Dataset)旨在支持室内外鼠类目标检测、自动识别与行为分析等任务。该数据集共包含 3000 张高质量图像,每张图像中均包含一个或多个老鼠目标,覆盖了多种环境、姿态与光照条件,能够有效支持目标检测模型(如 YOLOv8、Faster R-CNN、SSD 等)的训练与评估。
-
📊 图像总数:3001 张
-
🏷 目标框数:3958
-
📁 标注格式:Yolo 格式、Xml 格式、Json格式
标注后的数据集如下所示:



二、数据标注说明
本数据集包含 1 个目标类别:老鼠(rat),并同时提供了三种主流标注格式:JSON、XML、YOLO,以便适配不同类型的目标检测模型。
-
在 JSON 与 XML 格式中,类别名称均以英文
"rat"表示; -
在 YOLO 格式中,类别以从 0 开始的阿拉伯数字编号表示,即:
| 类别编号 | 英文名称 | 中文名称 |
|---|---|---|
| 0 | rat | 老鼠 |
三种格式的标签均精确标注了每张图像中一个或多个老鼠目标的边界框信息。所有标注均由人工审核,确保位置与尺寸的准确性,可直接用于主流检测算法的训练与验证。
三、数据集划分
下面代码主要作用是将原始数据集按比例划分为训练集、验证集和测试集,并分别保存对应的图像和YOLO格式标签文件。具体过程如下:
- 读取数据源路径:程序首先定义了包含所有图像和YOLO标签的原始路径。
- 获取图像列表并打乱顺序:通过读取图像文件名列表并使用 random.shuffle() 随机打乱,实现数据的随机分布。
- 按照7:2:1的比例划分数据集:分别确定训练集、验证集和测试集的数量,并获取对应文件名。(可自行地定义划分比例)
- 创建目标文件夹并复制文件:程序依次为训练集、验证集和测试集创建对应的图像与标签保存路径,并将图像文件和标签文件分别复制过去。
import os
import random
import shutilroot_dir = r"./data_sum"
save_root_dir = r"./data_split"image_sum_dir = os.path.join(root_dir, "images")
label_yolo_sum_dir = os.path.join(root_dir, "labels_yolo")# 获取文件夹下所有图片名称
image_list = os.listdir(image_sum_dir)
image_list = [name for name in image_list if name.endswith(".jpg")]# 随机打乱文件名列表
random.shuffle(image_list)# 划分训练集和验证集
train_ratio = 0.7
val_ratio = 0.2
test_ratio = 0.1num_images = len(image_list)
num_train = int(num_images * train_ratio)
num_val = int(num_images * val_ratio)
num_test = num_images - num_train - num_val
print("num_images:{} num_train:{} num_val:{} num_test:{}".format(num_images, num_train, num_val, num_test))# 获取训练集和验证集名字
train_names = image_list[:num_train]
val_names = image_list[num_train: num_train + num_val]
test_names = image_list[num_train + num_val: num_images]# 训练集图片及标签保存路径
save_train_images_path = os.path.join(save_root_dir, "images", "train")
save_train_labels_path = os.path.join(save_root_dir, "labels", "train")if not os.path.exists(save_train_images_path):os.makedirs(save_train_images_path)if not os.path.exists(save_train_labels_path):os.makedirs(save_train_labels_path)for name in train_names:# 图像image_path = os.path.join(image_sum_dir, name)label_path = os.path.join(label_yolo_sum_dir, name.split(".jpg")[0] + ".txt")assert os.path.exists(image_path), "file:{} not exist ...".format(image_path)assert os.path.exists(label_path), "file:{} not exist ...".format(label_path)shutil.copy(image_path, save_train_images_path)shutil.copy(label_path, save_train_labels_path)# 验证集图片及标签保存路径
save_val_images_path = os.path.join(save_root_dir, "images", "val")
save_val_labels_path = os.path.join(save_root_dir, "labels", "val")if not os.path.exists(save_val_images_path):os.makedirs(save_val_images_path)if not os.path.exists(save_val_labels_path):os.makedirs(save_val_labels_path)for name in val_names:# 图像image_path = os.path.join(image_sum_dir, name)label_path = os.path.join(label_yolo_sum_dir, name.split(".jpg")[0] + ".txt")assert os.path.exists(image_path), "file:{} not exist ...".format(image_path)assert os.path.exists(label_path), "file:{} not exist ...".format(label_path)shutil.copy(image_path, save_val_images_path)shutil.copy(label_path, save_val_labels_path)# 测试图片及标签保存路径
save_test_images_path = os.path.join(save_root_dir, "images", "test")
save_test_labels_path = os.path.join(save_root_dir, "labels", "test")if not os.path.exists(save_test_images_path):os.makedirs(save_test_images_path)if not os.path.exists(save_test_labels_path):os.makedirs(save_test_labels_path)for name in test_names:# 图像image_path = os.path.join(image_sum_dir, name)label_path = os.path.join(label_yolo_sum_dir, name.split(".jpg")[0] + ".txt")assert os.path.exists(image_path), "file:{} not exist ...".format(image_path)assert os.path.exists(label_path), "file:{} not exist ...".format(label_path)shutil.copy(image_path, save_test_images_path)shutil.copy(label_path, save_test_labels_path)
四、应用场景
该数据集可广泛应用于以下方向:
-
智能捕鼠系统与自动告警
-
粮仓、仓储、厨房等环境的害鼠识别
-
生物实验室动物行为分析
-
城市与农业环境的智能监测
本文数据集是在一些网站上搜集的,由于搜集的图片大多不带标注,自己进行了准确地标注,识别效果良好。如有需求,请支持。数据集链接——老鼠目标检测数据集(3000张)
