객체 검출 모델 고도화 & 최적화

조회수: -

Published:

이번 포스팅에서는 2024년에 진행한 객체 검출 모델을 고도화하고 최적화한 과정을 공유하고자 합니다.


1. 객체 검출 모델 고도화

객체 검출 모델은 실제 환경에서 의도하지 않은 객체를 잘못 검출하는 오검출 문제가 자주 발생합니다. 이를 해결하기 위해, 모델의 구조적 특성을 활용하여 검출 대상 객체의 특징을 충분히 학습할 수 있도록 설계했습니다. 또한, Data-centric 접근법을 통해 성능 향상을 위한 데이터를 효율적으로 수집 및 분석하여, 모델이 다양한 환경에서도 균형 잡힌 성능을 발휘할 수 있도록 최적화했습니다.

1.1 객체와 모델의 특징 이해로 성능 극대화하기

이번 프로젝트에서는 Transformer 기반 객체 검출 모델인 DETR(DEtection TRansformer)를 활용했습니다.

DETR은 예측된 객체와 실제 객체(Ground Truth) 간 최적 매칭을 수행하는 헝가리안 매칭(Hungarian Matching) 알고리즘을 사용하며, 다양한 크기와 유형의 객체를 균형 있게 검출하는 데 강점을 가집니다.

모델 성능을 극대화하기 위해, 학습 과정에서 매칭 코스트(Matching Cost)를 조정하여 모델이 다양한 크기와 속성의 객체를 효과적으로 학습하도록 했습니다. 이러한 매칭 코스트의 가중치를 세밀히 조정함으로써 작은 객체의 누락이나 큰 객체의 오검출을 줄이고, 모든 크기의 객체에 대해 균형 잡힌 성능을 확보할 수 있었습니다.

이처럼 DETR의 구조적 특징인 헝가리안 매칭을 이해하고, 검출 대상 객체의 속성에 맞춰 하이퍼파라미터를 조정한 결과, 모델의 성능을 한층 더 향상시킬 수 있었습니다.

1.2 Data-centric 접근

모델의 오검출 문제를 해결하기 위해, Data-centric한 접근을 시도했습니다. 이 접근법은 단순히 데이터를 추가하는 데 그치지 않고, 모델이 혼동을 줄이고 더 나은 일반화 성능을 발휘할 수 있도록 학습 과정을 개선하는 데 중점을 둡니다.

1.2.1 Confusing Negative Sample 수집

양성 샘플과 혼동 음성 샘플

오검출 문제를 해결하기 위해, 모델이 잘못 검출하는 상황을 분석하고 원인을 파악했습니다. 주로 외형적으로 비슷하지만 검출 대상이 아닌 객체가 원인이 되는 경우가 많았습니다. 이를 해결하기 위해, 외형적으로 유사하지만 검출 대상이 아닌 객체‘혼동 음성 샘플(Confusing Negative Sample)’로 정의하고 추가 학습 데이터로 활용했습니다.

이러한 혼동 음성 샘플은 모델이 검출 대상 객체의 경계를 더욱 명확히 구분할 수 있도록 돕습니다.

쉽게 설명하자면, 동물을 처음 보는 사람에게 ‘말’을 보여주며 기억하게 한 후, 당나귀를 보여주었을 때 이를 ‘말’이 아니라고 판단할 수 있을까요? 당연히 어려울 것입니다. 하지만 ‘말’과 ‘당나귀’를 함께 보여주며, ‘당나귀’는 ‘말’이 아니라고 설명해준다면 구별이 가능해지겠죠?
이와 마찬가지로, 모델이 Positive Sample(검출 대상 객체)과 혼동 음성 샘플(Confusing Negative Sample)을 함께 학습함으로써, 유사한 객체를 정확히 구분할 수 있도록 개선할 수 있었습니다.

이 과정을 통해 오검출률을 효과적으로 감소시키고, 모델의 실질적인 성능을 높일 수 있었습니다.

1.2.2 Active Learning

