PaddlePaddle / PaddleDetection

Object Detection toolkit based on PaddlePaddle. It supports object detection, instance segmentation, multiple object tracking and real-time multi-person keypoint detection.
Apache License 2.0
12.6k stars 2.86k forks source link

小目标检测切图后mAP极低 #7960

Open WooXinyi opened 1 year ago

WooXinyi commented 1 year ago

问题确认 Search before asking

请提出你的问题 Please ask your question

使用ppyoloe_plus_sod_crn_l进行切图训练和切图验证,使用VisualDL可以看到loss曲线正常下降,但在切图验证得到的mAP只有0.027,请问这是什么原因呢? image

Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.008 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.027 Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.003 Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.001 Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.019 Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.011 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.023 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.029 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.042 Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.028 Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.062 Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.029

nemonameless commented 1 year ago

请发下运行命令。 切图验证是指,拼回换图和原图验证集json做评估,还是就切好的子图和子图验证集json做评估?

WooXinyi commented 1 year ago

请发下运行命令。 切图验证是指,拼回换图和原图验证集json做评估,还是就切好的子图和子图验证集json做评估?

CUDA_VISIBLE_DEVICES=5 python -u tools/eval.py -c configs/smalldet/ppyoloe_crn_l_100e_sliced_XXX_1280_025.yml -o weights=output/ppyoloe_crn_l_100e_sliced_XXX_1280_025/49.pdparams

切图验证也就是子图验证,就切好的子图和子图验证集json做评估。训练集和验证集都是提前切图保存到本地的。 训练数据是自定义数据,使用ppyoloe_plus_sod_crn_l在原图训练是没有问题的。

nemonameless commented 1 year ago

可能是模型本身没有训的很好。建议infer.py可视化出来看看效果。或者子图验证集json的gt做的不对,也可以可视化看看。

WooXinyi commented 1 year ago

可能是模型本身没有训的很好。建议infer.py可视化出来看看效果。或者子图验证集json的gt做的不对,也可以可视化看看。

原因找到了,训练集和验证集的子图json的gt可视化出来后发现标签对不上,是因为仓库的切片脚本有问题吗? 1119_1920_0_3200_1280

2405_2560_880_3840_2160

切片命令: python -u tools/slice_image.py --image_dir /XXX/images --json_path /XXX/split_train_coco.json --output /XXX/sliced_1280 --slice_size 1280 --overlap_ratio 0.25

WooXinyi commented 1 year ago

确认了,就是使用tools/slice_image.py切片后的gt对不上,一部分有对,一部分不对