[AI 검사, 현장의 문제들 (6)] 품종이 바뀔 때마다 사람이 광학계를 맞추는 문제
앞의 다섯 편은 모델과 데이터에 관한 것이었습니다. 이 글은 그 앞단을 다룹니다. 모델이 아무리 좋아도 촬영 위치가 매번 달라지면 검사 성능은 나오지 않습니다.
2026.09.03
- 기술·제품
검사 장비를 새 품종에 맞추는 작업을 티칭이라고 합니다. 카메라와 프로파일러가 제품의 어느 지점을 어느 거리에서 볼지 좌표를 잡는 일이고, 대부분의 현장에서 사람이 합니다. 작업자가 화면을 보며 축을 조금씩 움직여 맞추고 저장합니다.
품종이 열 개쯤이면 감당됩니다. 문제는 그다음입니다. 품종이 추가될 때마다 엔지니어가 붙어야 하고, 작업자와 날짜에 따라 결과가 달라지며, 티칭하는 동안 라인이 멈춥니다. 품종이 수천 종 규모가 되면 이 방식은 성립하지 않습니다. 필요한 것은 품종별 세팅을 더 빠르게 하는 방법이 아니라, 품종에 의존하지 않는 골격을 만드는 것입니다.
검사 존 앞에서 끝냅니다
저희가 첫 번째로 바꾼 것은 티칭을 수행하는 위치입니다.
검사 존 안에서 광학계를 맞추면 그 시간만큼 라인이 작동하지 않습니다. 그래서 검사 라인 앞에 등록 존을 따로 두고, 제품이 그곳을 지나는 동안 시스템이 형상을 추정해 검사 광학계의 위치를 미리 계산합니다. 검사 파트는 이미 정렬된 상태에서 시작하므로, 티칭 시간이 검사 takt에서 차감되지 않습니다.
세 종류의 센서를 단계적으로 겹칩니다
등록 존에서는 측정 차원이 다른 세 센서를 순서대로 씁니다. 순서에는 이유가 있습니다. 앞 단계의 출력이 다음 단계의 정확도를 결정하기 때문입니다.
1D 단계에서는 변위 센서가 단면을 스캔해 1차원 프로파일을 얻고, 시스템이 여기서 높이 방향의 특징점을 산출합니다. 동시에 시스템이 그 값을 기준 규격값과 비교해 1차 검증도 수행합니다. 형상이 규격에서 크게 벗어나면 시스템이 이 단계에서 걸러내고, 뒤따르는 정합과 검사를 통째로 건너뜁니다. 명백한 불량에 광학계 정합 시간을 쓰지 않기 위한 장치입니다.
2D 단계에서는 카메라가 위에서 촬영해 외곽 경계를 검출하고 평면 좌표를 채웁니다. 여기서 1D의 결과가 다시 쓰입니다. 카메라는 고정된 높이에 있으므로 제품이 높으면 작업 거리가 짧아지고, 그러면 픽셀 하나가 담는 실제 거리가 달라집니다. 같은 픽셀 수를 세어도 제품 높이에 따라 mm 환산값이 어긋난다는 뜻입니다. 그래서 시스템은 1D에서 얻은 높이로 분해능을 먼저 보정한 뒤 평면 치수를 계산합니다. 순서를 바꾸면 이 보정이 불가능합니다.
3D 단계에서는 시스템이 앞의 두 결과로 프로파일러의 초기 위치를 계산해 투입합니다. 그리고 위치를 미세하게 바꿔 가며 몇 차례 측정한 뒤, 대상이 측정 범위 안에 제대로 들어왔는지를 판정합니다.
세 단계가 공통으로 전제하는 것이 있습니다. 시스템이 무엇을 특징점으로 잡는지가 먼저 정의되어야 합니다. 이 정의는 품종군마다 새로 잡습니다. 곡면 대칭형 부품과 계단형 가공품은 봐야 할 지점이 다르고, 개수도 이름도 다릅니다. 하지만 찾아내는 절차는 같습니다.
![[그림1] 제품 단면이 다르더라도 특징점을 찾는 절차는 비슷함.png](/uploads/d0d57041-1bda-4990-8701-3488582fed7a.png)
[그림 1] 제품 단면이 다르더라도 특징점을 찾는 절차는 비슷함
어느 대상이든 시스템은 먼저 정점을 찾고, 거기서 바깥과 안쪽으로 훑어 내려가며 기울기가 꺾이는 지점을 어깨선과 곡률 변곡점으로 판정하고, 그 좌표로 폭을 산출합니다. 품종군이 바뀌면 정의 파일을 새로 쓰지만 알고리즘은 그대로 재사용합니다.
규칙 기반과 딥러닝을 어디에 나눠 쓰는가
같은 시스템 안에서도 단계에 따라 방법을 달리 씁니다.
1D는 규칙 기반입니다. 단면 프로파일은 물리량이 명확하고, 여기서 가장 중요한 것은 정확도보다 재현성입니다. 딥러닝으로 특징점을 찍으면 값이 틀렸을 때 왜 그 위치가 나왔는지 추적하기 어렵고, 현장에서 원인을 찾지 못하면 대응할 수 없습니다. 조건과 임계로 기술된 규칙은 로그만 보면 어느 조건에서 걸렸는지 알 수 있습니다.
2D는 딥러닝입니다. 탑뷰 영상은 컨베이어 롤러와 반사광, 조명 편차가 함께 잡혀서 배경이 복잡합니다. 밝기 임계로 외곽을 따는 방식은 조명이 조금만 바뀌어도 무너집니다. 특히 복잡한 경계를 찾는 작업에서는 세그멘테이션 모델이 훨씬 강건했습니다.
다만 딥러닝 쪽도 그대로 쓰지는 않습니다. 모델이 제품의 일부 영역을 배경으로 오인하는 경우가 있어서, 시스템이 형태학 연산으로 구멍을 메우고 경계를 정리한 뒤에 치수를 계산합니다. 그리고 시스템은 한 방향에서만 재지 않습니다. 여러 각도로 측정선을 그은 뒤 상하위 극단값을 잘라내고 나머지를 평균합니다. 한 군데에서 검출이 어긋나도 최종 치수가 흔들리지 않게 하기 위해서입니다.
마지막으로 시스템은 이렇게 얻은 측정값을 품종 기준 규격값과 비교합니다. 두 값의 차이가 어느 정도냐에 따라 측정값을 그대로 쓸지 규격값 쪽으로 끌어당길지를 다르게 정합니다. 측정에 실패한 값이 그대로 정합에 들어가는 것을 막는 장치입니다.
신호 처리에서 갈린 판단 두 가지
앞에서 1D는 규칙 기반이라고 했는데, 그 규칙을 어떻게 세우느냐에서 결과가 크게 갈렸습니다.
원시 프로파일을 그대로 쓸 수는 없습니다. 컨베이어에 미세한 기울기가 있고, 표면 텍스처와 먼지와 빛 번짐이 스파이크로 들어옵니다.
![[그림2] 전처리 전후 프로파일.png](/uploads/c48e9071-5b21-4f13-9993-b0fc0e26b466.png)
[그림 2] 전처리 전후 프로파일
첫 번째 판단은 바닥면 처리입니다. 과거에는 바닥값을 상수로 박아 뒀는데, 규격이 바뀌거나 컨베이어 틸트가 생기면 그대로 틀어졌습니다. 그래서 알고리즘이 바닥면 기울기를 회귀로 구해 각도로 치환하고, 좌표계 전체를 회전시켜 수평으로 맞춘 뒤에 특징점을 찾습니다. 제품이 비스듬히 놓여도 같은 결과가 나옵니다.
두 번째는 특징점 판정 기준입니다. 흔한 방법은 상대 임계치입니다. 그 샘플에서 관측된 최대 기울기의 몇 퍼센트처럼 잡는 방식인데, 제품 크기와 기울기가 샘플마다 다르면 기준 자체가 매번 달라집니다. 같은 알고리즘인데도 좌우 결과가 어긋나고, 샘플이 바뀌면 값이 흔들립니다.
그래서 저희는 물리적 절대 기준으로 바꿨습니다. 알고리즘은 순간 기울기가 실제로 일정 값 이상이고 동시에 낙폭이 일정 이상일 때만 특징점으로 판정합니다. 2차 미분으로 변곡점을 찾는 방법도 검토했지만, 센서의 개형에 따라 결과가 달라져서 제외했습니다.
축을 하나 움직이면 화면은 두 축이 움직입니다
형상을 알아내는 것보다 어려운 것은 광학계를 그 위치로 보내는 쪽입니다.
센서가 완벽한 직교로 설치되어 있지 않거나 렌즈 광학 특성이 개입하면, 기계 X축 모터만 움직여도 센서 화면에서는 프로파일이 좌우뿐 아니라 상하로도 이동합니다. 화면 좌표와 기계 좌표가 1:1로 대응하지 않고 서로 간섭합니다.
사람이 맞출 때는 이 간섭을 감으로 상쇄합니다. X를 밀고 어긋난 Z를 당기고 그러다 다시 X가 틀어집니다. 숙련자도 시간이 걸리고 도달점이 사람마다 다릅니다. 자동화에서는 쓸 수 없는 방식입니다.
대신 시스템이 간섭을 한 번 수치화합니다.
![[그림3] 민감도 행렬 산출 절차.png](/uploads/978e59b4-c7ed-4218-a724-7428ec31ca50.png)
[그림 3] 민감도 행렬 산출 절차
시스템은 기준 위치에서 축을 미세하게 이동시키며 여러 번 스캔하고, 프로파일 간 정합으로 센서 화면에서의 실제 변위를 구합니다. 기계 이동량과 센서 변위의 관계가 민감도 행렬이고, 그 역행렬을 목표 변위 벡터에 곱하면 간섭이 상쇄된 모터 제어값이 한 번에 나옵니다.
단일 행렬로는 한계가 있었습니다. FOV와 대상 곡률이 다르면 민감도도 달라져서, 센서별로 그리고 구간별로 따로 산출해야 합니다.
효과는 정확도보다 성질 쪽에 있습니다. 같은 입력에 항상 같은 결과가 나오고, 사람의 판단이 개입할 여지가 없으며, 신규 품종에도 같은 계산이 그대로 적용됩니다.
정합이 됐는지를 시스템이 알아야 합니다
자동 정합에서 놓치기 쉬운 부분이 있습니다. 위치를 옮기는 것만큼 옮긴 결과가 맞는지 확인하는 절차도 중요하다는 점입니다.
정합이 안 된 상태로 검사에 들어가면 검사 결과 자체를 신뢰할 수 없습니다. 결함이 없어서 OK가 나온 것인지, 결함이 화면 밖에 있어서 OK가 나온 것인지 구분되지 않기 때문입니다. 앞의 3D 단계에서 위치를 바꿔 가며 여러 번 측정하는 이유가 여기 있습니다. 대상이 측정 범위 안에 들어왔는지를 시스템이 스스로 판정하고, 들어오지 않았으면 역행렬로 축을 다시 보정합니다.
정해진 횟수 안에 진입에 실패하면 시스템은 그 건을 정합 실패로 표시합니다. 검사 결과를 내지 않고 별도로 분리하는 편이, 신뢰할 수 없는 판정을 정상으로 흘려보내는 것보다 낫습니다.
하지 않아도 되는 동작은 하지 않습니다
목표 위치를 알았다고 해서 대상을 화면 정중앙으로 끌고 오지는 않습니다. 축을 크게 움직이면 모터 부하와 진동이 늘고 시간도 더 듭니다.
그래서 엔지니어가 특징점이 들어와 있어야 할 구역을 미리 정의해 두고, 시스템은 대상이 그 안에 있으면 이동량을 0으로 둡니다. 벗어난 경우에만 경계까지 들어오는 최소 거리만 움직입니다.
같은 원칙이 상하 양면 검사에도 적용됩니다. 상단을 검사한 뒤 제품을 뒤집어 하단을 볼 때, 시스템은 하단 정합을 처음부터 다시 하지 않고 상단에서 계산한 결과를 재사용합니다. 상하가 대칭이라는 가정이 성립하는 품종에 한해서지만, 그만큼 takt가 줄어듭니다.
첫 적용 사례에서 확인한 것
첫 양산 적용은 다품종 타이어 라인이었습니다. 자동 정합 관점에서는 까다로운 조건이라 검증 대상으로 적절했습니다. 규격이 수천 종을 넘고, 가류 전 상태라 같은 규격이어도 개체마다 형상 편차가 생기며, 고무 표면이라 반사와 텍스처 노이즈가 심합니다.
검증에서 본 것은 절대 정확도가 아니라 재현성입니다. 같은 시료를 36도씩 돌려 가며 10개 조건에서 5회씩, 총 50건을 측정해 같은 특징점이 매번 같은 값으로 나오는지를 확인했습니다. 정합의 목적은 검사 광학계를 매번 같은 위치에 두는 것이므로, 절댓값이 조금 치우쳐 있어도 편차가 작으면 검사에는 문제가 없습니다. 핵심 특징점의 반복 편차는 고객이 요구한 정합 허용 범위 안에 들어왔습니다.
다만 폭 쪽 편차는 상대적으로 컸습니다. 단면 스캔 한 줄로는 전체 형상을 대표하기 어렵기 때문입니다. 그래서 저희는 최종 폭 값으로 모든 단면을 관찰하는 2D 쪽 결과를 사용하고, 1D의 폭은 참고값으로만 둡니다.
무엇이 재사용되고 무엇을 다시 잡는가
다른 대상으로 옮길 때 기준은 단순합니다. 제품에서 나오는 값을 쓰는 부분은 다시 잡고, 값이 어떻게 나오는지를 다루는 부분은 그대로 씁니다.
다시 정의해야 하는 것은 세 가지입니다. 특징점의 종류와 개수, 품종별 기준 규격값, 그리고 2D 검출 모델의 학습 데이터입니다. 앞의 둘은 도면과 규격서에서 나오고, 마지막은 해당 라인의 양품 이미지로 학습시킵니다.
그대로 쓰는 것은 나머지 전부입니다. 등록 존과 검사 존을 분리하는 구성, 1D와 2D와 3D를 단계적으로 겹치는 순서, 바닥면 회전 보정과 절대 기준 특징점 판정, 축 간 간섭을 역행렬로 상쇄하는 방식, 진입 판정과 최소 이동 원칙. 이 부분들은 제품이 무엇인지 알 필요가 없습니다.
그래서 단면 형상이 품종마다 달라지는 가공품, 두께나 단차를 기준으로 정합해야 하는 적층 부품, 회전 대칭이면서 규격이 여러 갈래인 부품처럼 다품종이고 정밀 정합이 필요한 검사라면 같은 골격을 쓸 수 있습니다.
여섯 편을 마치며
1편에서 다섯 개의 벽을 세웠습니다. 불량 데이터가 느리게 쌓이고, 유형별로 고르지 않고, 레이블에 오류가 섞이고, 학습에 없던 결함이 나오고, 품종이 계속 늘어난다는 것이었습니다.
다섯 편에 걸쳐 각각을 어떻게 다뤘는지 적었지만, 정작 공통점은 해법 쪽이 아니라 문제를 보는 방식에 있었습니다. 다섯 가지 모두 현장에서는 예외가 아니라 기본값입니다. 데이터는 원래 부족하고, 레이블은 원래 틀리고, 품종은 원래 늘어나고, 제품은 원래 매번 조금씩 다른 위치에 놓입니다.
이것을 예외로 두고 만든 시스템은 PoC에서 잘 돌아가다가 양산에서 멈춥니다. 반대로 기본값으로 두고 설계하면 라인을 오래 돌릴수록 나아지는 시스템이 됩니다. 저희가 여섯 편에 걸쳐 하고 싶었던 이야기입니다.
[AI검사, 현장의 문제들] 시리즈
1편. 불량 제품이 없는 상태에서 AI Inspection 시작하기
2편. 정상만 학습해서 이상을 찾을 때 막히는 지점들
3편. 지도학습과 비지도학습을 한 시스템에 같이 넣은 이유
4편. 품종 수천 종을 모델 하나로 처리하기까지
5편. 결함 데이터를 생성해서 학습에 쓸 때 지켜야 할 것
6편. 품종이 바뀔 때마다 사람이 광학계를 맞추는 문제 (현재글)


