TTA(Test-Time Augmentation)는 딥러닝 모델을 학습시킬 때 데이터가 부족한 상황에 이미지를 증강 시키는 것과 비슷하게
모델을 test할 때도 data augmentation을 해서 모델의 예측을 개선하는 기법이다.
증가시키는 방식은 train할때 나 test할때 둘다 같다.
구체적으로는 TTA는 입력 이미지나 데이터를 여러 번 변형하여 각각에 댛 모델이 예측한 결과들을 모아서 최종 예측을 산출하는 방식으로 작동한다.

모델에 한가지 이미지를 주는 것보다 여러가지 변형된 이미지를 주어 평가함으로써 발생하는 오차를 줄이는 것이다.

단점
모델의 성능, 일반화 능력 측면에서는 좋은 모습들을 보인다는 것을 알 수 있지만 TTA는 여러번의 이미지를 모델에 입력해 다중 예측 및 앙상블해야 하기 때문에 추가적인 계산 비용과 시간이 든다.
또한 모델이 이미 훈련데이터가 많아 과적합되었다면 TTA를 적용해도 성능이 개선되지 않을 수 있다.
object detection에서의 적용
Object detection에서 TTA를 적용하는 과정은 다음과 같다.
이미지 증강: 테스트 이미지에 여러 변형(증강)을 적용합니다. 예를 들어, 좌우 반전, 회전, 크기 조정 등을 사용할 수 있습니다.
예측: 각 변형된 이미지에 대해 모델이 예측한 bounding box와 confidence score를 얻습니다.
원본 이미지로의 역변환: 변형된 이미지에 대한 예측 결과를 원본 이미지 기준으로 되돌립니다. 예를 들어, 좌우 반전된 이미지에 대해 예측한 박스는 다시 좌우 반전되어 원본 좌표에 맞춰야 합니다.
NMS(Non-Maximum Suppression): 원본 이미지로 역변환된 여러 예측 박스들 중에서 겹치는 박스들을 제거하고, 가장 신뢰도가 높은 박스를 선택합니다.
이때 NMS말고도 WBF, softnms등 다양한 앙상블 방법으로 적용할 수 있다.
다양한 모델에 적용할 수 있지만 real time을 중시하는 object detection 모델이라면 시간적인 문제에 단점이 있어서 사용하기는 어려워 보인다.
NMS(Non-Maximum Suppression)와 Soft-NMS는 객체 탐지(Object Detection) 분야에서 널리 사용되는 기법으로
다중 중복된 바운딩 박스(bounding boxes)를 제거하여 최종적으로 객체에 대해 하나의 박스만 남기는 방법이다.
앙상블 할 때도 쓰이고 추론할 때나 학습할 때도 사용된다.

이 알고리즘은 하나의 객체에 대해 겹치는 박스들이 많을텐데 겹치는 박스들중에 젤 score가 높은 박스만 남겨놓는 알고리즘이다.
이를 통해 모델의 출력을 간결하게 하고 중복된 결과를 제거함으로써 정확한 객체 감지를 할 수 있게 된다.
박스 정렬: 모델이 예측한 바운딩 박스들을 각 박스의 신뢰도(score)에 따라 내림차순으로 정렬합니다.
최고 신뢰도 박스 선택: 가장 높은 신뢰도를 가진 바운딩 박스를 선택하고, 나머지 박스와의 겹침 정도(Intersection over Union, IoU)를 계산합니다.
중복 박스 제거: IoU가 특정 임계값(일반적으로 0.5)을 넘는 박스들은 중복된 것으로 간주되어 제거합니다.
반복: 남아 있는 박스들 중에서 다시 신뢰도가 가장 높은 박스를 선택하여 위 과정을 반복합니다.

모델 학습 시에 사용되지는 않고 추론할 때 사용되는 모델이 있고 EX) fast rcnn
두 과정에서 모두 NMS를 사용하는 모델도 있다. EX) faster rcnn
구현이 간단하고 직관적이다. 또한 중복된 박스를 제거하기 때문에 효율적인 예측이 가능하도록 한다.
하지만 임계 값이 너무 낮으면 동일한 클래스의 객체들이 근접해 있는 경우, 하나의 객체만 남고 나머지는 누락될 수 있습니다.

NMS에서 발생하는 문제점을 해결하기 위해 나온 NMS의 변형 기법이다.
Soft-NMS는 바운딩 박스를 억제하는 것이 아니라, confidence를 감소시킨다. 기존의 NMS에서 억제되었던 바운딩 박스가 Soft-NMS를 적용하면 낮은 confidence로 검출되는 것이다.
이 방법은 객체가 가까이 위치해 있는 경우에도 유용하게 작동하며, 더 많은 정보를 보존하면서 중복된 예측을 처리합니다.

WBF(Weighted Box Fusion)는 객체 탐지(Object Detection) 결과를 후처리(Post-processing)하는 기법이다.
WBF는 특히 앙상블(ensemble) 모델에서 각기 다른 모델이 예측한 bounding 박스를 통합할 때 유용하게 사용된다. 이 기법은 Non-Maximum Suppression(NMS)이나 Soft-NMS와 같은 전통적인 방법보다 더 정교하게 박스를 결합하여 성능을 개선한다.

바운딩 박스 정렬
모든 예측된 바운딩 박스를 신뢰도 점수에 따라 내림차순으로 정렬합니다.
클러스터링
높은 신뢰도 박스부터 시작하여, 특정 IoU(Intersection over Union) 임계값 이상으로 겹치는 박스들을 동일한 클러스터로 묶습니다.
클러스터링을 할 때는 클러스터링 알고리즘(ex DBSCAN)을 사용하여 수행됩니다.
가중 평균 계산
각 클러스터 내의 박스들의 좌표(중앙점, 너비, 높이 등)를 신뢰도 점수를 가중치로 하여 평균을 냅니다.
이 과정을 통해 하나의 대표 박스가 생성됩니다.
최종 박스 생성
각 클러스터에서 계산된 대표 박스를 최종 예측으로 채택합니다.