많은 검출(Deteciton)모델은 사전에 준비된 데이터 한정으로만 학습이 진행되는데, 여기서 문제는 확장성 제한에 따른다. 인식해야할 물건이 바뀌거나 더 넓은 범주의 Detection을 하려면 1) 데이터 새로 모으고, 2) 레이블링 하고, 3) 모델 다시 학습하는 과정이 따른다. 4) 금액도 많이 들고, 5) 시간도 오래 소요되는것은 물론이다.
Zero-Shot Detector 는 재학습없이 새로운 물체도 인식될 수 있도록 되기를 원했고, 사용자가 입력한 prompt를 기반으로 찾게 되는 것을 의미한다.
Grounding DINO는 현재 zero-shot 객체 검출 모델에서 SOTA이다.
(왼) Prompt: 의자, (오) Prompt: 강아지 꼬리
사용자가 준 Prompt를 기반으로 객체를 잘 검출하는 것으로 보인다.
Grounding DINO의 Architecture
Grounding DINO는 기존 DINO와 GLIP 논문에서 결합된 아이디어이다.
DINO: Transformer 기반의 Detection 방법, NMS와 같은 후처리 기법이 제거된 방법
GPIP: text가 주어지고 거기에 대응되는 시각적 요소의 문맥을 이해하는 방법
1. Text Backbone and Image Backbone
- Image Backbone: Swin Transfomer (Multi-scale 이미지 feature extractor) 로 더욱 풍부한 이미지 feature 생성
- Text Backbone: BERT로 텍스트 feature 생성
위 그림처럼 text는 text backbone에서 추출하고, image는 image backbone에서 각자 추출한다.
2. Feature Enhancer
1번 과정에서 feature가 각각 추출이 되면 멀티 모달 피쳐 통합 과정을 위해 featrue enhancer로 전달된다.
Feature Enhancer는 복수개의 feature enhancer 레이어로 구성된다.
Deformable self-attention은 이미지 피쳐를 향상시키는데 활용되고, vanilla self-attention은 텍스트 피쳐를 향상시키는데 활용된다.
3. Language-guided query selection
물체 검출에 text 입력값을 제대로 가이드 시켜주기 위해서는, language-guided query selection module이 디코더 쿼리단에서 입력 테스트가 더 관련있는 feature로 selection될 수 있게 설계됐다.
4. Cross-modality Decoder
cross-modality decorder는 이미지랑 텍스트 feature 결합하는 기능으로 구성되어지는데,
3번의 query selection으로 부터 나온 각각의 cross-modality 쿼리들이 self-attention layer로 전달된다.
다음으로 image feature는 "image cross-attention"에서 결합하고, text feature는 "text cross-attention"에서 결합한다.
마지막으로, cross-modality 디코에 레이어에서 FFN layer으로 입력된다.
각각의 decorder 레이어는 기존 DINO 디코더 레이어와 달리 추가적인 text cross-attention 레이어가 있는데, 더욱 정교한 정렬 과정을 위해서 텍스트 정보를 쿼리에 삽입해야한다.
혼란스러워 할 예측을 딥러닝 세계에서도 동일하게 반영되며, 이것을 "Closed-world Assumption"이라고 한다.
딥러닝도 마찬가지로 테스트셋이 훈련 데이터와 유사한 분포를 가진 데이터이면 괜찮겠지만, 실제로는 그렇기 힘들다. 훈련 데이터와 다른 분포를 가지는 real-world의 데이터로(여기서는, Out-of-distribution) OOD Detection이 등장하게 되었다.
OOD Detection을 잘 해야하는 이유로, 실제로 real-world는 방대한 양으로 인해 training 에 포함되지 않은 이상 현상이 있을 수 있고, 실제로 약을 잘 못 찾아 잘못된 치료법을 제공한다던지 집 로봇이 이상 행동을 한다든지 등을 야기할 수 있다.
그래서 OOD Detection이 중요하다.
그래서, OOD 사례를 일반화하고 이해 범위를 넘어서는 통찰력을 가지는 역할이 중요하다.
AI 모델이 OOD 데이터에 취약한 이유,
Model Complexity(모델 복잡성): 모델 네트워크는 매우 파라미터화 되어있고, 훈련데이터 내 복잡한 패턴에 fitting된다. 이러한 복잡성이 in-distribution 데이터에는 높은 정확도를 가지게하는 반면, OOD는 취약해진다. 모델은 OOD 입력의 분포가 훈련데이터 분포랑 다르더라도 자신있게 반응을 할 수 있는것도 문제가 될 수 있다.
Lack of Regularization(정규화 부족): Dropout 기법이나 Weight decay 등의 정규화 기법은 모델의 일반화 성능을 향상시킬 수 있기는 하지만, 모델은 여전히 훈련 데이터에 오버피팅된다.
Dataset Shift(데이터셋 변화): 실제로는 시간이 지남에 따라 데이터 분포가 언제든지 변할 수 있다.
Model Assumptions(모델 가정): 보통 모델들은 가정을 하게 되는데, OOD 데이터가 가정을 위반한다면 성능이 저하된다.
High Dimensionality(고차원): 차원의 저주(the curse of dimensionality)도 역할이 될 수 있다. 데이터가 볼륨으로 갈수록 표면 정보도 생기면 더욱 훈련 데이터에 fitting될 수 있다.
등등등(거의 다 유사한 얘기)
OOD Detection 접근 방법,
Maximum Softmax Probability(최대 소프트맥스 확률값): 보통 예측을 하면 훈련 데이터에 in-distribution된 데이터는 높은 softmax probability를 가질거고, ood 데이터는 낮은 softmax probability를 갖게 될텐, 이 확률값을 기반으로 threshold로 셋팅해 일정 값 이하는 OOD 객체로 간주할 수 있다.
Ensembling of Multiple Models(여러 모델의 앙상블): 한가지 모델의 예측값에 대해서 의존하지 않고 여러 모델의 예측값을 결합해서 집단적으로 결정을 내리면 더욱 OOD 데이터를 잘 식별할 수 있다.
Temperature Scaling(온도조정): 후처리 기법인데, 모델 결과물(softmax)를 보정(calibration)한다. "temperature" 파라미터를 조정해서 모델 예측 확률값을 수정할 수 있다. 적절하게 보정된 모델은 OOD 데이터를 더욱 정확하게 감지할 수 있다.
Training a Binary Classficiation Model as a Calibrator(보정 역할로 이진 분류 모델 훈련): 다른 접근법으로 보정 역할을 하는 이진 분류기를 학습하는 것이다. OOD데이터인지 in-distribution 데이터인지. 주요 모델의 output으로 이 보정 분류 모델에 넣으면, in distribution인지 OOD인지 정확히 알 수 있다.
Monte-Carlo Dropout(몬테까를로 드랍아웃): 일반적으로 dropout은 일반화 기법으로 흔하게 쓰이는데, 몬테까를로 dropout은 인퍼런스때와 수행하고 모델을 여러번 실행하는 방법이다. 이런 방법으로 모델의 output 분포로 모델의 불확실성을 추정하는데 이때, OOD 감지에 사용된다.
Furue Direction(미래 연구 방향),
Enhanced Generalization(향상된 일반화): 모델이 더욱 복잡해짐에 따라서, OOD 데이터에 대해서도 일반화 할 수 있는지 확인하는게 중요하다.
Integration with Other AI Domains(다른 AI 도메인과의 통합): Transfer learning, few-shot learning, 등과 같이 다른 AI도메인 통합되어 더욱 강력하고 적응가능한 시스템이 되는 방향.
Real-time OOD Detection(실시간 OOD 감지): 자율주행이나 의학진단 등에 중요하게 사용될 것. 정확성 잃지 않되 더욱 빠르게 감지할 것