스크립트
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다음 영상에서 뵙겠습니다.