사상 리더

실시간 비디오 처리에 AI 적용: 기본 및 더 많은 것

mm
Unite.AI를 Google의 선호 소스에 추가

작성자: Maksym Tatariants, 데이터 과학 엔지니어, MobiDev.

인공지능(AI)을 비디오 처리에 사용하는 것은 새로운 것이 아닙니다. 이미지 처리를 넘어서면, 가장 일반적인 사용 사례 중 하나입니다. 비디오 처리도 컴퓨터 비전, 객체 인식, 기계 학습, 딥 러닝과 같은 기존 기술을 사용하여 이 프로세스를 향상시킵니다.

컴퓨터 비전과 NLP를 비디오 편집 및 생성, 객체 인식을 비디오 콘텐츠 자동 태그付け 작업, 기계 학습을 AI 비디오 분석을 스트림라인하는 데 사용하거나, 딥 러닝을 실시간 배경 제거를 가속화하는 데 사용하는 경우, 사용 사례는 계속 증가하고 있습니다.

실시간 비디오 처리의 기본에 대해 자세히 알아보겠습니다.

실시간 비디오 처리의 기본

실시간 비디오 처리는 감시 시스템에서 객체 및 얼굴 인식을 사용하는 필수 기술입니다. 또한 산업 분야에서 AI 시각적 검사 소프트웨어를 구동하는 프로세스입니다.

비디오 처리는 디코딩, 계산, 인코딩과 같은 일련의 단계를 포함합니다. 여기서 알아야 할 내용입니다:

  • 디코딩: 압축된 파일에서 원래 형식으로 비디오를 변환하는 프로세스입니다.
  • 계산: 원래 비디오 프레임에서 수행되는 특정 작업입니다.
  • 인코딩: 처리된 프레임을 원래 압축 상태로 다시 변환하는 프로세스입니다.

비디오 처리 작업의 목표는 이러한 단계를 가능한 한 빠르고 정확하게 완료하는 것입니다. 이를 달성하는 가장 쉬운 방법은 병렬 처리와 알고리즘 최적화를 사용하는 것입니다. 간단히 말하면, 파일 분할과 파이프라인 아키텍처를 사용해야 합니다.

비디오 파일 분할이란?

비디오 파일 분할은 알고리즘이 동시에 작동할 수 있도록 허용하여 더 느리지만 더 정확한 모델을 사용할 수 있습니다. 이는 비디오를 별도의 부분으로 분할하여 동시에 처리하는 것을 통해 달성됩니다.

비디오 분할을 가상 파일 생성으로 생각할 수 있습니다.

그러나 비디오 파일 분할은 실시간 비디오 처리에 최선의 선택은 아닙니다. 왜냐하면 이 프로세스는 처리 중에 파일을 일시 중지, 재생, 되감기하는 것을 어렵게 만들기 때문입니다.

파이프라인 아키텍처란?

다른 옵션은 파이프라인 아키텍처입니다. 이 프로세스는 비디오를 분할하는 대신 처리 중에 수행되는 작업을 분할하고 병렬화합니다.

실시간으로 얼굴을 감지하고 흐리게 하는 비디오 감시 시스템에서 파이프라인 아키텍처를 사용하는 예입니다.

이 예에서 파이프라인은 디코딩, 얼굴 감지, 얼굴 흐리기, 인코딩으로 작업을 분할했습니다. 파이프라인의 속도를 개선하려면 딥 러닝 기술을 사용할 수 있습니다.

디코딩 및 인코딩 설명

디코딩과 인코딩은 어떻게 작동할까요? 두 가지 방법으로 이러한 프로세스를 완료할 수 있습니다. 소프트웨어와 하드웨어입니다.

하드웨어 가속의 개념에 이미 익숙할 것입니다. 최신 NVIDIA 그래픽 카드와 CUDA 코어에 설치된 디코더와 인코더 덕분에 이 프로세스가 가능합니다.

