1. 도입: 고가의 3D 센서를 소프트웨어로 대체하려는 시도
머신비전 설비나 로봇 비전 시스템을 설계할 때 가장 큰 고민거리 중 하나는 '공간의 깊이(Depth)와 거리'를 어떻게 측정할 것인가 하는 점입니다. 가장 확실하고 정밀한 방법은 라이다(LiDAR) 센서나 스테레오(Stereo) 카메라, 혹은 적외선 기반의 뎁스 카메라(Intel RealSense 등)를 하드웨어적으로 부착하는 것입니다. 하지만 이러한 장비들은 단가가 매우 높고, 산업 현장의 열악한 환경(진동, 분진)에서는 내구성을 담보하기 어려울 때가 많습니다.
엔지니어로서 비용(Cost)을 절감하면서도 목적을 달성하기 위해 눈을 돌린 곳은 파이썬(Python) 기반의 딥러닝 기술이었습니다. 바로 평범한 2D 단일 카메라(Monocular Camera) 영상만으로 이미지의 깊이를 추정해 내는 'Depth Estimation' 모델의 도입이었습니다. 최근 MiDaS(Monocular Depth Estimation in PyTorch)와 같은 훌륭한 오픈소스 모델들이 쏟아져 나오면서, 고가의 하드웨어 없이 소프트웨어 알고리즘만으로 공간을 3D로 인지할 수 있다는 가능성에 큰 매력을 느꼈습니다.
2. 튜토리얼의 환상: 완벽에 가까운 연구실 테스트
사무실에서 웹캠을 연결하고 파이썬 환경에 모델을 올린 뒤 테스트를 진행했습니다. 결과는 놀라웠습니다. 카메라 앞에 서 있는 사람의 윤곽은 물론이고, 책상 위의 커피잔, 뒤편의 모니터와 벽까지 거리에 따라 색상이 다르게 표현되는 뎁스 맵(Depth Map)이 실시간으로 부드럽게 그려졌습니다.
가까운 물체는 밝게(흰색), 멀리 있는 배경은 어둡게(검은색) 표현되는 픽셀 데이터를 확인하며, 이 정도의 구분 능력이면 컨베이어 벨트 위를 지나가는 박스의 크기를 추정하거나, 로봇 팔이 물체에 접근할 때 충돌 방지용 센서로 충분히 활용할 수 있을 것이라 확신했습니다. 코드 몇 줄과 일반 웹캠 하나로 수백만 원짜리 장비를 대체하는 순간이 온 것 같았습니다.

3. 현장의 배신: 알고리즘은 '진짜 거리'를 모른다
그러나 이 시스템을 실제 조명이 시시각각 변하고 텍스처(질감)가 일정한 산업 설비 현장에 투입하자, 연구실에서의 환상은 무참히 깨졌습니다. 뎁스 맵은 요동쳤고, 거리를 추정하는 픽셀 값은 신뢰할 수 없는 수준으로 널뛰기 시작했습니다. 가장 큰 문제는 딥러닝 모델이 거리를 측정하는 '방식 자체'에 있었습니다.

3-1. 그림자와 조명 변화에 취약한 구조
라이다 센서처럼 빛을 쏴서 돌아오는 시간(Time of Flight)을 물리적으로 측정하는 것이 아니라, AI는 단지 학습된 데이터베이스를 바탕으로 2D 이미지 속의 '맥락(Context)'을 보고 거리를 유추할 뿐이었습니다. 즉, 크기가 작거나 그림자가 져서 어두운 부분은 무조건 '멀리 있다'고 착각하는 현상이 발생했습니다. 공장의 강한 조명 때문에 물체 표면에 그림자가 짙게 깔리면, 평평한 바닥임에도 불구하고 AI는 그곳에 깊은 웅덩이가 파여 있다고 인식해 버렸습니다.
3-2. 질감(Texture)이 없는 표면에서의 붕괴
더욱 치명적인 것은 단색으로 칠해진 공장 벽면이나, 반사율이 일정한 무늬 없는 금속판(Sheet Metal) 앞에서의 인식률이었습니다. 카메라 입장에서는 원근감을 유추할 수 있는 윤곽선이나 패턴이 존재하지 않으므로, 거리를 계산하지 못하고 화면 전체의 뎁스 값이 뭉개지는 현상이 나타났습니다.
4. 결론: 하드웨어의 물리적 한계를 소프트웨어가 100% 덮을 수는 없다
단일 카메라 기반의 Depth Estimation 기술은 자율주행 자동차가 주변 환경을 대략적으로 인지하거나, 스마트폰 앱에서 인물 사진의 배경을 블러(Blur) 처리하는 등의 '정성적인' 목적에는 매우 훌륭한 기술입니다. 하지만 오차 범위 mm 단위를 다투고, 조명 조건이 극단적인 산업 현장에서 정밀한 제어를 위한 센서로 단독 사용하기에는 아직 그 뼈아픈 한계가 명확했습니다.
결국 현장에 이 기술을 적용하기 위해서는 AI가 내뱉는 날것의 데이터(Raw Depth Map)를 그대로 믿어서는 안 되며, 튀는 값을 잡아주는 철저한 소프트웨어적 후처리(Post-processing)와 데이터 필터링 과정이 필수적이라는 교훈을 얻었습니다.
다음 포스팅에서는 이처럼 미친 듯이 요동치고 텍스처가 날아가는 뎁스 데이터를 현장에서 어떻게든 써먹기 위해, 파이썬과 OpenCV를 동원하여 프레임 간의 노이즈를 억제하고 데이터를 스무딩(Smoothing)했던 고군분투 최적화 과정을 다루어 보겠습니다.