데이터 수집 과정에서 신뢰도가 낮은 샘플과 기존 데이터와 다른 새로운 유형의 샘플을 우선적으로 선택하여 학습 데이터의 다양성과 품질을 높였습니다. Active Learning은 모델이 스스로 학습에 필요한 데이터를 선택하도록 유도하는 접근법으로, 특히 대규모 데이터를 효율적으로 활용하고자 할 때 효과적입니다. 로드뷰에서의 지도 및 교통 객체 검출 프로젝트에서는 다음과 같은 구체적인 Active Learning 전략을 적용했습니다:

  1. Uncertainty Sampling
    모델이 가장 불확실하게 예측하는 샘플(예: 신뢰도 점수가 낮거나 경계값에 가까운 객체)을 우선적으로 수집하고 검토했습니다. 이러한 Decision boundary 근처의 데이터를 수집해 추가 학습 데이터로 활용함으로써 모델이 경계에 위치한 객체를 더 잘 구분할 수 있도록 개선했습니다.

  2. Diversity Sampling
    Uncertainty Sampling과 함께, 데이터의 다양성을 확보하기 위해 기존 학습 데이터와 성격이 다른 객체를 우선적으로 선택했습니다. 예를 들어, 조명 조건, 객체의 크기와 개수, 관측 각도 등 다양한 환경에서 촬영된 데이터를 추가했습니다. 이를 통해 모델이 여러 환경에서의 객체를 더 잘 인식할 수 있도록 일반화 성능을 강화할 수 있었습니다.

  3. Region of Interest (ROI) Prioritization
    영상에서 특정 관심 영역을 중심으로 데이터를 수집했습니다. 예를 들어, 도로 가장자리 근처의 물체는 차선 유지와 관련된 중요한 정보일 가능성이 높으므로 이러한 영역에서의 검출 정확도를 높이기 위해 우선 학습 데이터를 보강했습니다.

  4. Feedback Loop Integration
    라벨링이 완료된 데이터는 즉시 학습 과정에 추가되었으며, 업데이트된 모델의 성능을 모니터링해 새로운 데이터 수집 방향을 결정했습니다. 예를 들어, 학습 후에도 여전히 오검출이 발생하는 영역에 초점을 맞추어 추가 데이터를 수집했습니다.

1.3 검출 결과 필터링

학습 데이터를 충분히 보강하고 모델을 최적화했음에도, 특정 상황에서는 여전히 예기치 않은 오검출이 발생할 수 있습니다. 이를 보완하기 위해 검출 결과 필터링을 적용했습니다.

검출된 객체의 위치, 크기, 비율 등을 기준으로 검출 결과를 추가로 검토해 불필요한 오검출을 줄였습니다. 예를 들어, 객체의 크기가 특정 임계값 이하이거나 비율이 맞지 않을 경우 오검출로 간주하여 필터링했습니다. 또한, 이미지 세그멘테이션 결과를 활용해 검출된 객체가 적합한 위치에 있는지 검증하는 과정을 추가했습니다. 세그멘테이션 데이터와 검출 결과를 함께 비교함으로써 더욱 정밀한 검출 성능을 확보할 수 있었습니다.

후처리는 단순한 규칙 기반 필터링이 아니라, 모델의 출력값에 대한 불확실성을 정량적으로 분석하고 이를 활용하여 검출 정확도를 높이는 방식으로 진행되었습니다.

1.4 지속적 개선과 검증

모델 개발 과정은 단발성 작업으로 끝나지 않습니다. 새로운 데이터를 지속적으로 추가하고, 오검출 사례를 분석하며, 반복적으로 모델을 재학습하고 검증하는 과정을 통해 모델 성능을 더욱 견고히 만들 수 있습니다.

이러한 데이터 중심 접근법과 모델 최적화 전략을 통해, 객체 검출 모델의 정밀도를 높이고 실제 환경에서 신뢰성 있는 결과를 얻을 수 있었습니다.


2. 통합 모델 개발을 통한 GPU 리소스 효율화

초기에는 각 요청에 따라 특정 객체를 검출하는 개별 모델을 개발하는 방식으로 작업을 진행했습니다. 예를 들어, 특정 객체(A)를 검출하려면 이에 맞는 데이터셋을 수집하고 A를 검출할 수 있는 모델을 개발했습니다. 이후 새로운 객체(B)를 검출해야 하는 요청이 들어오면, 또다시 B에 적합한 데이터를 구축하고 별도의 모델을 만들어 운영했습니다.

