RSer-XDU/G-FSDet

使用NWPUV2数据集训练和测试

Opened this issue · 12 comments

运行 test.py文件测试时出现错误:
load checkpoint from local path: work_dirs_NW/ETF_r101_fpn_nwpuv2-split1_10shot-fine-tuning/latest.pth
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 293/293, 21.0 task/s, elapsed: 14s, ETA: 0s
---------------iou_thr: 0.5---------------
Traceback (most recent call last):
File "./tools/detection/test.py", line 226, in
main()
File "./tools/detection/test.py", line 222, in main
print(dataset.evaluate(outputs, **eval_kwargs))
File "/root/autodl-tmp/G-FSDet/mmfewshot/detection/datasets/nwpuv2.py", line 418, in evaluate
use_legacy_coordinate=True)
File "/root/autodl-tmp/G-FSDet/mmfewshot/detection/core/evaluation/mean_ap.py", line 153, in eval_map
mean_ap, eval_results, classes, area_ranges, logger=logger)
File "/root/miniconda3/envs/G-Fsdet/lib/python3.7/site-packages/mmdet/core/evaluation/mean_ap.py", line 502, in print_map_summary
label_names[j], num_gts[i, j], results[j]['num_dets'],
IndexError: tuple index out of range
想问一下为什么会这样呢?

这有挺多情况的:有可能你基类训练后的模型没有进行转头操作(就是step2: reshape the bbox head of base model for few shot fine-tuning),然后第三步记得把cfg里面的模型路径改成转好头的模型

imyjx commented

求助各位大佬!!!,我跑NWPUv2数据集的BaseTraning,mAP只有20多。
配置文件是DIOR的配置文件改过来的,尝试过调整BS和学习率,目前依然是20多的精度水平。这是什么情况,有大佬了解吗?

求助各位大佬!!!,我跑NWPUv2数据集的BaseTraning,mAP只有20多。 配置文件是DIOR的配置文件改过来的,尝试过调整BS和学习率,目前依然是20多的精度水平。这是什么情况,有大佬了解吗?

不会啊,我训练出来90.66%,你对比一下我的cfg文件呢:
image

imyjx commented

求助各位大佬!!!,我跑NWPUv2数据集的BaseTraning,mAP只有20多。 配置文件是DIOR的配置文件改过来的,尝试过调整BS和学习率,目前依然是20多的精度水平。这是什么情况,有大佬了解吗?

不会啊,我训练出来90.66%,你对比一下我的cfg文件呢: image
感谢大佬光速回复!!!
我检查了配置文件,没有问题。
我发现问题是在读取数据的时候,没有把7个基类的训练数据都读取到。
image
但是使用的nwpuv2数据集,和mmfewshot/detection/datasets/nwpuv2.py我都没有修改过,这会是什么问题呢?

求助各位大佬!!!,我跑NWPUv2数据集的BaseTraning,mAP只有20多。 配置文件是DIOR的配置文件改过来的,尝试过调整BS和学习率,目前依然是20多的精度水平。这是什么情况,有大佬了解吗?

不会啊,我训练出来90.66%,你对比一下我的cfg文件呢: image
感谢大佬光速回复!!!
我检查了配置文件,没有问题。
我发现问题是在读取数据的时候,没有把7个基类的训练数据都读取到。
image
但是使用的nwpuv2数据集,和mmfewshot/detection/datasets/nwpuv2.py我都没有修改过,这会是什么问题呢?

我感觉你数据集好像有点问题,
image
这个显示的确是不全的,但不影响结果。但是你的每一类的数量不对,感觉是数据集的问题。你使用的是这个吗?https://drive.google.com/file/d/1ufoSMK_J0cHth-Or5bEmbAIaH8SxzsXo/view?usp=sharing

imyjx commented

数据集不知道什么时间损坏了(愚蠢的我 -_-。 ),感谢大佬!!!

34e15142ef7e588cd72feae191a83159
大佬们,请问我训练dior数据集的时候没有出现这种现象,但是训练nwpuv2的base training为什么会出现这种现象呢?能帮忙给我看一下吗

34e15142ef7e588cd72feae191a83159 大佬们,请问我训练dior数据集的时候没有出现这种现象,但是训练nwpuv2的base training为什么会出现这种现象呢?能帮忙给我看一下吗

感觉像是训练类多了,可以核对一下这两个文件configs/detection/ETF/nwpuv2/split1/tfa_r101_fpn_nwpuv2_split1_base-training.py和mmfewshot/detection/datasets/nwpuv2.py
image
image

但是我看起来好像跟您这个是一样的
555b578a4280c7c6724b554a1c7cb71f
b07fe6ef12345d165f02a54a33ed6ba3

但是我看起来好像跟您这个是一样的 555b578a4280c7c6724b554a1c7cb71f b07fe6ef12345d165f02a54a33ed6ba3

image
基类训练的时候 最后的头是7个,是通过initialize_bbox_head.py,变成10个的

太感谢您了!是不是在微调的时候,initialize_bbox_head.py,中,参数VOC_TAR_SIZE = 20在根据数据集进行类别改变就可以了?
截屏2023-12-25 10 07 53

太感谢您了!是不是在微调的时候,initialize_bbox_head.py,中,参数VOC_TAR_SIZE = 20在根据数据集进行类别改变就可以了? 截屏2023-12-25 10 07 53

是的,TAR_SIZE代表总数量,所以如果要微调nwpuv2的话,需要在这个py文件修改一下