# 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目标检测解决方案**
[](https://www.python.org/)
[](https://github.com/ultralytics/ultralytics)
[](LICENSE)
[](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-鸟类与无人机智能检测系统)