SSDMobileNet 추론 문의 드립니다

안녕하세요. 에티버스 김인성 연구원입니다.

SSDMobileNet 추론 예제 코드 실행하다가 발생한 오류를 해결하지 못해 문의 드립니다.
사용한 코드는 아래와 같습니다. (SSD MobileNet v1 - Furiosa Models)

from furiosa.models.vision import SSDMobileNet
from furiosa.runtime.sync import create_runner

image = ["tests/assets/cat.jpg"]

mobilenet = SSDMobileNet()
with create_runner(mobilenet.model_source()) as runner:
    inputs, contexts = mobilenet.preprocess(image)
    outputs = runner.run(inputs)
    mobilenet.postprocess(outputs, contexts[0])

발생한 오류 내용은 아래와 같습니다.

---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In[23], line 15
---> 15 mobilenet.postprocess(outputs, contexts[0])

File ~/miniconda3/envs/furiosa-3.9/lib/python3.9/site-packages/furiosa/models/types.py:133, in Model.postprocess(self, *args, **kwargs)
    131 def postprocess(self, *args, **kwargs):
    132     """Postprocess output tensors"""
--> 133     return self.postprocessor(*args, **kwargs)

File ~/miniconda3/envs/furiosa-3.9/lib/python3.9/site-packages/furiosa/models/vision/ssd_mobilenet/__init__.py:316, in SSDMobileNetNativePostProcessor.__call__(self, model_outputs, contexts)
    314     return [[]]
    315 batch_size = model_outputs[0].shape[0]
--> 316 assert batch_size == len(
    317     contexts
    318 ), "batch size of model_outputs and len(contexts) must be same"
    320 all_results = []
    322 for i, context in enumerate(contexts):

AssertionError: batch size of model_outputs and len(contexts) must be same

입력과 출력의 정보는 아래와 같습니다.
inputs shape → (1, 3, 300, 300)
contexts → {‘width’: 300, ‘height’: 300}
outputs shape → (1, 273, 19, 19)

제가 놓친 부분이 어디인지, 어떤 조치를 취해야 할지 잘 모르겠습니다.
확인 부탁 드립니다.

감사합니다.

1 Like

인성님 outdated 문서를 보고 계신 것 같습니다.

아래 링크를 참고해주시면 감사하겠습니다.

from furiosa.models.vision import SSDMobileNet
from furiosa.runtime.sync import create_runner

image = ["tests/assets/cat.jpg"]

mobilenet = SSDMobileNet()
with create_runner(mobilenet.model_source()) as runner:
    inputs, contexts = mobilenet.preprocess(image)
    outputs = runner.run(inputs)
    mobilenet.postprocess(outputs, contexts[0])
    # 마지막 줄이 다름
    mobilenet.postprocess(outputs, contexts)
1 Like

안녕하세요 정영범 이사님.

최신 자료 링크 알려주셔서 감사합니다.
덕분에 바로 해결되었습니다 ㅎㅎ

1 Like