# PP-YOLOE-SOD 小目标检测模型(PP-YOLOE Small Object Detection)
<img src="https://user-images.githubusercontent.com/82303451/182520025-f6bd1c76-a9f9-4f8c-af9b-b37a403258d8.png" title="VisDrone" alt="VisDrone" width="300"><img src="https://user-images.githubusercontent.com/82303451/182521833-4aa0314c-b3f2-4711-9a65-cabece612737.png" title="VisDrone" alt="VisDrone" width="300"><img src="https://user-images.githubusercontent.com/82303451/182520038-cacd5d09-0b85-475c-8e59-72f1fc48eef8.png" title="DOTA" alt="DOTA" height="168"><img src="https://user-images.githubusercontent.com/82303451/182524123-dcba55a2-ce2d-4ba1-9d5b-eb99cb440715.jpeg" title="Xview" alt="Xview" height="168">
## 内容
- [简介](#简介)
- [切图使用说明](#切图使用说明)
- [小目标数据集下载](#小目标数据集下载)
- [统计数据集分布](#统计数据集分布)
- [SAHI切图](#SAHI切图)
- [模型库](#模型库)
- [VisDrone模型](#VisDrone模型)
- [COCO模型](#COCO模型)
- [切图模型](#切图模型)
- [拼图模型](#拼图模型)
- [注意事项](#注意事项)
- [模型库使用说明](#模型库使用说明)
- [训练](#训练)
- [评估](#评估)
- [预测](#预测)
- [部署](#部署)
- [引用](#引用)
## 简介
PaddleDetection团队提供了针对VisDrone-DET、DOTA水平框、Xview等小目标场景数据集的基于PP-YOLOE改进的检测模型 PP-YOLOE-SOD,以及提供了一套使用[SAHI](https://github.com/obss/sahi)(Slicing Aided Hyper Inference)工具的切图和拼图的方案。
- PP-YOLOE-SOD 是PaddleDetection团队自研的小目标检测特色模型,使用**数据集分布相关的基于向量的DFL算法** 和 **针对小目标优化的中心先验优化策略**,并且**在模型的Neck(FPN)结构中加入Transformer模块**,以及结合增加P2层、使用large size等策略,最终在多个小目标数据集上达到极高的精度。
- 切图拼图方案**适用于任何检测模型**,建议**使用 PP-YOLOE-SOD 结合切图拼图方案**一起使用以达到最佳的效果。
- 官方 AI Studio 教程案例请参考 [基于PP-YOLOE-SOD的无人机航拍图像检测案例全流程实操](https://aistudio.baidu.com/aistudio/projectdetail/5036782),欢迎一起动手实践学习。
- 第三方 AI Studio 教程案例可参考 [PPYOLOE:遥感场景下的小目标检测与部署(切图版)](https://aistudio.baidu.com/aistudio/projectdetail/4493701) 和 [涨分神器!基于PPYOLOE的切图和拼图解决方案](https://aistudio.baidu.com/aistudio/projectdetail/4438275),欢迎一起动手实践学习。
**注意:**
- **不通过切图拼图而直接使用原图或子图**去训练评估预测,推荐使用 PP-YOLOE-SOD 模型,更多细节和消融实验可参照[COCO模型](#COCO模型)和[VisDrone模型](./visdrone)。
- 是否需要切图然后使用子图去**训练**,建议首先参照[切图使用说明](#切图使用说明)中的[统计数据集分布](#统计数据集分布)分析一下数据集再确定,一般数据集中**所有的目标均极小**的情况下推荐切图去训练。
- 是否需要切图然后使用子图去**预测**,建议在切图训练的情况下,配合着**同样操作的切图策略和参数**去预测(inference)效果更佳。但其实即便不切图训练,也可进行切图预测(inference),只需**在常规的预测命令最后加上`--slice_infer`以及相关子图参数**即可。
- 是否需要切图然后使用子图去**评估**,建议首先确保制作生成了合适的子图验证集,以及确保对应的标注框制作无误,并需要参照[模型库使用说明-评估](#评估)去**改动配置文件中的验证集(EvalDataset)的相关配置**,然后**在常规的评估命令最后加上`--slice_infer`以及相关子图参数**即可。
- `--slice_infer`的操作在PaddleDetection中默认**子图预测框会自动组合并拼回原图**,默认返回的是原图上的预测框,此方法也**适用于任何训好的检测模型**,无论是否切图训练。
## 切图使用说明
### 小目标数据集下载
PaddleDetection团队整理提供的VisDrone-DET、DOTA水平框、Xview等小目标场景数据集的下载链接可以参照 [DataDownload.md](./DataDownload.md)。
### 统计数据集分布
对于待训的数据集(默认已处理为COCO格式,参照 [COCO格式数据集准备](../../docs/tutorials/data/PrepareDetDataSet.md#用户数据转成COCO数据),首先统计**标注框的平均宽高占图片真实宽高的比例**分布:
以DOTA水平框数据集的train数据集为例:
```bash
python tools/box_distribution.py --json_path dataset/DOTA/annotations/train.json --out_img box_distribution.jpg --eval_size 640 --small_stride 8
```
- `--json_path` :待统计数据集 COCO 格式 annotation 的json标注文件路径
- `--out_img` :输出的统计分布图的路径
- `--eval_size` :推理尺度(默认640)
- `--small_stride` :模型最小步长(默认8)
统计结果打印如下:
```bash
Suggested reg_range[1] is 13 # DFL算法中推荐值,在 PP-YOLOE-SOD 模型的配置文件的head中设置为此值,效果最佳
Mean of all img_w is 2304.3981547196595 # 原图宽的平均值
Mean of all img_h is 2180.9354151880766 # 原图高的平均值
Median of ratio_w is 0.03799439775910364 # 标注框的宽与原图宽的比例的中位数
Median of ratio_h is 0.04074914637387802 # 标注框的高与原图高的比例的中位数
all_img with box: 1409 # 数据集图片总数(排除无框或空标注的图片)
all_ann: 98905 # 数据集标注框总数
Distribution saved as box_distribution.jpg
```
**注意:**
- 一般情况下,在原始数据集全部有标注框的图片中,**原图宽高的平均值大于1500像素,且有1/2以上的图片标注框的平均宽高与原图宽高比例小于0.04时(通过打印中位数得到该值)**,建议进行切图训练。
- `Suggested reg_range[1]` 为数据集在优化后DFL算法中推荐的`reg_range`上限,即`reg_max + 1`,在 PP-YOLOE-SOD 模型的配置文件的head中设置这个值。
### SAHI切图
针对需要切图的数据集,使用[SAHI](https://github.com/obss/sahi)库进行切图:
#### 安装SAHI库:
参考[SAHI installation](https://github.com/obss/sahi/blob/main/README.md#installation)进行安装,`pip install sahi`,参考[installation](https://github.com/obss/sahi/blob/main/README.md#installation)。
#### 基于SAHI切图
以DOTA水平框数据集的train数据集为例,切分后的**子图文件夹**与**子图json标注文件**共同保存在`dota_sliced`文件夹下,分别命名为`train_images_500_025`、`train_500_025.json`:
```bash
python tools/slice_image.py --image_dir dataset/DOTA/train/ --json_path dataset/DOTA/annotations/train.json --output_dir dataset/dota_sliced --slice_size 500 --overlap_ratio 0.25
```
- `--image_dir`:原始数据集图片文件夹的路径
- `--json_path`:原始数据集COCO格式的json标注文件的路径
- `--output_dir`:切分后的子图及其json标注文件保存的路径
- `--slice_size`:切分以后子图的边长尺度大小(默认切图后为正方形)
- `--overlap_ratio`:切分时的子图之间的重叠率
**注意:**
- 如果切图然后使用子图去**训练**,则只能**离线切图**,即切完图后保存成子图,存放在内存空间中。
- 如果切图然后使用子图去**评估或预测**,则既可以**离线切图**,也可以**在线切图**,PaddleDetection中支持切图并自动拼图组合结果到原图上。
## 模型库
### [VisDrone模型](visdrone/)
| 模型 | COCOAPI mAP<sup>val<br>0.5:0.95 | COCOAPI mAP<sup>val<br>0.5 | COCOAPI mAP<sup>test_dev<br>0.5:0.95 | COCOAPI mAP<sup>test_dev<br>0.5 | MatlabAPI mAP<sup>test_dev<br>0.5:0.95 | MatlabAPI mAP<sup>test_dev<br>0.5 | 下载 | 配置文件 |
|:---------|:------:|:------:| :-
没有合适的资源?快使用搜索试试~ 我知道了~
yolov8系列-- YOLO series of PaddlePaddle implementation, PP-.zip
共871个文件
yml:352个
py:206个
md:117个
需积分: 5 0 下载量 188 浏览量
2024-02-24
21:44:45
上传
评论
收藏 27.69MB ZIP 举报
温馨提示
yolov8系列-- YOLO series of PaddlePaddle implementation, PP-
资源推荐
资源详情
资源评论
收起资源包目录
yolov8系列-- YOLO series of PaddlePaddle implementation, PP-.zip (871个子文件)
README.md.bak 4KB
demo_bare_metal.c 2KB
object_detector.cc 23KB
main_keypoint.cc 22KB
trajectory.cc 17KB
main.cc 15KB
main.cc 15KB
jde_detector.cc 12KB
keypoint_postprocess.cc 12KB
object_detector.cc 12KB
keypoint_detector.cc 12KB
preprocess_op.cc 11KB
tracker.cc 10KB
main_jde.cc 9KB
keypoint_postprocess.cc 9KB
keypoint_detector.cc 8KB
preprocess_op.cc 6KB
picodet_postprocess.cc 4KB
picodet_postprocess.cc 4KB
ms_deformable_attn_op.cc 3KB
utils.cc 2KB
utils.cc 2KB
config_parser.cc 1KB
arm-none-eabi-gcc.cmake 3KB
yaml-cpp.cmake 962B
main.cpp 14KB
main.cpp 14KB
keypoint_postprocess.cpp 10KB
mask_rcnn_r50_fpn_1x_coco.cpp 10KB
main.cpp 10KB
keypoint_postprocess.cpp 10KB
lapjv.cpp 10KB
yolov3_darknet53_270e_coco.cpp 9KB
ppyolo_mbv3_large_coco.cpp 9KB
picodet_mnn.cpp 9KB
ppyoloe_crn_s_300e_coco.cpp 9KB
picodet_lcnet_1_5x_416_coco.cpp 8KB
picodet.cpp 8KB
tinypose_128x96.cpp 8KB
picodet_mnn.cpp 7KB
keypoint_detector.cpp 7KB
picodet_openvino.cpp 7KB
picodet_openvino.cpp 7KB
main.cpp 7KB
main.cpp 7KB
keypoint_detector.cpp 7KB
ms_deformable_attn_op.cu 46KB
ppdet.gif 12.67MB
.gitignore 1KB
.gitignore 55B
.gitignore 10B
trajectory.h 7KB
preprocess_op.h 6KB
preprocess_op.h 5KB
keypoint_postprocess.h 5KB
object_detector.h 4KB
keypoint_detector.h 4KB
picodet_mnn.h 4KB
keypoint_detector.h 4KB
jde_detector.h 4KB
config_parser.h 4KB
keypoint_detector.h 4KB
keypoint_detector.h 3KB
object_detector.h 3KB
config_parser.h 3KB
keypoint_postprocess.h 3KB
keypoint_postprocess.h 3KB
picodet.h 3KB
keypoint_postprocess.h 2KB
picodet_openvino.h 2KB
picodet_openvino.h 2KB
mask_rcnn_r50_fpn_1x_coco.h 2KB
picodet_lcnet_1_5x_416_coco.h 2KB
yolov3_darknet53_270e_coco.h 2KB
ppyoloe_crn_s_300e_coco.h 2KB
ppyolo_mbv3_large_coco.h 2KB
tinypose_128x96.h 2KB
tracker.h 2KB
tvm_runtime.h 2KB
lapjv.h 1KB
picodet_postprocess.h 1KB
picodet_postprocess.h 1KB
utils.h 1KB
utils.h 1KB
crt_config.h 1001B
cpplint_pre_commit.hook 841B
clang_format.hook 36B
picodet_mnn.hpp 3KB
picedet_demo.jpeg 428KB
001.jpeg 79KB
lite_demo.jpg 939KB
12_Group_Group_12_Group_Group_12_935.jpg 491KB
res.jpg 481KB
bus.jpg 479KB
bus.jpg 476KB
layout.jpg 346KB
000000014439_640x640.jpg 267KB
000000014439_640x640.jpg 267KB
000000014439.jpg 203KB
visdrone_0000315_01601_d_0000509.jpg 191KB
共 871 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
Kwan的解忧杂货铺
- 粉丝: 1w+
- 资源: 3661
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- TG-2024-05-23-204718255.mp4
- 候志强@181 5428 8938_20240420112107.amr
- spispispispispi
- 实验二:IP协议分析.zip
- 驱动代码驱动代码驱动代码驱动代码
- SVID_20240523_141155_1.mp4
- Code for the complete guide to tkinter tutorial
- 关于百货中心供应链管理系统.zip
- SimpleFolderIcon-master 修改Unity的Project下的文件夹图标
- A python Tkinter widget to display tile based maps
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功