디코딩 및 인코딩을 위한 하드웨어 가속에 대한 인기 있는 옵션은 다음과 같습니다.

  • CUDA 지원으로 OpenCV 컴파일: OpenCV를 CUDA로 컴파일하면 디코딩과 OpenCV를 사용하는 파이프라인 계산이 최적화됩니다. 그러나 Python 래퍼는 이를 지원하지 않으므로 C++로 작성해야 합니다. 그러나 디코딩과 GPU를 사용하는 숫자 계산이 필요한 상황에서는 여전히 좋은 선택입니다.
  • FFmpeg 또는 GStreamer를 NVDEC/NVENC 코덱 지원으로 컴파일: 다른 옵션은 FFmpeg 또는 GStreamer의 사용자 지정 설치에 포함된 내장 NVIDIA 디코더와 인코더를 사용하는 것입니다. 그러나 FFmpeg를 사용하는 것이 좋습니다. 유지 보수가 적게 필요하기 때문입니다. 또한 대부분의 라이브러리는 FFmpeg로 구동되므로 라이브러리의 성능을 향상시키는 데 도움이 됩니다.
  • NVIDIA 비디오 처리 프레임워크 사용: 마지막 옵션은 Python 래퍼를 사용하여 프레임을 직접 GPU의 PyTorch 텐서로 디코딩하는 것입니다. 이 옵션은 CPU에서 GPU로의 추가 복사를 제거합니다.

얼굴 감지 및 흐리기

객체 감지 모델(SSD 또는 RetinaFace)은 얼굴 감지를 완료하는 데 인기 있는 옵션입니다. 이러한 솔루션은 프레임에서 인간의 얼굴을 찾는 데 사용됩니다. 우리의 경험에 따르면, 우리는 Caffe Face 트래킹과 TensorFlow 객체 감지 모델을 선호합니다. 두 모델 모두 최고의 결과를 제공했기 때문입니다. 또한 두 모델은 OpenCV 라이브러리의 DNN 모듈을 사용하여 사용할 수 있습니다.

얼굴이 감지된 후에는 Python 및 OpenCV 기반 시스템이 바운딩 박스와 감지 신뢰도를 표시합니다. 최종적으로 흐리기 알고리즘이 자르기된 영역에 적용됩니다.

실시간 비디오 처리 소프트웨어를 구축하는 방법

비디오 처리, 이를 구동하는 코덱, 하드웨어 및 소프트웨어는 기술적으로 복잡합니다.

그러나 이러한 도구를 사용하여 자신의 실시간 비디오 처리 소프트웨어를 구축할 수 있습니다.

여기에는 다음 단계가 포함됩니다:

  1. 필요한 작업을 완료하기 위해 사전 훈련된 신경망을 조정하기 시작합니다.
  2. 비디오 처리를 처리하고 필요에 따라 확장하는 클라우드 인프라를 구성합니다.
  3. 프로세스를 압축하고 모바일 애플리케이션, 관리자 패널 및 웹 패널과 같은 특정 사용 사례를 통합하기 위해 소프트웨어 레이어를 구축합니다.

사전 훈련된 신경망과 단순한 애플리케이션 레이어를 사용하여 비슷한 비디오 처리 소프트웨어의 MVP를 개발하는 데 최대 4개월이 걸릴 수 있습니다. 그러나 범위와 타임라인은 각 프로젝트의 세부 정보에 따라 다릅니다. 대부분의 경우, 프로젝트의 세부 정보를 탐색하고 최적의 흐름을 찾기 위해 Proof of Concept 개발부터 시작하는 것이 좋습니다.

Maksym은 데이터 과학 및 기계 학습에서 새로운 통찰력과 경험을 얻는 데 관심이 있습니다. 그는 특히 Deep Learning 기반 기술과 비즈니스 사용 사례에 대한 적용에 관심이 있습니다.