작성
·
366
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:
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
show_result_pyplot에서는 에러가 아니라 warning이 나옵니다만, 이미지가 표시가 안되서 그러시는 건지요?
config에서 cfg.data.samples_per_gpu=1 로 설정되었는지 확인해 주십시요. 1이 아니면 오류가 발생합니다.