基于ONNX Runtime的无人机目标检测解决方案,支持:
Model/
├── src/ # 源代码目录
│ ├── core/ # 核心功能模块
│ │ ├── inference.py # 推理主程序
│ │ ├── feature_extractor.py
│ │ └── image_validation.py
│ ├── utils/ # 工具函数
│ │ ├── visualizer.py # 可视化工具
│ │ └── dataset.py # 数据集工具
│ └── analysis/ # 分析工具
│ ├── hotspot_analyzer.py
│ └── report_generator.py
├── data/ # 数据目录
│ ├── false_positive/ # 误报样本
│ └── models/ # 模型文件
├── tests/ # 测试目录
├── outputs/ # 输出目录
└── docs/ # 文档目录
依赖库:
pip install -r requirements.txt
pip install -r requirements.txt
在项目根目录下运行:
python -m src.core.inference --gui
python -m src.core.inference --input 图片路径 --threshold 0.5 --output results --report excel
python -m src.core.inference --input 图片目录 --max-bbox-ratio 0.1 --output batch_results --report all
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
--input | path | 必填 | 输入图像路径/目录 |
--threshold | float | 0.45 | 检测置信度阈值 |
--max-bbox-ratio | float | 0.05 | 最大检测框面积比例 |
--output | path | 自动生成 | 输出目录(自动创建) |
--report | [csv/excel/all] | excel | 报告格式 |
--save-empty | flag | False | 保存无检测结果的图像 |
--gui | flag | False | 启用图形界面选择输入目录 |
输出目录包含:
目标截图/
:检测到的无人机目标截图检测报告.xlsx
:包含检测时间、置信度、坐标等详细信息data/models/UAV-250321.onnx
Q: 如何启用GPU加速? A: 确保安装onnxruntime-gpu并配置CUDA环境,程序会自动优先使用GPU
Q: 误报特征库如何更新? A: 将误报样本放入data/false_positive目录,程序启动时会自动加载
代码规范
测试 ```bash
pytest tests/
pytest --cov=src tests/
3. 文档
- 使用Google风格文档字符串
- 保持README.md更新
- 重要功能添加使用示例
## 性能指标说明
### 1. 基础统计指标
- **总样本数**:CSV文件中所有唯一的图像文件数量
- **检测到的目标总数**:模型检测到的所有目标数量
- **真实目标总数(TP)**:确认的真实无人机目标数量
- **误报目标数(FP)**:错误检测为非无人机目标的数量
- **真阴性数量(TN)**:正确识别为非无人机目标的数量
### 2. 性能评估指标
- **准确率(Accuracy)**
- 计算公式:`(TP + TN) / (TP + FP + TN)`
- 说明:反映模型整体正确分类的能力,即正确预测的样本占总样本的比例
- 取值范围:0-1,越接近1表示模型整体性能越好
- **精确率(Precision)**
- 计算公式:`TP / (TP + FP)`
- 说明:反映模型在预测为正样本(无人机)时的准确程度
- 取值范围:0-1,越接近1表示模型在预测无人机时越准确
- **召回率(Recall)**
- 计算公式:`TP / (TP + FN)`
- 说明:反映模型发现所有真实无人机目标的能力
- 取值范围:0-1,越接近1表示模型发现真实无人机的能力越强
- **F1分数(F1 Score)**
- 计算公式:`2 * (Precision * Recall) / (Precision + Recall)`
- 说明:精确率和召回率的调和平均数,用于平衡精确率和召回率
- 取值范围:0-1,越接近1表示模型在精确率和召回率之间取得更好的平衡
- **误报率/虚警率(False Alarm Rate)**
- 计算公式:`FP / (TN + FP)`
- 说明:反映模型将非无人机目标错误识别为无人机的比例
- 取值范围:0-1,越接近0表示模型在避免误报方面表现越好
## 使用方法
1. 运行推理:
```bash
python src/core/inference.py
bash
python src/analysis/performance_analyzer.py
## 输出说明
运行性能分析后,将在结果目录下生成performance_stats.txt
文件,包含:
1. 详细统计信息(总样本数、检测目标数等)
2. 性能指标(准确率、精确率、召回率等)
## 注意事项
1. 确保模型文件路径正确
2. 确保输入图像格式正确
3. 性能分析前需要将确认的真实目标放入targets_all_True
目录