longzw1997 / Open-GroundingDino

This is the third party implementation of the paper Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection.
MIT License
386 stars 60 forks source link

训练过程中有关bbox的报错 #59

Closed YiDa858 closed 6 months ago

YiDa858 commented 6 months ago

请问我已经将coco格式的数据集转换为odvg格式,并且确认了jsonl中的bbox数值x1<x2, y1<y2,但在训练过程中生成iou时会出现如下报错: Traceback (most recent call last): File "/mnt/HDD1/vlm/Open-GroundingDino/main.py", line 372, in main(args) File "/mnt/HDD1/vlm/Open-GroundingDino/main.py", line 285, in main train_stats = train_one_epoch( File "/mnt/HDD1/vlm/Open-GroundingDino/engine.py", line 47, in train_one_epoch loss_dict = criterion(outputs, targets, cap_list, captions) File "/home/user/anaconda3/envs/open-groundingdino/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl return forward_call(*input, kwargs) File "/mnt/HDD1/vlm/Open-GroundingDino/models/GroundingDINO/groundingdino.py", line 553, in forward inds = self.matcher(for_match, [targets[j]], label_map_list[j]) File "/home/user/anaconda3/envs/open-groundingdino/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl return forward_call(*input, *kwargs) File "/home/user/anaconda3/envs/open-groundingdino/lib/python3.10/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context return func(args, kwargs) File "/mnt/HDD1/vlm/Open-GroundingDino/models/GroundingDINO/matcher.py", line 101, in forward cost_giou = -generalized_box_iou(box_cxcywh_to_xyxy(out_bbox), box_cxcywh_to_xyxy(tgt_bbox)) File "/mnt/HDD1/vlm/Open-GroundingDino/util/box_ops.py", line 53, in generalized_box_iou assert (boxes2[:, 2:] >= boxes2[:, :2]).all(), f"{boxes2}" AssertionError: tensor([[0.0000, 0.0328, 0.1361, 0.1094], [0.8861, 0.2469, 0.9583, 0.3224], [0.4759, 0.3094, 0.5250, 0.3365], [0.9222, 0.4922, 0.9954, 0.4911]], device='cuda:0') ERROR:torch.distributed.elastic.multiprocessing.api:failed (exitcode: 1) local_rank: 0 (pid: 233181) of binary: /home/user/anaconda3/envs/open-groundingdino/bin/python train_dist.sh: line 21: 233115 Segmentation fault (core dumped) python -m torch.distributed.launch --nproc_per_node=${GPU_NUM} main.py --output_dir ${OUTPUT_DIR} -c ${CFG} --datasets ${DATASETS} --pretrain_model_path /mnt/HDD1/vlm/Open-GroundingDino/work/gdinot-1.8m-odvg.pth --options text_encoder_type=/mnt/HDD1/vlm/Open-GroundingDino/bert-base-uncased 我发现其中的[0.9222, 0.4922, 0.9954, 0.4911]y1会大于y2,这是什么原因导致的?