이번 프로젝트에서는 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 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을 활용하여 더욱 심화된 프로젝트를 해보고 싶은 마음도 생겼다.
'프로젝트 & 경진대회' 카테고리의 다른 글
차세대반도체 SIF 경진대회 회고록 (1) | 2025.01.26 |
---|---|
Direct FIR Filter Digital Design in 2 versions with PPA results (0) | 2024.12.08 |
Simplified FIR Filter Design (0) | 2024.11.30 |
Furiosa Warboy tutorial (1) | 2024.10.21 |
RISC-V Single-Cycle Processor Design (0) | 2024.10.12 |