IDEA-Research / DINO

[ICLR 2023] Official implementation of the paper "DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection"
Apache License 2.0
2.08k stars 228 forks source link

MultiScaleDeformableAttention complied but ImportError undefined symbol: THPVariableClass #237

Open RiceZ opened 7 months ago

RiceZ commented 7 months ago

MultiScaleDeformableAttention compiled success:

Installed /home/xxx/anaconda3/envs/env_DINO2/lib/python3.8/site-packages/MultiScaleDeformableAttention-1.0-py3.8-linux-x86_64.egg Processing dependencies for MultiScaleDeformableAttention==1.0 Finished processing dependencies for MultiScaleDeformableAttention==1.0

when run: ImportError: /home/zhangchi/anaconda3/envs/env_DINO2/lib/python3.8/site-packages/MultiScaleDeformableAttention-1.0-py3.8-linux-x86_64.egg/MultiScaleDeformableAttention.cpython-38-x86_64-linux-gnu.so: undefined symbol: THPVariableClass

thank you~

RiceZ commented 7 months ago

I got it!

DINO-main\models\dino\ops\modules\ms_deform_attn.py

I comment these codes next before complie MultiScaleDeformableAttention:

    # for amp
    if value.dtype == torch.float16:
        # for mixed precision
        output = MSDeformAttnFunction.apply(
        value.to(torch.float32), input_spatial_shapes, input_level_start_index, sampling_locations.to(torch.float32), attention_weights, self.im2col_step)
        output = output.to(torch.float16)
        output = self.output_proj(output)
        return output

It works, but I donot know why...