# OSSP **Repository Path**: Tik_na/ossp ## Basic Information - **Project Name**: OSSP - **Description**: 本项目基于YOLOv11深度学习框架,实现了鸟类(Bird)与无人机(Drone)的高精度智能检测与识别。项目针对两类目标进行了专门优化,提供了完整的训练、验证和推理流程,适用于机场安全监控、野生动物保护、无人机管制等实际应用场景。 - **Primary Language**: Python - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-10-26 - **Last Updated**: 2026-01-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python, yolov11, YOLOV12, 目标检测 ## README
# 🚁 YOLOv11 鸟类与无人机智能检测系统 **基于YOLOv11的高精度Bird & Drone目标检测解决方案** [![Python](https://img.shields.io/badge/Python-3.8+-blue.svg)](https://www.python.org/) [![YOLOv11](https://img.shields.io/badge/YOLOv11-Latest-green.svg)](https://github.com/ultralytics/ultralytics) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Gitee](https://img.shields.io/badge/Gitee-仓库-red.svg)](https://gitee.com/Tik_na/ossp) [功能特性](#功能特性) • [快速开始](#快速开始) • [使用文档](#使用文档) • [数据集](#数据集说明) • [常见问题](#常见问题)
--- ## 📖 项目简介 本项目基于**YOLOv11**深度学习框架,实现了鸟类(Bird)与无人机(Drone)的**高精度智能检测与识别**。项目针对两类目标进行了专门优化,提供了完整的训练、验证和推理流程,适用于机场安全监控、野生动物保护、无人机管制等实际应用场景。 ### ✨ 核心亮点 - 🎯 **高精度检测**:基于YOLOv11最新架构,检测精度高 - ⚡ **实时推理**:支持GPU加速,满足实时检测需求 - 🛠️ **开箱即用**:提供完整训练和推理脚本,快速上手 - 📊 **数据平衡**:约2000个训练样本,类别分布均衡 - 🔧 **易于定制**:支持自定义数据集训练和参数调优 - 📝 **详细文档**:提供完整的中文使用文档和故障排查指南 - **更新文档**:[UPDATE_LOG.md](UPDATE_LOG.md) - **yolov12版本**:在分支vToYolov12中 --- ## 🖼️ 效果展示 > 下图展示了模型在验证集上的实际检测效果: ### 🐦 鸟类检测效果(Bird Detection)
### 🚁 无人机检测效果(Drone Detection)
--- ## 🎯 功能特性 ### 1. 目标检测 - ✅ **鸟类检测**(Bird):准确识别画面中的鸟类目标 - ✅ **无人机检测**(Drone):精准定位无人机位置 - ✅ **实时视频流检测**:支持摄像头实时检测 - ✅ **批量图片检测**:支持文件夹批量处理 ### 2. 模型训练 - ✅ 从头训练(From Scratch) - ✅ 迁移学习(Transfer Learning) - ✅ 自定义数据集训练 - ✅ 训练过程可视化(TensorBoard) - ✅ 自动保存最佳模型 ### 3. 辅助工具(位于 `tools/` 目录) - ✅ **数据集标签验证工具**:`tools/validate_labels.py` - 快速检查标注正确性 - ✅ **标签自动修复工具**:`tools/fix_labels.py` - 批量修正类别标注 - ✅ **检测结果可视化**:`detect_multi.py` 或 `tools/visualize_results.py` - 生成带标注的检测结果图 - ✅ **性能评估报告**:`tools/evaluate_model.py` - 混淆矩阵、PR曲线、mAP指标 - ✅ **综合检测评估系统**:`tools/detection_evaluator.py` 🆕 - 完整评估流程、Markdown报告生成 --- ## 🚀 快速开始 ### 环境要求 - **Python**: 3.8+ - **CUDA**: 11.0+ (GPU训练推荐) - **内存**: 8GB+ RAM - **存储**: 5GB+ 可用空间 ### 方式一:pip 安装(推荐) 🔗 **PyPI 项目页面**:[https://test.pypi.org/project/bird-drone-detector/](https://test.pypi.org/project/bird-drone-detector/) ```bash # 从 TestPyPI 安装(当前版本 v1.3.0) pip install --index-url https://test.pypi.org/simple/ bird-drone-detector ``` 安装后可直接使用命令行工具: ```bash bird-drone-detect --source path/to/images --conf 0.25 bird-drone-train --epochs 150 ``` ### 方式二:克隆源码 ```bash # 1. 克隆项目 git clone https://gitee.com/Tik_na/ossp.git cd ossp # 2. 安装依赖 pip install -r requirements_project.txt # 或使用清华镜像加速 pip install -r requirements_project.txt -i https://pypi.tuna.tsinghua.edu.cn/simple ``` ### 快速推理 #### Python API 调用 ```python from bird_drone_detector import BirdDroneDetector # 初始化检测器 detector = BirdDroneDetector(weights="path/to/best.pt") # 检测图片 results = detector.detect("path/to/image.jpg", conf=0.25) # 批量检测 results = detector.detect_folder("path/to/images/") # 实时摄像头 detector.detect_camera(camera_id=0) ``` #### 命令行调用 ```bash # 使用预训练模型进行检测(需先训练模型) python detect_multi.py --source dataset2/images/val # 检测单张图片 python detect_multi.py --source path/to/your/image.jpg --conf 0.25 # 检测Imagedata目录 python detect_multi.py --source dataset2/Imagedata # 实时摄像头检测 python detect_multi.py --source 0 --show ``` --- ## 📦 安装指南 ### 方法一:使用requirements_project.txt(推荐) ```bash pip install -r requirements_project.txt ``` ### 方法二:手动安装核心依赖 ```bash pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install ultralytics pip install opencv-python pip install numpy pandas matplotlib ``` ### 验证安装 ```bash python -c "from ultralytics import YOLO; print('安装成功!')" ``` --- ## 📚 使用文档 ### 1️⃣ 数据准备 项目已包含预处理好的数据集,目录结构如下: ``` dataset2/ ├── images/ │ ├── train/ # 训练图片 (约1998张) │ │ ├── BTR (1).jpg # 鸟类图片 │ │ ├── DTR (1).jpg # 无人机图片 │ │ └── ... │ └── val/ # 验证图片 (约705张) │ ├── BV (1).jpg │ ├── DV (1).jpg │ └── ... └── labels/ ├── train/ # 训练标签 │ ├── BTR (1).txt │ ├── DTR (1).txt │ └── ... └── val/ # 验证标签 ├── BV (1).txt ├── DV (1).txt └── ... ``` ### 2️⃣ 数据配置(开箱即用) ✅ **无需修改任何路径**!项目已配置好相对路径,克隆后即可直接使用。 数据集配置文件 `data.yaml`: ```yaml path: . # 项目根目录 train: dataset2/images/train # 训练图片(相对路径) val: dataset2/images/val # 验证图片(相对路径) nc: 2 # 类别数量 names: ['drone', 'bird'] # 类别定义 ``` > 💡 所有脚本均使用相对路径,支持跨平台(Windows/Linux/macOS)使用。 ### 3️⃣ 模型训练 ```bash # 开始训练(从头训练) python train.py ``` **训练参数说明**: ```python epochs=150 # 训练轮数,可调整为200-300 batch=8 # 批次大小,根据显存调整 imgsz=640 # 输入图片尺寸 optimizer='AdamW' # 优化器 device='' # 自动选择GPU或CPU workers=4 # 数据加载线程数 close_mosaic=30 # 数据增强参数 cache=True # 启用缓存加速 ``` **训练模式**: - 方案1(推荐):从头训练,避免类别混淆 - 方案2:使用预训练权重(如有yolo11n.pt) **训练监控**: ```bash # 使用TensorBoard查看训练过程 tensorboard --logdir runs/train ``` ### 4️⃣ 模型推理 #### 批量检测 ```bash # 检测验证集 python detect_multi.py --source dataset2/images/val # 检测Imagedata目录 python detect_multi.py --source dataset2/Imagedata # 指定输出目录 python detect_multi.py --source dataset2/images/val --save-dir runs/my_detect # 调整置信度阈值(默认0.25,可降低到0.1-0.2提高召回率) python detect_multi.py --source dataset2/images/val --conf 0.15 # 指定模型权重 python detect_multi.py --weights runs/train/exp__/weights/best.pt --source dataset2/images/val ``` #### 单张图片检测 ```bash python detect_multi.py --source path/to/image.jpg --show ``` #### 视频检测 ```bash python detect_multi.py --source path/to/video.mp4 --save ``` #### 实时摄像头检测 ```bash python detect_multi.py --source 0 --show ``` ### 5️⃣ 查看检测结果 检测结果保存在 `runs/detect/exp/` 目录: - 带标注框的图片 - 检测结果统计信息 - 置信度分数 --- ## 📊 数据集说明 ### 类别定义 | 类别ID | 类别名称 | 说明 | 文件前缀 | 样本数量 | |--------|----------|------|----------|----------| | 0 | drone | 无人机 | DTR, DV | ~999张训练 + 415张验证 | | 1 | bird | 鸟类 | BTR, BV | ~999张训练 + 290张验证 | ### 标注格式 YOLO格式标注,每行格式: ``` ``` **示例**: ``` 0 0.5 0.5 0.3 0.4 # drone位于图片中心,宽30%高40% 1 0.2 0.3 0.1 0.15 # bird位于左上区域 ``` ### 数据分布 - **训练集**:1998张图片,6287个标注框 - **验证集**:705张图片,约2500个标注框 - **类别平衡**:Drone占52.7%,Bird占47.3% ### 数据可视化
--- ## 🏗️ 项目结构 ``` ossp/ │ ├── train.py # 训练脚本(核心) ├── detect.py # 单次检测脚本 ├── detect_multi.py # 批量检测脚本(推荐) ├── data.yaml # 数据集配置文件(重要) ├── requirements_project.txt # 项目依赖 │ ├── dataset2/ # 数据集目录 │ ├── images/ # 图片文件 │ │ ├── train/ # 训练集图片 │ │ └── val/ # 验证集图片 │ ├── labels/ # 标注文件(YOLO格式) │ │ ├── train/ # 训练集标签 │ │ └── val/ # 验证集标签 │ └── Imagedata/ # 测试图片目录 │ ├── runs/ # 训练和检测结果(自动生成) │ ├── train/ # 训练输出 │ │ └── exp__/ # 训练实验结果 │ │ └── weights/ # 模型权重(best.pt, last.pt) │ └── detect/ # 检测输出 │ └── exp/ # 检测结果图片 │ ├── ultralytics/ # YOLOv11框架源码 │ └── cfg/models/11/ # 模型配置文件 │ └── yolo11.yaml # YOLOv11架构定义 │ ├── tools/ # 辅助工具脚本 │ ├── validate_labels.py # 数据集标签验证 │ ├── fix_labels.py # 标签批量修复 │ ├── visualize_results.py # 检测结果可视化 │ └── evaluate_model.py # 模型性能评估 │ ├── bird_drone_detector/ # Python包(pip安装用) │ ├── __init__.py │ ├── detector.py # 检测器类 │ └── trainer.py # 训练器类 │ ├── docs/ # 文档目录 │ ├── .gitignore # Git忽略文件 ├── .dockerignore # Docker忽略文件 └── README.md # 本文件 ``` --- ## 🎓 进阶使用 ### 自定义数据集训练 1. **准备数据**:按照YOLO格式准备图片和标签 - 图片放在 `images/train` 和 `images/val` - 标签放在 `labels/train` 和 `labels/val` - 标签格式:` `(归一化坐标) 2. **修改data.yaml**:更新类别信息(路径可保持相对路径) ```yaml path: . # 或自定义数据集目录 train: your_dataset/images/train val: your_dataset/images/val nc: 类别数量 names: ['类别1', '类别2', ...] ``` 3. **调整训练参数**:根据数据集大小调整epochs和batch 4. **开始训练**:运行 `python train.py` ### 模型优化 #### 提高精度 ```python # 在train.py中调整参数 epochs=300 # 增加训练轮数 imgsz=1280 # 增大输入尺寸 close_mosaic=50 # 调整数据增强 ``` #### 加快训练 ```python batch=16 # 增大批次(需要更大显存) workers=8 # 增加数据加载线程 cache=True # 启用缓存加速 ``` ### 超参数调优 ```bash # 自动超参数搜索 python train.py --hyp hyp.scratch-high.yaml --epochs 100 ``` --- ## 📈 性能指标 基于验证集的模型性能(v1.3.0 高分辨率优化版): | 指标 | 数值 | 说明 | |------|------|------| | **mAP@0.5** | **94.5%** 🏆 | IoU=0.5时的平均精度 | | **mAP@0.5:0.95** | **62.3%** | IoU=0.5:0.95时的平均精度 | | **Precision** | **93.8%** | 精确率 | | **Recall** | **89.2%** | 召回率 | | **F1-Score** | **91.4%** | F1分数 | | 推理速度 | ~2-5ms/张 | GPU加速 | #### 分类别性能 | 类别 | AP@50 | AP@50-95 | 评级 | |------|-------|----------|------| | 🚁 Drone | 95.2% | 64.8% | 🏆 优秀 | | 🐦 Bird | 93.8% | 59.7% | 🏆 优秀 | ### 训练曲线
### 混淆矩阵
--- ## ❓ 常见问题 ### Q1: 训练时显存不足怎么办? **A**: 减小batch size: ```python batch=4 # 或更小的值 ``` ### Q2: 检测结果不准确怎么办? **A**: 尝试以下方法: 1. 增加训练轮数:`epochs=200` 2. 降低检测阈值:`--conf 0.15` 3. 使用更大的输入尺寸:`--imgsz 1280` 4. 检查数据标注是否正确 ### Q3: 如何使用自己的数据集? **A**: 1. 准备YOLO格式的数据集(图片+txt标签) 2. 修改 `data.yaml` 中的相对路径和类别 3. 运行 `python train.py` **注意**:项目已配置相对路径,支持跨平台使用 ### Q4: 支持哪些图片格式? **A**: 支持 `.jpg`, `.jpeg`, `.png`, `.bmp`, `.tif`, `.tiff`, `.webp` ### Q5: 如何导出模型到其他格式? **A**: ```python from ultralytics import YOLO model = YOLO('runs/train/exp__/weights/best.pt') # 导出为ONNX model.export(format='onnx') # 导出为TensorRT model.export(format='engine') ``` ### Q6: 训练被中断了怎么恢复? **A**: ```python # 在train.py中设置 resume=True # 并指定中断的模型路径 model = YOLO('runs/train/exp__/weights/last.pt') ``` --- ## 🛠️ 故障排查 ### 问题:模型分不清bird和drone **解决方案**: 1. 确认没有加载错误的预训练权重 2. 检查 `data.yaml` 中类别定义是否正确: - 索引0 = drone(DTR开头的文件) - 索引1 = bird(BTR开头的文件) 3. 检查标签文件中的类别ID是否正确 4. 使用方案1从头训练模型(推荐) 5. 运行 `detect_multi.py` 时会打印模型类别定义,确认是否正确 ### 问题:CUDA out of memory **解决方案**: ```python batch=4 # 减小批次大小 workers=2 # 减少数据加载线程 cache=False # 关闭缓存 ``` ### 问题:训练loss不下降 **解决方案**: 1. 检查学习率是否合适 2. 检查数据增强是否过强 3. 尝试使用预训练权重 4. 检查数据标注质量 --- ## 🤝 贡献指南 欢迎贡献代码、报告问题或提出改进建议! ### 贡献流程 1. **Fork** 本仓库 2. **创建**特性分支 (`git checkout -b feature/AmazingFeature`) 3. **提交**更改 (`git commit -m 'Add some AmazingFeature'`) 4. **推送**到分支 (`git push origin feature/AmazingFeature`) 5. **提交** Pull Request ### 代码规范 - 遵循PEP 8编码规范 - 添加必要的注释和文档 - 测试代码后再提交 --- ## 📄 开源协议 本项目基于 **MIT License** 开源协议发布。 - ✅ 商业使用 - ✅ 修改代码 - ✅ 分发代码 - ✅ 私人使用 - ❗ 需保留版权声明 - ❗ 不提供责任担保 详见 [LICENSE](LICENSE) 文件。 --- ## 🙏 致谢 - [Ultralytics YOLOv11](https://github.com/ultralytics/ultralytics) - 提供优秀的检测框架 - PyTorch团队 - 提供深度学习框架 - 所有贡献者和用户 --- ## 📞 联系方式 - **Issues**: [提交问题](https://gitee.com/Tik_na/ossp/issues) - **Gitee**: [项目主页](https://gitee.com/Tik_na/ossp) --- ## 📝 更新日志 > 📋 **[查看完整更新日志 (UPDATE_LOG.md)](UPDATE_LOG.md)** ### v1.3.0 (2026-01-05) 🆕 **最新版本** - 🚀 **性能突破**:mAP@50 达到 **94.5%**,mAP@50-95 达到 **62.3%** - ✨ **高分辨率训练**:输入分辨率提升至 1280,显著提升小目标检测能力 - ✨ **模型升级**:采用 yolo11m 中等规模模型,特征提取能力大幅增强 - 🔧 **损失函数优化**:调整边框损失权重至 10.0,改善定位精度 - 🎯 **两类目标均达优秀**:Drone AP@50 95.2%,Bird AP@50 93.8% ### v1.2.0 (2025-12-26) - ✨ **知识蒸馏(KD)系统**:实现完整的教师-学生模型训练框架 - ✨ **YOLOv12支持**:集成YOLOv12模型架构和预训练权重 - ✨ **增强评估工具**:新增 `evaluate_model.py` 支持完整性能评估 - 🔧 **训练优化**:改进训练脚本参数配置和数据增强策略 - 🔧 **代码质量**:统一作者信息,规范化代码注释和文档 ### v1.1.0 (2025-12-01) - ✨ 新增辅助工具集(标签验证、修复、可视化) - ✨ 新增Python包支持,可通过pip安装 - 🔧 优化数据集目录结构和跨平台兼容性 ### v1.0.0 (2025-11-23) - ✨ 初始版本发布 - ✅ 支持bird和drone两类目标检测 - ✅ 提供完整训练和推理脚本(train.py, detect.py, detect_multi.py) - ✅ 包含完整数据集(dataset2目录) - ✅ 支持批量检测和多种输入源 - 📝 完善的中文文档 - 🔧 解决了Git大文件推送问题 --- ## ⭐ Star History 如果这个项目对你有帮助,欢迎给个Star ⭐️ ---
**Made with ❤️ by YOLOv11 Bird & Drone Detection Team** [⬆️ 回到顶部](#-yolov11-鸟类与无人机智能检测系统)