728x90
반응형
tph-yolov5를 돌리는 중, 다음과 같은 에러 발생
File "/opt/conda/envs/tph-yolov5/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1194, in _call_impl
return forward_call(*input, **kwargs)
File "/opt/conda/envs/tph-yolov5/lib/python3.7/site-packages/torch/nn/modules/upsampling.py", line 157, in forward
recompute_scale_factor=self.recompute_scale_factor)
File "/opt/conda/envs/tph-yolov5/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1270, in __getattr__
type(self).__name__, name))
AttributeError: 'Upsample' object has no attribute 'recompute_scale_factor'
최신 방법
Yolo 측에서 pytorch 1.10 이상일 경우 이를 해결하기 위한 업데이트를 진행, 기존에 있던 코드에서 해당 라인들을 수정하면 아래 내용처럼 이것저것 만질 필요 없이 바로 구동된다.
▼이전 방식(or Yolo가 아닌 경우)
더보기
찾아보니 pytorch 버전이 1.10 이상인 경우 발생하는 에러.
좀 더 서치해보니 torch 내 unsample함수에서 아예 관련 라인을 주석처리해버리면 문제 없다는 답변이 존재.
# ANACONDA_ENV\lib\site-packages\torch\nn\modules\upsampling.py
def forward(self, input: Tensor) -> Tensor:
return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners,
#recompute_scale_factor=self.recompute_scale_factor
)
https://github.com/ultralytics/yolov5/issues/6948#issuecomment-1075548218
좀 더 살펴보니, 아예 모델 로딩과정에서 다음과 같은 코드를 추가해서 해 가능하다고 함.
# load yolo model
model = torch.hub.load("ultralytics/yolov5", "yolov5s")
# model = Model(opt.cfg).to(device)
# error fix code
for m in model.modules():
if isinstance(m, nn.Upsample):
m.recompute_scale_factor = None
# model inference
results = model(img)
https://github.com/ultralytics/yolov5/issues/6948#issuecomment-1299936326
728x90
반응형