1. 问题分析
最近用到目标检测的模型DETR,但是在创建模型的时候却遇到模型无法创建的问题。本文记录一下解决该问题的过程。
检查原因发现是在创建模型的过程中,需要联网下载。
即便是我将facebook/detr-resnet-50的所有文件下载到本地,然后在from_pretrained时候指定本地的路径,仍然遇到了连接hf下载模型的问题。由于一些众所周知的原因,hf无法直接访问了,这就导致下载遇到了点问题。
需要下载的文件是resnet50的backbone,是没有被包含在detr的模型文件中的。
transformers中的modeling_detr.py中并没有给resnet的本地文件留入参,这就带来了很多不便。即便如此,我们还是可以在modeling_detr.py手动创建backbone,以避免联网下载。
2. 问题解决
首先还是需要先下载resnet50的权重(需科学上网):
https://huggingface.co/timm/resnet50.a1_in1k/tree/main
将这些文件放在目录(记作path_a)中。
然后修改transfomers模块中的源码transformers/models/detr/modeling_detr.py
:
大约340行:
def __init__(self, config):
super().__init__()
self.config = config
if config