NPU 다중 session 문의, yolov5l 모델 성능 문의

안녕하세요. Furiosa에서 제공하는 yolov5l 모델을 이용해서 튜토리얼을 진행해보고 있습니다.

첫번째로 다중 session을 이용할 수 있는지 궁금합니다.

카메라를 2개 연결한 상태에서 2개의 스크립트를 실행시켜서 객체 탐지를 진행해보려고 했는데 처음 스크립트는 실행이 되어 실시간 객체 탐지가 진행되는데 2번째 스크립트를 실행 시에


다음과 같이 NPU가 이미 사용중이다라는 오류가 뜨면서 실행이 되지 않았습니다. NPU 1개당 하나의 session만 생성해 사용가능한 것인지 궁금합니다.

두번째로 yolov5l 모델 성능과 관련한 문의입니다.

import cv2
import numpy as np

from furiosa.models.vision import YOLOv5l
from furiosa.runtime import session

yolov5l = YOLOv5l.load()

with session.create(yolov5l.enf) as sess:
image = cv2.imread(“tests/assets/yolov5-test.jpg”)
inputs, contexts = yolov5l.preprocess([image])
output = sess.run(np.expand_dims(inputs[0], axis=0)).numpy()
yolov5l.postprocess(output, contexts=contexts)

해당 코드를 사용해서 객체 탐지를 진행했는데 객체 탐지 성능이 상당히 낮은것처럼 느껴졌습니다. 성능을 높이기 위해서 할 수 있는 방법이 있는지 궁금합니다.

안녕하세요, 퓨리오사 AI 김종욱입니다.
질문 주셔서 감사드립니다.


첫번째 질문에 대한 답을 드리자면,
NPU 하나는 두개의 PE로 구성되어 있어, 스크립트 하나에 PE 1개를 할당해 주신다면 동작할 것입니다.
단, furiosa-models에서 제공하고 있는 모델들은 PE 2개를 fusion하여 사용하고 있는 모델이기 때문에
Quantinization을 새로 진행해주셔야 합니다.

  • 참조: 튜토리얼의 33~39p Model Zoo 모델을 Quantization 해보기

그 후 첫번째 스크립트에서는 디바이스 npu0pe0 를 지정하여 세션을 열어주시고, 두번째 스크립트에서는 npu0pe1을 지정해주시면 문제가 해결 될 것으로 생각됩니다.


두번째질문에 대해 답을 드리자면 현재 furiosa-models에서 제공되는 yolov5l 모델의 경우 bdd100k-val dataset에 대하여 정확도 성능이 mAP 0.284로 측정이 되고 있습니다 (참조: Furiosa Models ).

어떤 데이터셋을 이용하고 계시는지 짐작이 어렵지만, 다른 데이터셋의 경우 Model Zoo를 이용하지 않고 yolov5l 모델을 따로 포팅을 진행하시는 방법이 대안이 될 것 같습니다. 해당 방법은 yolov5s 튜토리얼을 참고하시길 바랍니다.

1 Like