• 카테고리

    질문 & 답변
  • 세부 분야

    컴퓨터 비전

  • 해결 여부

    미해결

faster-rcnn inference 오류

22.08.26 10:10 작성 조회수 302

0

현황 : BCCD에서 사용하던 코드로 Inference를 하려 했는데

다음과 같은 오류가 발생하고 있습니다

바쁘시겠지만 문의드립니다

◇ 문의사항

: 해결방안이 있을까요?

코드

import torch

from mmdet.apis import multi_gpu_test, single_gpu_test

from mmcv.parallel import MMDataParallel, MMDistributedDataParallel

model_ckpt = MMDataParallel(model_ckpt, device_ids=[0])

outputs=single_gpu_test(model_ckpt, data_loader, True, "저장폴더", 0.5)

---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Input In [6], in <cell line: 8>()
      5 model_ckpt = MMDataParallel(model_ckpt, device_ids=[0])
      6 # single_gpu_test를 활용하므로 samples_per_gpu는 1이 되야함
----> 8 outputs=single_gpu_test(model_ckpt, data_loader, True, "저장폴더", 0.5)

File ~/.local/lib/python3.9/site-packages/mmdet/apis/test.py:38, in single_gpu_test(model, data_loader, show, out_dir, show_score_thr)
     36     img_tensor = data['img'][0].data[0]
     37 img_metas = data['img_metas'][0].data[0]
---> 38 imgs = tensor2imgs(img_tensor, **img_metas[0]['img_norm_cfg'])
     39 assert len(imgs) == len(img_metas)
     41 for i, (img, img_meta) in enumerate(zip(imgs, img_metas)):

File ~/.local/lib/python3.9/site-packages/mmcv/image/misc.py:34, in tensor2imgs(tensor, mean, std, to_rgb)
     32 if torch is None:
     33     raise RuntimeError('pytorch is not installed')
---> 34 assert torch.is_tensor(tensor) and tensor.ndim == 4
     35 channels = tensor.size(1)
     36 assert channels in [1, 3]

AssertionError: 

  1. show_result_pypot 사용 시 오류가 발생하는데

    해결방안이 있을까요?

코드

from mmdet.apis import show_result_pyplot

import cv2

#brg image 사용

img = cv2.imread("sample 이미지 위치")

model.cfg = cfg

result = inference_detector(model, img)

show_result_pyplot(model, img, result, score_thr=0.3)

결과

/home/namu/.local/lib/python3.9/site-packages/mmdet/datasets/utils.py:66: UserWarning: "ImageToTensor" pipeline is replaced by "DefaultFormatBundle" for batch inference. It is recommended to manually replace it in the test data pipeline in your config file.
  warnings.warn(

답변 1

답변을 작성해보세요.

0

안녕하십니까,

BCCD가 아닌 다른 데이터 세트에서 수행하시는 건가요?

제 실습 코드에서 오류가 나는건지 확인 부탁드립니다. 그게 아니라면,

1 . tensor가 아니거나 배치를 포함한 4차원이 아닌것 같다는 오류가 나는 걸로 봐서는 data_loader가 잘못 만들어 진것 같습니다. 다시한번 CONFIG를 확인해 보시기 바랍니다.

assert torch.is_tensor(tensor) and tensor.ndim == 4

  1. show_result_pyplot에서는 에러가 아니라 warning이 나옵니다만, 이미지가 표시가 안되서 그러시는 건지요?

config에서 cfg.data.samples_per_gpu=1 로 설정되었는지 확인해 주십시요. 1이 아니면 오류가 발생합니다.