YOLOv11室内宠物兔目标检测数据集
📊 数据集基本信息
- 目标类别: [‘Flemish_Giant_Rabbit’, ‘French_Lop_Rabbit’, ‘Holland_Lop_Rabbit’, ‘Lion_Head_Rabbit’, ‘Mini_Lop_Rabbit’, ‘Mini_Rex_Rabbit’, ‘Netherland Dwarf’, ‘Thai_Rabbit’]
- 中文类别:[‘佛兰德兔’, ‘法国垂耳兔’, ‘荷兰垂耳兔’, ‘狮子头兔’, ‘迷你垂耳兔’, ‘迷你雷克斯兔’, ‘荷兰侏儒兔’, ‘泰国兔’]
- 训练集
- 验证集
- 测试集
- 总计
📄 data.yaml 配置信息
该数据集提供了data.yaml文件,内容如下:
train: ../train/imagesval: ../valid/imagestest: ../test/imagesnc: 8names: ['Flemish_Giant_Rabbit', 'French_Lop_Rabbit', 'Holland_Lop_Rabbit', 'Lion_Head_Rabbit', 'Mini_Lop_Rabbit', 'Mini_Rex_Rabbit', 'Netherland Dwarf', 'Thai_Rabbit']
🖼️ 标注可视化
📝 数据集分析
YOLOv11室内宠物兔目标检测数据集
该数据集专注于室内环境中各类宠物兔的精准识别与定位,涵盖了佛兰德兔、法国垂耳兔、荷兰垂耳兔、狮子头兔、迷你垂耳兔、迷你雷克斯兔、荷兰侏儒兔及泰国兔等多种常见品种。通过高精度标注和多样化场景覆盖,为宠物管理、品种鉴定及智能监控系统提供了高质量的训练数据支持。
数据分布方面,该数据集包含269张图像,其中训练集225张、验证集22张、测试集22张,比例分配合理。这种划分方式确保了模型在不同场景下的泛化能力,同时验证集和测试集的设置能够有效评估模型性能,满足深度学习任务的需求。
从标注质量来看,所有图像均经过专业人员的精细标注,每个兔子实例都配有精确的边界框,且类别标签与实际图像内容完全一致。标注过程严格遵循统一标准,确保了数据的一致性和可靠性,为后续模型训练奠定了坚实基础。
该数据集可广泛应用于宠物行业、家庭智能监控系统以及动物保护领域。通过精准识别各类宠物兔,可以帮助宠物主人更好地了解其宠物特征,同时为动物园、宠物医院等场所提供智能化管理解决方案,具有重要的实用价值和社会意义。
## YOLOv11训练步骤### 一、环境安装```bashpip install ultralytics# 依赖要求:Python≥3.8,PyTorch≥1.8。安装完成后可通过 `yolo checks` 验证环境。
二、数据集准备(YOLO格式)
1. 目录结构
数据集必须严格按以下结构组织:
dataset/├── train/│ ├── images/ # 训练图片(jpg/png)│ └── labels/ # YOLO格式标注(txt)├── val/│ ├── images/│ └── labels/└── data.yaml # 数据集配置文件
2. YOLO标注格式
每个 *.txt 文件对应一张图片,每行格式为:
class_id center_x center_y width height
所有数值均为相对于图片宽高的归一化值(0~1)。
3. data.yaml 配置文件
# data.yamlpath: ../dataset # 数据集根目录(相对或绝对路径)train: train/images # 训练集图片路径val: val/images # 验证集图片路径test: test/images # 测试集图片路径(可选)# 类别信息nc: 2 # 类别数量names: ['class1', 'class2'] # 类别名称列表
三、模型选择
YOLO11 提供 5 种尺度,官方命名规则为 yolo11{n/s/m/l/x}.pt:
| | |
|---|
yolo11n | | |
yolo11s | | |
yolo11m | | |
yolo11l | | |
yolo11x | | |
四、模型训练
方式1:Python API(推荐)
创建 train.py:
from ultralytics import YOLOdef main(): # 加载预训练模型(推荐:基于COCO预训练权重微调) model = YOLO("yolo11m.pt") # 训练参数 train_params = { 'data': 'data.yaml', # 数据集配置文件 'epochs': 100, # 训练轮次 'imgsz': 640, # 输入图像尺寸 'batch': 16, # 批次大小(根据显存调整) 'device': '0', # GPU设备号,'cpu'表示CPU训练 'workers': 8, # 数据加载线程数 'optimizer': 'SGD', # 优化器:SGD/Adam/AdamW 'lr0': 0.01, # 初始学习率 'patience': 50, # 早停耐心值 'save': True, # 保存模型 'project': 'runs/train', # 项目保存路径 'name': 'exp', # 实验名称 'single_cls': False, # 单类别检测设为True 'close_mosaic': 10, # 最后N轮关闭马赛克增强 } # 开始训练 results = model.train(**train_params) # 输出最佳模型路径 print(f"Best model saved at: {results.best}")if __name__ == '__main__': main()
三种模型加载方式对比:
# 方式A:从YAML构建全新模型(从头训练,适合网络结构改进)model = YOLO("yolo11m.yaml")# 方式B:加载预训练权重(最常用,推荐)model = YOLO("yolo11m.pt")# 方式C:构建新模型并迁移预训练权重(改进网络后使用)model = YOLO("yolo11m.yaml").load("yolo11m.pt")
方式2:命令行 CLI
# 基础训练yolo detect train data=data.yaml model=yolo11m.pt epochs=100 imgsz=640 batch=16 device=0# 多GPU训练yolo detect train data=data.yaml model=yolo11m.pt epochs=100 device=0,1# 从YAML+预训练权重训练yolo detect train data=data.yaml model=yolo11m.yaml pretrained=yolo11m.pt epochs=100
五、关键训练参数说明
| | |
|---|
epochs | | |
imgsz | | |
batch | | |
device | | 0(单GPU)、0,1(多GPU)、cpu、mps(Apple芯片) |
workers | | |
optimizer | | SGD |
lr0 | | |
momentum | | |
weight_decay | | |
single_cls | | True |
resume | | True |
amp | | True |
六、模型验证
创建 val.py:
from ultralytics import YOLOdef main(): # 加载训练好的最佳权重 model = YOLO('runs/train/exp/weights/best.pt') # 验证 metrics = model.val( data='data.yaml', split='val', # 验证集:'val' 或 'test' imgsz=640, batch=16, iou=0.6, # NMS IoU阈值 device='0', save_json=False, # 是否保存COCO格式JSON ) # 输出关键指标 print(f"mAP50-95: {metrics.box.map}") # mAP@0.5:0.95 print(f"mAP50: {metrics.box.map50}") # mAP@0.5 print(f"mAP75: {metrics.box.map75}") # mAP@0.75if __name__ == '__main__': main()
CLI 方式:
yolo detect val model=runs/train/exp/weights/best.pt data=data.yaml
七、模型推理/预测
创建 predict.py:
from ultralytics import YOLOimport cv2def main(): model = YOLO('runs/train/exp/weights/best.pt') # 单张图片推理 results = model.predict( source='test_images/', # 图片路径、文件夹、URL或摄像头索引(0) imgsz=640, conf=0.25, # 置信度阈值 iou=0.45, # NMS IoU阈值 device='0', save=True, # 保存结果图 show=False, # 是否弹窗显示 ) # 遍历结果 for result in results: boxes = result.boxes # 检测框 masks = result.masks # 分割掩码(如使用分割模型) probs = result.probs # 分类概率 # 获取坐标、置信度、类别 for box in boxes: x1, y1, x2, y2 = box.xyxy[0].tolist() conf = box.conf[0].item() cls = int(box.cls[0].item()) print(f"Class: {cls}, Conf: {conf:.2f}, Box: [{x1:.1f}, {y1:.1f}, {x2:.1f}, {y2:.1f}]")if __name__ == '__main__': main()
CLI 方式:
yolo detect predict model=runs/train/exp/weights/best.pt source=test_images/ save=True## 数据集下载> 小郭AI日志
数据集
YOLOv11室内宠物兔目标检测数据集-269张-rabbit-1_7.zip https://pan.baidu.com/s/1g1mRG4Tbykxx9-aFP_t-cw提取码:ftee