OpenCV 5 출시 - 2018년 이후 가장 큰 업데이트 (직접 테스트해 봄)

BBetter Stack
컴퓨터/소프트웨어사진/예술AI/미래기술

스크립트

00:00:00OpenCV는 다들 아시죠? 이미지 크기 조정, 객체 탐지 등
00:00:07온갖 컴퓨터 비전 작업을 위해 모두가 사용해 온 최고의 라이브러리입니다.
00:00:13그런데 2018년 이후 처음으로 대규모 업데이트가 있었습니다. 이건 아주 큰 변화인데요.
00:00:21OpenCV 5에는 YOLO를 실행할 수 있는 새로운 딥러닝 엔진이 탑재되었습니다.
00:00:27Stable Diffusion 스타일의 인페인팅도 가능하고, 비전 언어 모델 전체를
00:00:35PyTorch나 ONNX 런타임 같은 외부 도구 없이 완전히 자체적으로 실행할 수 있습니다.
00:00:41오늘 영상에서는 OpenCV 5의 새로운 기능들을 살펴보고, 제 컴퓨터에서 직접
00:00:47멋진 데모들을 실행하며 테스트해 보겠습니다. 정말 재밌을 거예요. 바로 시작해 보죠.
00:00:57먼저, 왜 이 업데이트가 대단한지 설명해 드릴게요. OpenCV는 어디에나 있습니다.
00:01:05GitHub 스타가 86,000개가 넘고, 하루 설치 건수만 백만 건이 넘죠.
00:01:11지난 20년간 로봇 공학, AR, 의료 공학, 산업 검사 등 컴퓨터 비전이 필요한
00:01:17모든 소프트웨어의 기반이 되어 왔습니다. 지난 8년간은 계속 버전 4 라인만 사용해 왔죠.
00:01:24그래서 이번 메이저 버전 업데이트는 정말 큰 의미가 있습니다. 가장 핵심적인 기능은
00:01:32신경망을 실행하는 DNN 모듈의 완전한 재작성입니다. 가장 주목해야 할 숫자가 하나 있습니다.
00:01:38OpenCV 4의 DNN 엔진은 ONNX 연산자의 약 22%만 지원했습니다. ONNX는 모델을 훈련한
00:01:47프레임워크가 아닌 다른 곳에서 실행하기 위해 내보내는 표준 포맷인데요.
00:01:5322%라는 낮은 지원율 때문에 최신 모델을 가져와 로드하려고 하면
00:02:01지원되지 않는 연산자 때문에 막히는 경우가 많았습니다. 하지만 OpenCV 5는 이 비율을
00:02:0880%까지 끌어올렸습니다. 이제 대부분의 모델을 별도의 설정 없이 실행할 수 있죠.
00:02:15이렇게 비약적으로 발전한 이유는 엔진을 완전히 다시 만들었기 때문입니다. 기존 엔진은
00:02:22레이어별로 네트워크를 처리했지만, 새 엔진은 타입 기반의 연산 그래프를 기반으로 합니다.
00:02:29전체 네트워크를 그래프로 먼저 파악한 뒤, 실행 전에 형상 추론, 상수 폴딩, 연산자 융합을 거칩니다.
00:02:36쉽게 말해 실행 전에 모델 전체를 이해하기 때문에 동적 형상이나 현대적인
00:02:42트랜스포머 아키텍처도 처리할 수 있게 된 거죠. 정말 인상적인 점은 여기서부터입니다.
00:02:48호환성만 좋아진 게 아니라 속도도 매우 빠릅니다. OpenCV가 자체 엔진을 마이크로소프트의
00:02:56ONNX 런타임과 벤치마크했는데, CPU 환경에서 실제 모델들로 테스트했을 때
00:03:04동등하거나 더 빠른 성능을 보였습니다. YOLO v8보다 11.5%, OWL v2보다 37%, X-Feat보다 30% 빨랐죠.
00:03:15물론 이건 OpenCV의 자체 발표 수치이니 참고만 하시고 직접 벤치마크해 보시기 바랍니다.
00:03:22하지만 이 수치가 사실이라면 정말 대단한 일이죠. 이 외에도 새로운 기능들이 많습니다.
00:03:27FP16 및 BF16 데이터 타입 지원, CVMAT에서 실제 n차원 배열 지원,
00:03:36Python 우선 코어 적용, 레거시 C API 제거 및 C++17 기준 채택 등이 있습니다.
00:03:44먼저 알아두셔야 할 중요한 사실 하나는, 새 엔진이 현재는 CPU 전용이라는 점입니다.
00:03:51GPU 지원은 버전 5 업데이트 주기에 맞춰 나중에 추가될 예정입니다. 지금 당장 GPU
00:03:58추론이 필요하다면 CUDA와 OpenVINO를 지원하는 기존 엔진을 사용해야 합니다.
00:04:03그래서 제가 보여드릴 예제들은 모두 CPU에서 실행됩니다. OpenCV 5의 최대 강점인
00:04:10새 DNN 엔진 성능을 예제들을 통해 직접 확인해 보시죠.
00:04:16먼저 재미있는 예제부터 시작할게요. OpenCV에는 흑백 이미지를 컬러로 바꾸는
00:04:22색채화 예제가 있습니다. 참고로 요즘 '스파이더 느와르'를 보고 있는데,
00:04:28상당히 멋진 쇼죠. 이 쇼도 흑백이라 여기서 한 장면을 가져와 컬러로
00:04:34바꿔보면 재미있겠다는 생각이 들었습니다. 이 이미지를 가져와서
00:04:39새 DNN 엔진을 사용하는 색채화 예제를 실행해 보겠습니다. 보세요, 정말 빠르죠.
00:04:47결과물은 완벽하지 않습니다. 하늘은 어느 정도 맞췄지만,
00:04:53일부 영역은 제대로 색을 입히지 못했네요. 하지만 이건 구형 색채화 모델을
00:04:59사용해서 그렇고, 모델이 중요한 게 아니라 엔진이 중요한 겁니다.
00:05:05제가 여기서 보여드리고 싶었던 건, 이 결과물이 추가 의존성 없이 순수하게
00:05:11OpenCV 신경망만으로 만들어졌다는 점입니다. 이제 객체 탐지 예제를 테스트해 보죠.
00:05:17이번에도 스파이더 느와르 영상을 클립으로 가져와서 성능을 확인해 보겠습니다.
00:05:24스크립트를 실행하면, 보시다시피 실시간으로 객체 탐지가 이루어집니다.
00:05:29새 DNN 엔진을 통해 CPU에서 직접 실행되는 거죠. 앞서 언급한 벤치마크
00:05:36기억하시나요? 바로 이런 모델에서 OpenCV가 ONNX 런타임보다 실제로 더 빠릅니다.
00:05:43편의성을 위해 성능을 희생하는 게 아니라, 이 시나리오에서는 두 가지 모두를 얻는 셈이죠.
00:05:49PyTorch를 설치하거나 별도의 런타임도 필요 없습니다. GPU도 필요 없고요.
00:05:56모두 순수 OpenCV에서 돌아갑니다. 이제 LDM 인페인팅 예제를 시도해 보죠.
00:06:03LDM은 Latent Diffusion의 약자입니다. OpenCV 5에는 이 기능이 포함되어 있죠.
00:06:11아까 사용했던 스파이더 느와르 이미지를 다시 로드해 보겠습니다.
00:06:16이미지에서 제거하고 싶은 부분, 사람이나 객체 등 무엇이든 칠하면
00:06:23확산 모델이 빈 공간을 채워줍니다. 기존 OpenCV 인페인팅은 한 번의 순방향 패스로 즉시
00:06:31결과가 나오지만, LDM은 확산 방식을 사용하여 반복적입니다.
00:06:39노이즈에서 시작해 단계별로 노이즈를 제거하기 때문에 모델을 여러 번 반복해서 실행합니다.
00:06:45게다가 CPU에서 실행 중이라 더 느린데요, 확산 작업은 본래 GPU에 적합하기 때문입니다.
00:06:51그럼에도 몇 단계만 거쳐서 얻은 결과는 생각보다 괜찮습니다.
00:06:58완벽하진 않아서 확산 아티팩트가 일부 보이지만,
00:07:05단계 수를 늘리거나 다른 모델을 사용하면 해결할 수 있습니다.
00:07:11마지막으로 VLM 추론 예제를 보여드릴게요. 비전 언어 모델(VLM)이나 LLM을
00:07:17OpenCV 안에서 직접 사용하여 이미지 캡션 등을 수행하는 방법입니다.
00:07:25여기서는 Pali Gemma 모델을 사용하여 스파이더 느와르 이미지에 대한 캡션을 생성해 보았습니다.
00:07:32보시다시피 엄청나게 느리고 결과물도 별로입니다. 저라면 이 작업에 OpenCV를 절대 쓰지 않을 겁니다.
00:07:39이미지 캡션에는 훨씬 나은 대안들이 많거든요.
00:07:45예를 들어, 120억 파라미터의 Gemma 4 모델을 ONNX에서 실행하면 훨씬 더 빠릅니다.
00:07:53지난 12B Gemma 4 모델 관련 영상에서 다뤘으니 확인해 보시길 바랍니다.
00:07:58하지만 이 데모의 목적은 OpenCV가 이제 LLM을 실행하는 데 필요한 토크나이저,
00:08:04어텐션 레이어, KV 캐시 등을 모두 갖췄다는 것을 보여주는 것입니다.
00:08:11별도의 런타임 없이도 작동한다는 사실은 이 라이브러리가 나아갈 방향을 보여줍니다.
00:08:18이제 비전과 언어 기능을 한 곳에서 처리하게 될 겁니다. GPU 업데이트까지
00:08:24배포되면 더 좋아지겠죠. 이게 바로 OpenCV 5의 핵심입니다.
00:08:29추가 의존성 없이 CPU에서 모든 것을 실행할 수 있는 하나의 라이브러리인 셈이죠.
00:08:37색채화, 실시간 객체 탐지, 확산 기반 인페인팅, 이미지 캡션 등을 수행해 보았습니다.
00:08:43물론 모델 훈련은 여전히 PyTorch 같은 도구로 해야 합니다.
00:08:50OpenCV는 모델 훈련용이 아니니까요. 하지만 모델을 실행하는 단계에서는
00:08:56OpenCV 5는 훌륭한 선택이며, 한 달 전과 비교해도 엄청난 도약을 이뤄냈습니다.
00:09:03새로운 OpenCV 5에 대해 어떻게 생각하시나요? 여러분의 프로젝트에 사용하실 계획인가요?
00:09:09댓글로 알려주세요. 이런 기술적인 분석 영상이 마음에 드셨다면
00:09:14좋아요 버튼을 눌러주세요.
00:09:19채널 구독도 잊지 마세요. 지금까지 BetterStack의 Andrus였습니다.
00:09:24다음 영상에서 뵙겠습니다.