이 방식은 초기에는 각 객체에 특화된 모델을 만드는 데 유리했지만, 시간이 지나면서 문제점이 드러났습니다. 여러 모델이 하나의 이미지를 반복적으로 처리하게 되면서 GPU 리소스가 과도하게 사용되었고, 운영과 관리의 복잡도가 증가했습니다. 이를 해결하기 위해, 여러 객체를 하나의 모델로 검출할 수 있는 통합 검출 모델을 개발하기로 했습니다.

2.1 데이터셋 병합을 통한 통합 데이터셋 구축

통합 모델 개발의 첫 단계는 서로 분리된 학습 데이터셋을 통합하는 것이었습니다. 초기 데이터셋들은 특정 객체에 초점이 맞춰져 있어, 하나의 데이터셋에는 A 객체만 어노테이션되어 있고, 다른 데이터셋에는 B 객체만 어노테이션되어 있는 경우가 많았습니다. 이를 수동으로 병합하려면 많은 시간이 소요될 것으로 예상되었습니다.

이 문제를 해결하기 위해 교차 추론(cross inference) 기법을 도입했습니다. A 객체를 검출하는 기존 모델로 B 데이터셋을 추론하고, 반대로 B 객체를 검출하는 모델로 A 데이터셋을 추론하여 서로 부족한 어노테이션을 자동으로 보완하는 방식입니다. 이렇게 자동으로 병합된 데이터셋은 작업자가 추가로 검토하고 수정해 최종 통합 데이터셋의 완성도를 높였습니다.

이 과정을 통해 데이터셋 병합 작업에 소요되는 시간을 크게 단축할 수 있었고, 통합 모델을 학습시키는 데 필요한 데이터셋을 효율적으로 구축할 수 있었습니다.

2.2 Zero-shot Object Detection으로 새로운 객체 검출 니즈 대응

통합 모델을 개발하던 중, 새로운 객체를 검출해야 하는 요청이 발생했습니다. 기존 방식대로 새로운 객체를 검출하려면 데이터셋을 처음부터 수집하고 학습하는 데 많은 시간이 필요했습니다. 이를 해결하기 위해 Zero-shot Object Detection 기술을 도입했습니다.

Zero-shot Object Detection은 텍스트 쿼리를 입력받아, 사전에 학습되지 않은 객체를 탐지할 수 있는 기술입니다. 예를 들어, “빨간 차량” 또는 “녹색 표지판” 같은 텍스트 설명을 입력하면, 모델이 해당 객체를 이미지에서 찾아냅니다. 이는 새로운 객체나 기존 데이터셋에 포함되지 않은 객체를 탐지할 때 매우 유용합니다.

비록 Zero-shot 모델의 정확도가 전통적인 Supervised 방식의 모델에 비해 낮을 수 있지만, 해당 객체가 포함된 이미지만 빠르게 선별해내는 데는 충분히 효과적이었습니다. 이를 통해 새로운 데이터셋을 빠르게 구축할 수 있었고, 통합 모델 개발 일정 또한 단축할 수 있었습니다.

2.3 통합 모델의 효과

통합 모델 개발로 인해 여러 개의 개별 모델을 운영하는 복잡한 환경이 단순화되었습니다. 이제 하나의 모델로 다양한 객체를 검출할 수 있게 되었으며, GPU 리소스 사용량도 크게 줄일 수 있었습니다.

더불어, 모델 관리와 운영의 효율성이 향상되었고, 추가적인 검출 요청에도 신속하게 대응할 수 있는 유연한 환경이 마련되었습니다. 이를 통해 모델 개발 프로세스 전반이 간소화되고, 전체적인 운영 효율성이 크게 개선되었습니다.


이번 포스팅에서는 객체 검출 모델 고도화와 통합 모델 개발을 통한 GPU 리소스 효율화 사례를 공유했습니다. 데이터 중심 접근법으로 오검출 문제를 해결하고, 다양한 필터링과 테스트를 통해 모델 성능을 검증하며 실제 운영 환경에서 신뢰성을 확보할 수 있었습니다.

또한, 통합 모델 개발을 통해 개별 모델 운영의 복잡성을 해결하고, GPU 리소스를 절감하며 효율적이고 관리가 용이한 환경을 조성할 수 있었습니다. 더불어 Zero-shot Object Detection과 같은 최신 기술을 활용해 새로운 객체 검출 요구에도 신속히 대응할 수 있었습니다.