본문 바로가기

Computer Vision + Python/산업 응용 & 비즈니스활용 (전문가)

실전 Python 산업용 비전: 공정 라인 결함 검사(Auto-Inspection) 시스템 구축과 '미세 결함' 탐지 노하우

1. 들어가며: 왜 연구실의 알고리즘은 공장 현장에서 멈출까?

많은 개발자가 Python과 OpenCV를 활용해 결함 검사 시스템을 구축하려 합니다. 하지만 깨끗한 샘플 제품으로 만든 모델을 실제 공정 라인에 올리는 순간, 대부분 실패를 맛보게 됩니다.

공장 현장에는 **카메라의 미세한 진동, 전등 깜빡임(Flicker)으로 인한 조명 변화, 그리고 수만 분의 일 확률로 발생하는 '결함 데이터 부족'**이라는 거대한 장벽이 있기 때문입니다. 이번 포스팅에서는 단순한 튜토리얼을 넘어, 제가 실제 산업 현장에서 겪었던 시행착오와 이를 해결하기 위해 적용한 '강인한 비전 시스템(Robust Vision System)' 구축 전략을 공유합니다.

2. 하드웨어 구성과 '산업용 데이터'의 특수성

성공적인 검사 시스템은 코드 한 줄보다 카메라와 조명 설치에서 결정됩니다.

  • 하드웨어 구성: 고속 촬영을 위한 GigE 산업용 카메라와 균일한 광량을 제공하는 돔(Dome) 또는 링(Ring) 조명을 사용했습니다.
  • 데이터의 한계: 공정은 99.9% 정상 제품만 생산합니다. 즉, '불량 이미지'가 턱없이 부족한 데이터 불균형(Data Imbalance) 문제가 발생합니다.

산업용 비전 검사 시스템의 구성도
(▲ 그림 1. 실제 산업용 비전 검사 시스템의 구성도. 일정한 조명과 고정된 카메라 각도가 정밀도의 핵심이다.)

저는 이 문제를 해결하기 위해 불량 데이터를 억지로 찾는 대신, 정상 데이터만을 학습하여 비정상(Anomaly)을 찾아내는 '이상 탐지(Anomaly Detection)' 기법을 도입했습니다.

3. 핵심 기술 구현: 차영상(Difference)에서 이상 탐지(Anomaly)까지

전통적인 방식과 최신 딥러닝 방식을 결합하여 검출 정밀도를 높였습니다.

  1. 정밀 정렬(Image Alignment): 제품이 컨베이어 벨트 위에서 미세하게 틀어져 들어올 수 있습니다. 이를 해결하기 위해 cv2.matchTemplate이나 특징점 매칭을 사용하여 기준 이미지와 입력 이미지를 픽셀 단위로 정렬합니다.
  2. 모폴로지 연산(Morphological Ops): 미세한 노이즈를 제거하고 결함의 후보 영역을 강조하기 위해 열림(Opening), 닫힘(Closing) 연산을 적용합니다.
  3. 딥러닝 기반 이상 탐지: 정상 이미지의 특징 분포를 학습시킨 후, 이 분포에서 크게 벗어난 영역을 결함으로 판단하는 알고리즘(예: PatchCore)을 활용했습니다.

기준 영상과 검사 영상의 차이(Difference)를 분석하여 결함 부위를 추출하는 전처리 과정
(▲ 그림 2. 기준 영상과 검사 영상의 차이(Difference)를 분석하여 결함 부위를 추출하는 전처리 과정)

4. 실전 트러블슈팅: 조명 변화와 진동 극복 노하우

실제 현장에서 가장 골치 아픈 문제는 '환경 변화'입니다.

  • 문제: 공장 창문으로 들어오는 햇빛의 각도에 따라 배경 밝기가 변하여 오탐이 발생함.
  • 해결책: Python 코드에서 **적응형 임계값(Adaptive Thresholding)**과 **히스토그램 평활화(CLAHE)**를 결합하여 조명 변화를 소프트웨어적으로 상쇄했습니다. 또한, 카메라 셔터 스피드를 극도로 높이고 스트로보 제어기(Strobe Controller)를 연동하여 외부 빛의 간섭을 차단했습니다.

5. 최종 구현 결과 및 성능 평가

최종 구현된 시스템은 금속 부품 표면의 미세한 스크래치와 찍힘을 실시간으로 감지합니다.

미세 스크래치를 붉은색 마스크로 정밀하게 검출한 결과 화면
(▲ 그림 3. 최종 시스템이 금속 부품의 미세 스크래치를 붉은색 마스크로 정밀하게 검출한 결과 화면)

  • 검사 속도: 프레임당 약 15ms (초당 60개 제품 검사 가능)
  • 정확도: 미세 결함 기준 96% 이상의 탐지율 달성
  • 터미널 출력: Defect Detected: Scratch | Area: 42px | Decision: REJECT와 같이 실시간 판단 결과를 생성하여 PLC(자동 제어 장치)로 전송합니다.

6. 마치며: 산업용 비전의 미래, 엣지 AI(Edge AI)

이번 프로젝트를 통해 깨달은 것은, 산업용 비전은 단순히 '보는 것'이 아니라 **'신뢰성(Reliability)'**의 문제라는 것입니다. 단 하나의 불량도 놓쳐서는 안 되며, 동시에 정상 제품을 불량으로 오인하여 공정을 멈추게 해서도 안 됩니다.

현재 시스템은 고성능 워크스테이션에서 작동하지만, 향후에는 NVIDIA Jetson과 같은 소형 엣지 장비에 모델을 최적화하여 탑재(TensorRT 활용)함으로써, 별도의 서버 없이 카메라 단에서 즉시 불량을 선별하는 지능형 센서 시스템으로 발전시켜 나갈 계획입니다.