핵심 요약

OpenCV 5는 재작성된 DNN 엔진을 통해 외부 의존성 없이 CPU 환경에서 최신 신경망 모델을 더 빠르고 폭넓게 실행할 수 있는 대규모 업데이트를 단행했다.

하이라이트

  • OpenCV 5는 2018년 이후 첫 메이저 업데이트로, DNN 모듈을 완전히 재작성하여 ONNX 연산자 지원율을 22%에서 80%로 대폭 향상했다.

  • 새로운 DNN 엔진은 타입 기반 연산 그래프를 도입하여 동적 형상 및 트랜스포머 아키텍처 처리를 지원한다.

  • CPU 환경에서 YOLO v8은 11.5%, OWL v2는 37%, X-Feat는 30% 더 빠른 추론 속도를 기록했다.

  • 별도의 외부 도구 없이 OpenCV 5 단일 라이브러리만으로 색채화, 실시간 객체 탐지, LDM 기반 인페인팅 실행이 가능하다.

  • 현재 새 엔진은 CPU 전용으로 제공되며, GPU 지원은 향후 업데이트 주기에 맞춰 추가될 예정이다.

타임라인

OpenCV 5 DNN 엔진의 구조적 변화

  • DNN 엔진 재작성으로 ONNX 연산자 호환성을 80%까지 확보했다.
  • 기존 레이어 단위 처리 방식에서 타입 기반 연산 그래프 방식으로 전환했다.
  • 모델 실행 전 형상 추론 및 상수 폴딩으로 최적화를 수행한다.

