옵티컬 플로우
컴퓨터 비전에서 Optical Flow의 강력한 기능을 경험해 보세요. 모션을 추정하고, 비디오 분석을 향상시키며, AI 혁신을 주도하는 방법을 알아보세요.
옵티컬 플로우는 관찰자(예: 카메라)와 장면 간의 상대적인 움직임으로 인해 발생하는 시각적 장면에서 객체, 표면 및 가장자리의 움직임을 추정하는 것을 포함하는 컴퓨터 비전(CV)의 핵심 개념입니다. 이는 두 개의 연속적인 비디오 프레임 사이에서 픽셀 또는 특징의 움직임 방향과 속도를 설명하는 벡터 필드를 계산합니다. 이는 사물이 '어떻게' 움직이는지에 대한 자세하고 낮은 수준의 이해를 제공하며, 이는 많은 동적 장면 분석 작업에 기본적입니다.
Optical Flow 작동 방식
대부분의 광학 흐름 알고리즘의 기본 가정은 "밝기 불변성"이며, 이는 객체의 특정 지점에 해당하는 픽셀의 강도가 짧은 시간 간격 동안 일정하게 유지된다고 가정합니다. 이 밝기를 보존하는 변위를 찾음으로써 알고리즘은 움직임을 추정할 수 있습니다. 광학 흐름을 계산하는 데는 두 가지 주요 접근 방식이 있습니다.
- 조밀한 광학 흐름(Dense Optical Flow): 이 방법은 이미지의 모든 단일 픽셀에 대한 모션 벡터를 계산합니다. 이미지 분할 및 복잡한 장면 역학을 이해하는 것과 같은 작업에 유용한 매우 상세한 모션 필드를 제공합니다. Horn-Schunck 방법은 고전적인 예이며, RAFT와 같은 최신 딥 러닝 모델은 최첨단 성능을 제공합니다.
- 희소 광학 흐름: 모든 픽셀을 분석하는 대신 이 방법은 프레임 간에 "흥미로운" 특징(예: 모서리 또는 키포인트)의 희소 집합을 추적합니다. Lucas-Kanade 방법은 잘 알려진 희소 알고리즘입니다. 이 접근 방식은 계산적으로 더 효율적이며 객체 추적과 같이 특정 지점의 움직임만 필요한 응용 프로그램에 적합합니다.
옵티컬 플로우 vs. 객체 추적
광학 흐름과 객체 추적은 관련이 있지만, 서로 다른 문제를 해결합니다.
- 광학 흐름은 픽셀의 저수준 움직임을 설명합니다. 그 출력은 두 프레임 사이의 움직임을 나타내는 벡터 집합입니다. 본질적으로 "객체"의 개념을 이해하거나 시간이 지남에 따라 해당 객체의 정체성을 유지하지 않습니다.
- 객체 추적(Object Tracking)은 특정 객체의 위치를 파악하고 여러 프레임에서 해당 객체의 경로를 추적하여 일관된 ID를 할당하는 고차원적인 작업입니다. 추적 알고리즘은 객체 탐지 모델(예: Ultralytics YOLO 모델)에 의해 식별된 후 다음 프레임에서 객체의 위치를 예측하기 위해 종종 광학 흐름과 같은 기술을 입력으로 사용합니다. Ultralytics의 객체 추적 모드에서 이러한 작동 방식을 확인할 수 있습니다.
간단히 말해, 광학 흐름은 "픽셀이 어떻게 움직이는가?"에 대한 해답을 제공하고, 객체 추적은 "그 차가 어디로 갔는가?"에 대한 해답을 제공합니다.
실제 애플리케이션
광학 흐름은 비디오에서 움직임을 이해해야 하는 많은 애플리케이션에 매우 중요합니다.
- 자율 시스템: 자율 주행 차량 및 로봇은 시각적 주행 거리 측정(자체 움직임 추정), 장애물 감지 및 환경에서 객체의 상대적 움직임 이해를 위해 광학 흐름을 사용합니다. 예를 들어, 자율 주행차는 도로에 대한 상대적인 속도를 추정하거나 근처 차량을 추적하는 데 도움이 됩니다. Waymo와 같은 회사는 모션 인식에 크게 의존합니다. 자세한 내용은 자율 주행차의 AI를 살펴보세요.
- 비디오 압축: MPEG와 같은 표준은 광학 흐름과 유사한 모션 추정 기술을 사용하여 이전 프레임을 기반으로 후속 프레임을 예측합니다. 모션 벡터와 예측 오류(잔차)만 인코딩하여 상당한 데이터 압축이 이루어집니다.
- 행동 인식: 비디오에서 사람의 행동을 이해하는 것은 자세 추정의 핵심 부분이며, 종종 광학 흐름에서 파생된 모션 패턴을 분석하는 것을 포함합니다. 이는 스포츠 분석 및 스마트 피트니스 기술 애플리케이션에 매우 중요합니다.
- 비디오 안정화: 디지털 이미지 안정화 기술은 광학 흐름을 사용하여 카메라 흔들림을 추정하고 보정하여 더 부드러운 비디오를 생성할 수 있습니다. 이 기술은 최신 스마트폰 및 카메라에서 일반적입니다.
- 의료 영상 분석: 심초음파에서 심장 근육의 움직임이나 시술 중 장기 변형과 같은 조직 움직임을 추적하는 데 사용됩니다. 관련 발전 사항은 Radiology: Artificial Intelligence 저널과 같은 자료를 참조하십시오.
- 로보틱스: 로봇이 주변 환경의 움직임에 대한 시각적 피드백을 기반으로 탐색하고, 객체와 상호 작용하며, 작업을 수행할 수 있도록 합니다. ROS와 같은 시스템과의 통합은 종종 동작 분석을 포함합니다.
도구 및 구현
OpenCV와 같은 라이브러리는 고전적인 광학 흐름 알고리즘의 구현을 제공하며, 해당 문서에는 자세한 OpenCV 광학 흐름 튜토리얼이 포함되어 있습니다. 딥러닝 접근 방식의 경우 PyTorch (PyTorch 공식 사이트 방문) 및 TensorFlow (TensorFlow 공식 사이트 방문)와 같은 프레임워크가 일반적으로 사용되며, 종종 Hugging Face와 같은 플랫폼을 통해 사용 가능한 사전 훈련된 모델을 활용합니다. 이러한 모델을 훈련하려면 FlyingThings3D 또는 Sintel 데이터 세트와 같이 ground truth 흐름 정보가 포함된 대규모 비디오 데이터 세트가 필요합니다. Ultralytics HUB와 같은 플랫폼은 관련 컴퓨터 비전 작업을 위한 데이터 세트 및 모델 훈련 워크플로를 관리하는 데 도움이 될 수 있습니다.