피드백
1. TinyCLIP 양자화 힘들다
- 이미 학습된 모델이라 양자화하는 것과 정밀도 낮추는 것 어려움
- 학습단계에서 정밀도 줄이도록 설계된 모델 쓰는 게 나음 (ex. Low-precision 모델)
- CLIP이 아니더라도, 예를 들어 ViT-1.58B 같은 모델 구조에서 찾는 게 더 나을 수도 있음
- https://arxiv.org/abs/2406.18051 리뷰: https://www.themoonlight.io/ko/review/vit-158b-mobile-vision-transformers-in-the-1-bit-era
- 구조적으로 더 경량화된 아키텍처 고려해보기
2. 이미 양자화된 모델 쓰는 것 추천
- 직접 양자화 하는 것보다 이미 INT8/FP16 등으로 제공되는 pretrained 모델 선택하는 게 더 효율적
- 실시간 응답성과 정확도가 중요하면 더욱
3. PAR 과거 방식 사용하는 것도 괜찮음
- 실험적으로 옛 방식이 잘 돌아가면 그걸 채택해도 됨
- 뒷부분(classifier/head)만 파인튜닝하면 됨
4. MSP60 데이터셋과 맞는 사전학습 모델 조사 필요
- MSP60K와 유사한 목적의 경량 모델 먼저 찾아보고 적용해보기
Q. TinyCLIP 전용 인코더가 있는지?
- TinyCLIP은 CLIP 구조 본떠서 경량화한 별개의 구조 가진 모델
- CLIP: ViT-B/32나 RN50 같은 기존 백본 사용해 이미지 인코더 구성, 텍스트 인코더는 GPT-like 구조
- TinyCLIP:
- 훨씬 작은 ViT 변종 또는 MobileNet 스타일의 백본 쓰는 이미지 인코더 사용
- 텍스트 인코더도 작아짐
- 전체 구조를 더 작고 더 빠르지만 CLIP처럼 멀티모달하게 학습시킨 것
이미 양자화된 모델 사용하자
-> 전체 모델 재학습 X, MSP60K 데이터셋에 맞춰 파인튜닝
MSP60K 데이터셋 활용한 연구에 사용된 모델들
1. LLM-PAR (Large Language Model Augmented PAR)
- Vision Transformer(ViT) 백본 기반으로, 부분 인식 및 속성 분류 위한 Multi-Embedding Query Transformer 도입한 모델
- LLM 활용해 시각적 특징 보강하고 앙상블 학습 수행
2. Mamba-PAR
- 선형 복잡도 갖는 Mamba 아키텍처 기반으로 한 모델로, Transformer 대비 연산량 적음
- 텍스트-이미지 융합 접근 방식과 순수 비전 기반 다중 레이블 인식 프레임워크 제공
3. PromptPAR
- CLIP 기반 비전-언어 융합 모델
- 속성 문장 확장해 시각적 특징과 결합
- Region-aware Prompt Tuning 기법 통해 전체 파라미터의 0.75%만 조정해 효율적인 파인튜닝 가능
4. SNN-PAR
- 스파이킹 뉴럴 네트워크(SNN) 활용한 에너지 효율적인 PAR 모델
- 스파이킹 토크나이저와 스파이킹 Transformer 백본 통해 에너지 효율성 극대화
MSP60K + 최신 경량화 모델 실험 -> 있음
MSP60K + 양자화 모델 적용 실험 -> 없음 (INT8, FP16, QAT, PTQ 등 포함)
ViT-1.58B: Mobile Vision Transformers in the 1-bit Era
- 1-bit quantization 기반 → 극한의 경량화와 연산 효율성을 목표로 한 모델
- 기존 ViT 대비 훨씬 적은 메모리 사용, 연산량 절감
- 논문에 따르면 다양한 vision task에 competitive한 성능 제공
- 추론용 성능, FLOPs에서 큰 절감 효과가 있음
하지만..
- 모델이 공개되어 있지 않음
- 학습/ 파인튜닝/ 디코더 연동 직접 해야 함
Intel/vit-base-patch16-224-int8-static-inc
- 특징: Intel® Neural Compressor 사용해 정적 양자화된 ViT-B/16 모델
- 장점: ImageNet-1K에서 미세한 정확도 손실로 INT8 양자화 적용됨
- 파인튜닝 가능 여부: PyTorch 기반. MSP60K 데이터셋에 맞춰 파인튜닝 가능
- 링크: https://huggingface.co/Intel/vit-base-patch16-224-int8-static-inc
Intel/vit-base-patch16-224-int8-static-inc · Hugging Face
The INT8 model based on vit-base-patch16-224 which finetuned on imagenet-1k Post-training static quantization This is an INT8 PyTorch model quantized with Intel® Neural Compressor. The original fp32 model comes from the fine-tuned model google/vit-base-pa
huggingface.co
- Hugging Face에 올라와 있는 모델 중 이미 양자화되어 있으면서 PAR work에 특화된 모델은 거의 없음
- yujiepan/internal.swin-base-food101-int8-structured40는 음식에 파인튜닝됨 -> MSP60K와 맞지 않음
- 대부분의 모델은 음성, 음식, 의료, OCR, 특정한 이미지 분류에 최적화되어 있음
- 더 작은 양자화된 모델들은 대부분CPU 최적화 (int8 + ARM 최적화) 되어 있음
-> intel/vit-base-patch16-224-int8-static-inc 모델로 실험
Baseline Model은 변경없음: CLIP, TinyCLIP
기존 SOTA 기반 대형 모델(CLIP, TinyCLIP)과 비교해 양자화된 경량 이미지 인코더가 속도에서 이득 가져오면서도 성능 얼마나 유지할 수 있는지 분석
| Baseline | CLIP, TinyCLIP (FP32) | 성능 기준 |
| 시도됨 | FP16, ONNX-FP32/FP16 | 성능 저하 확인 |
| 진행 | intel/vit-base-patch16-224-int8-static-inc | 양자화된 모델 성능 해야 함 |
-> 해당 모델 ONNX 파일 제공하지 않음,
PyTorch 로딩 안 됨 - weight decoding 실패 (QuantizedMeta 관련)
1. LightCLIP
- 논문: arXiv:2312.00674
- 장점: CLIP 성능 유지하면서 Vision encoder 축소, Multi-level interaction 구조 사용
- 적용 가능성: 높음 (MSP60K에서 시도된 적 없지만 PAR 같은 fine-grained task에도 적합할 듯)
- 파인튜닝: 가능 (Image encoder + classifier 부분)
- 단점: HuggingFace에 배포된 사전학습 모델이 없을 수 있음 → 직접 구현 필요
2. MoPE-CLIP
- 논문: CVPR 2024 논문 링크
- 장점: 구조적 프루닝으로 encoder 정밀도 조정 + 성능 유지
- 단점: 코드 구현체가 HuggingFace에 직접 제공되지 않음 → clone 후 파인튜닝 필요
- 적합성: 보행자 세부 속성과 같이 레이블이 많은 multi-attribute task에 적합
3. DeiT-Tiny + Custom Head
- HuggingFace: facebook/deit-tiny-patch16-224
- 장점: ViT 구조 기반의 이미지 인코더 중 가장 작고 빠름
- 전략: CLIP처럼 텍스트 인코더 없이 image encoder + classification head 구성
- 양자화 필요 (PyTorch Dynamic Quantization 또는 ONNX FP16)
- 적합성: 매우 높음 (이미 실험 많음, MSP60K에도 적합)
사전 양자화 모델 검토 결과
도메인 부적합, 호환성 문제, 성능 저하 등으로 실험 불가능하거나 의미 있는 결과 도출 어려움
실시간성과 경량화 모두 충족할 수 있는 DeiT-Tiny 선택
-> DeiT-Tiny + MSP60K Head Fine-tuning
1. DeiT 기본 구조
Input: 224×224 RGB 이미지
Patch Embedding: 이미지를 16×16 패치로 나누고, 각각을 linear projection (즉, 14×14 = 196개의 토큰 생성)
Positional Encoding: 각 패치에 위치 정보 더함
Transformer Encoder Blocks:
- Multi-head Self-Attention
- MLP (Feed Forward Layer)
- LayerNorm + Residual 연결
[CLS] Token: 최종 분류 결과 뽑는 특수 토큰 사용
2. 주요 개선점
Knowledge Distillation 활용
- Distillation Token을 하나 더 넣어서 CNN 기반 teacher 모델에게 지식 배울 수 있도록 함
No need for huge datasets
- ViT는 JFT-300M 같은 초대형 데이터셋 필요하지만 DeiT는 ImageNet-1K만으로도 SOTA급 성능 가능
3. DeiT 모델 종류
| 모델 이름 | Heads | Hidden Dim | Layers | Params |
| DeiT-Tiny | 3 | 192 | 12 | ~5M |
| DeiT-Small | 6 | 384 | 12 | ~22M |
| DeiT-Base | 12 | 768 | 12 | ~86M |
DeiT는 ViT 구조
경량화 + Distillation 기반 지식 전수
-> 적은 데이터로도 고성능 낼 수 있는 이미지 분류용 Transformer
실험 순서
| 1단계 | DeiT-Tiny로 MSP60K 이미지 인퍼런스 속도 측정 | |
| 2단계 | MSP60K 클래스 수에 맞게 classification head 변경 후 fine-tune | |
| 3단계 | fine-tuned 모델 성능 측정 (mAP, F1 등) | |
| 4단계 | 속도 vs 성능 트레이드오프 분석 및 시각화 |
1. DeiT-Tiny로 MSP60K 이미지 인퍼런스 속도 측정