OpenCV 5는 지난 20년간의 버전 4 체제에서 벗어난 첫 메이저 업데이트다. 핵심은 네트워크를 실행 전에 전체적으로 이해하고 최적화하는 새로운 그래프 기반 DNN 엔진이다. 이를 통해 그동안 지원되지 않던 다양한 최신 모델을 별도 설정 없이 즉시 로드할 수 있게 되었다.

성능 벤치마크 및 기술 사양

  • 마이크로소프트의 ONNX 런타임과 비교하여 CPU 추론 성능이 동등하거나 더 우수하다.
  • C++17 표준 채택 및 레거시 C API 제거로 코드 기반을 현대화했다.
  • 현재는 CPU 전용으로 구현되었으며 GPU 지원은 향후 예정되어 있다.

새 엔진은 기존 엔진 대비 YOLO v8과 같은 모델에서 유의미한 속도 향상을 입증했다. FP16 및 BF16 데이터 타입을 지원하며 Python 우선 코어 적용을 통해 사용 편의성을 높였다. GPU를 활용한 추론이 반드시 필요한 경우, 아직은 기존의 CUDA나 OpenVINO 연동 엔진을 병행해야 한다.

주요 기능 데모 및 활용 범위

  • 외부 의존성 없이 순수 OpenCV만으로 색채화 및 실시간 객체 탐지를 수행한다.
  • 확산 모델 기반의 LDM 인페인팅 기능을 라이브러리에 내장했다.
  • 토크나이저와 어텐션 레이어 지원으로 VLM 추론의 기술적 가능성을 제시했다.

실제 테스트 결과, OpenCV 5는 추가 라이브러리 설치 없이 복잡한 비전 작업을 CPU에서 바로 처리했다. 특히 LDM 인페인팅과 같은 반복적 확산 모델도 안정적으로 실행 가능함을 확인했다. 비록 모델 훈련은 여전히 전문 도구를 사용해야 하지만, 모델 배포와 실행 단계에서는 단일 라이브러리로 모든 비전 작업을 통합할 수 있는 환경이 조성되었다.

커뮤니티 글

모든 글 보기