프로젝트 & 경진대회

Developing Vision Intelligence Applications on Furiosa WARBOY

htaekjung 2025. 1. 12. 13:47

 

이번 프로젝트에서는 Warboy NPU를 사용하여 할 수 있는 Object detection, Pose estimation, Instance segmentation 3 가지 중 object detection, instance segmentation을 진행하였습니다. 

 

furiosa-ai/warboy-vision-models: Furiosa Warboy Vision Models

 

GitHub - furiosa-ai/warboy-vision-models: Furiosa Warboy Vision Models

Furiosa Warboy Vision Models. Contribute to furiosa-ai/warboy-vision-models development by creating an account on GitHub.

github.com

 


목차

 

1. Object Detection

  • Warboy Preparation
  • Model Quantization
  • Measuring model inference performance
  • Developing Vision AI Application

2. Instance Segmentation

  • Warboy Preparation
  • Model Quantization
  • Measuring model inference performance
  • Developing Vision AI Application

 

Warboy Preparation

위 과정은 object detection, instance segmentation 두 과정에서 공통적으로 NPU setting 부분입니다.

이 부분은 전에 다른 포스트에서 서술하였으므로 아래의 포스트 참고하면 될 것 같습니다. 

Furiosa Warboy tutorial

 

Furiosa Warboy tutorial

Furiosa ChipFuriosa 사의 NPU는 총 2가지가 있는데 1세대 Warboy는 computer vision에 특화되어 있으며, 2세대 RNGD는 LLM과 Multimodality(다중 모드 작업 지원)에 특화되어 있으며 전 세계 최초로 HBM을 사용했다는

htaekjung.tistory.com

 


1. Object Detection

-1) Model Quantization

  • Pytorch 모델을 ONNX 타입으로 변환
python tools/export_onnx.py cfg/object_detection_model.yaml
  • ONNX 파일 양자화하기

 

 

Object Detection하기에 가장 적합한 calibration method를 찾아야 합니다.

이를 위해 calibration method 특성들을 비교 후 모든 calibration method 성능 평가를 통해 예측이 맞는지 확인해 볼 것입니다. 


 

(1) Entropy
• 특성:
   - 데이터의 분포를 고려하여 양자화 범위를 설정합니다
   -  양자화 전후 분포 차이를 줄입니다
   -  Outlier에 강하고, 데이터 분포를 잘 반영하지만 계산 비용이 높습니다
• 적합성:
   -  정확도 손실이 적고 다양한 데이터셋에 안정적



(2) Percentile
• 특성:
   -  데이터의 특정 상위 백분위수(Percentile)를 기준으로 양자화 범위를 설정합니다.
   -  이상치(outlier)에 민감하지 않으며, 분포가 비대칭적인 데이터에 적합
• 적합성:
   -  Outlier가 많거나 데이터의 동적 범위(dynamic range)가 큰 경우 유용



(3) MinMax
• 특성:
   -  데이터의 최소값과 최대값을 기준으로 양자화 범위를 설정합니다
   -  계산이 빠르지만 Outlier에 매우 민감하여 양자화 범위가 비효율적일 수 있음
• 적합성:
   -  간단한 계산이 필요한 상황에서 유용하지만 정확도 손실 가능성 있음



(4) MSE (Mean Squared Error)
• 특성:
   -  양자화 전후 값 간의 평균 제곱 오차를 최소화하도록 범위를 설정
   -  데이터의 분포를 잘 반영하며 정확도 유지에 유리
• 적합성:
   -  정확도가 중요한 모델에 적합



(5) SQNR (Signal-to-Quantization Noise Ratio)
• 특성:
   -  양자화로 인한 신호 대 잡음 비율(SQNR)을 최적화하여 스케일을 설정
   -  데이터의 손실을 최소화하면서 양자화 범위를 지정
• 적합성:
   -  정확도와 효율성을 모두 고려해야 할 때 유리


 

ASYM(비대칭형) : 제로포인트를 포함하여 비대칭 분포에 적합
SYM(대칭형) : 계산 효율성을 강화 


위의 특성을 고려하여 저희는 Object Detection application을 만들기 위해 Entropy – ASYM을 사용하기로 하였습니다.

 

다만, 더 근거있는 calibration method를 정하기 위해 모든 calibration method quantize를 진행한 후 정확도를 비교하였습니다.

Input에는 대략 4초의 input video를 넣어 진행하였습니다.

 

Inference를 진행할 때 30프레임으로 즉, 전체 114개의 bmp파일이 output으로 출력됩니다.

그 중 57번째 bmp 파일에서 모델이 laptop, keyboard, person, tv를 식별할 수 있어 그 bmp파일을 기준으로 정확도를 판단하였습니다.

아래의 표는 그 정확도를 판단한 것입니다.

 

따라서 가장 정확도가 높은 PERCENTILE_SYM을 사용하기로 했습니다.


-2)Measuring Model Inference Performance

  • Export ONNX

  • Quantization
  • ENF File 추출

  • 모델 추론 후 성능 측정

  • 모델 추론 100번 이상 수행 후 평균 latency, throughput 측정

 

성능 결과

  QPS(Throughput) Min latency Max latency Mean latency
PERCENTILE_ASYM 3039.51 43099 329192 186711

 


3.  Developing Vision AI application(Object Detection)

위 명령어를 통해 input video에 대해 object detection이 된 bmp파일을 출력하였습니다.

이후 bmp파일을 하나의 동영상으로 만들어 input video에 대해 object detection을 진행한 output video를 출력하였습니다.

 

https://youtube.com/shorts/InrIRpkihew?feature=share

 

 

 


 

 

 

2. Instance segmentation

-1) Model Quantization

Instance segmentation도 object detection과 마찬가지로 각 calibration method마다 57번째 bmp파일의 정확도를 바탕으로 calibration method를 선택했습니다. 

ENTROPY_ASYM
ENTROPY_SYM
PERCENTILE_ASYM
PERCENTILE_SYM
MSE_ASYM
MSE_SYM
MIN_MAX_ASYM
MIN_MAX_SYM
SQNR_ASYM
SQNR_SYM

 

위의 사진의 정확도를 바탕으로 MSE_SYM을 선택하였습니다.


-2) Measuring model inference performance

  • Export ONNX

  • Quantization

  • ENF 파일 추출

  • 모델 추론 후 성능 측정

  • 모델 추론 100번 이상 수행 후 평균 latency, throughput 측정

  QPS(Throughput) Min latency Max latency Mean latency
MSE_SYM 2680.97 151368 372681 259500

-3) Developing Vision AI application

Object detection과 마찬가지로 bmp 파일로 변환 후 video.py를 실행시켜 output을 비디오로 만들었습니다

https://youtube.com/shorts/aA3r1CL1nNk


프로젝트 느낀 점 및 총평

고가의 NPU를 사용해 computer vision을 수행한 점에서 의의가 있으며 NPU setting 과정을 자세히 배우고 스스로 실습해본 것 같아 의미가 있었던 것 같다.

하지만 calibration method를 정할 때 영상 전체에서의 추론 정확도를 기준으로 판단해야하는데 하나의 이미지 파일, bmp파일로 정확도를 측정해 이 점은 보완해야 할 것 같다.

또한 object detection, pose estimation, instance segmentation을 활용하여 더욱 심화된 프로젝트를 해보고 싶은 마음도 생겼다.