1. Mean Latency (단일 샘플 처리 시간)
- TinyCLIP: 0.000194 sec/sample
- CLIP: 0.000262 sec/sample
- DeiT-Tiny: 0.000290 sec/sample
- MobileCLIP: 0.001326 sec/sample
DeiT-Tiny는 CLIP보다 느리고, TinyCLIP보단 더 느림
MobileCLIP보단 4배 이상 빠름
2. Throughput (초당 처리 가능한 이미지 수)
- TinyCLIP: 5165.60 samples/sec
- CLIP: 3815.59 samples/sec
- DeiT-Tiny: 3445.45 samples/sec
- MobileCLIP: 754.43 samples/sec
DeiT-Tiny는 단일 샘플보단 다수 처리할 때 효율적
3. Total Inference Time
- DeiT-Tiny: 310.12 sec
- MobileCLIP: 404.06 sec
- TinyCLIP: 422.08 sec
- CLIP: 441.90 sec
기존 베이스라인 (CLIP, TinyCLIP, MobileCLIP) 대비 DeiT-Tiny가 현재 모델 중 가장 빠른 인퍼런스 시간 기록
2. MSP60K 클래스 수에 맞게 classification head 변경 후 fine-tune
DeiT-Tiny 모델 파인튜닝
- 속성 분류 성능 (mAP, F1, Recall 등) 측정
베이스라인 모델들과 정확도 성능 비교
결과 비교 시각화, 최종 성능-속도 trade-off 제시
'Capstone' 카테고리의 다른 글
| [ Presentation ] 보행자 속성 인식을 위한 CLIP Image Encoder 양자화 적용 가능성 탐색 (1) | 2025.06.04 |
|---|---|
| [ Meeting ] 5월 4주차 - 그래도 Quantization ..! (0) | 2025.05.25 |
| [ Meeting ] 5월 2주차 - 정밀도 낮추기 실험 (0) | 2025.05.12 |
| 이쯤에서 다시 보는 목표 (0) | 2025.05.09 |
| [ Meeting ] 5월 1주차 - Baseline 측정(PyTorch FP32) (0) | 2025.05.05 |