협동로봇과 비전 AI로 품질 검사를 자동화하며 배운 것
검사 자동화 프로젝트에서 모델 정확도보다 먼저 결정해야 했던 것들. 조명, 지그, 판정 기준, 시간 예산, 그리고 검사원의 역할.

검사 자동화 이야기를 시작하면 대화는 거의 항상 모델에서 시작합니다. 어떤 모델을 쓰는지, 정확도가 몇 퍼센트인지.
2024년 8월, 협동로봇과 AI를 결합한 품질 검사 공정을 처음 구축했습니다. 그 뒤로 여러 라인에 4I-Quality를 적용하며 알게 된 것은, 프로젝트의 성패가 모델보다 훨씬 앞에서 갈린다는 사실이었습니다. 조명을 어떻게 세울지, 부품을 어떤 자세로 놓을지, 무엇을 불량이라 부를지. 이것들이 정해지지 않으면 어떤 모델을 써도 결과는 비슷하게 나쁩니다.
이 글은 그 앞단에서 반복해 마주친 문제와 우리가 내린 결정을 순서대로 정리한 것입니다. 검사 자동화를 검토 중이라면, 모델을 고르기 전에 읽어 두면 시행착오를 줄일 수 있습니다.
배경: 왜 사람이 검사하고 있었나
우리가 처음 들어간 라인은 가공 부품이 컨베이어로 흘러나오고, 검사원이 눈과 손으로 표면 결함을 골라내는 곳이었습니다. 자동화가 안 되어 있던 이유는 기술이 없어서가 아니었습니다. 세 가지가 걸려 있었습니다.
- 부품 종류가 많고 자주 바뀌어서, 종류마다 검사 장비를 세팅하는 비용이 컸습니다.
- 결함의 정의가 사람마다 조금씩 달라서, 기계에 넘길 기준이 없었습니다.
- 라인 속도가 빨라서, 검사에 쓸 수 있는 시간이 부품당 몇 초에 불과했습니다.
이 세 가지는 이후 프로젝트에서도 거의 그대로 반복됐습니다. 그래서 우리는 모델보다 이 세 가지를 먼저 풉니다.
첫 번째 결정: 조명
검사 자동화를 시작하면 대부분 모델 정확도부터 이야기합니다. 실제로는 그 전에 결정할 것이 더 많았고, 가장 오래 걸린 것은 조명이었습니다.
같은 부품이라도 조명 각도에 따라 스크래치가 보이기도, 사라지기도 합니다. 정면광은 표면 색 차이를 잘 보여주지만 얕은 스크래치를 지웁니다. 낮은 각도의 측광은 스크래치를 드러내지만 가공 자국까지 결함처럼 보이게 합니다. 우리는 결함 유형별로 어떤 조명에서 가장 잘 보이는지 표를 만들고, 필요한 경우 한 부품을 두 조명 조건에서 두 번 촬영하기로 했습니다.
카메라 선택은 그 다음이었습니다. 조명 조건이 정해지면 필요한 해상도와 노출 시간이 정해지고, 그러면 카메라와 렌즈는 거의 자동으로 좁혀집니다. 순서를 바꾸어 카메라부터 고르면, 나중에 조명 때문에 카메라를 다시 사게 됩니다.
두 번째 결정: 지그와 로봇 자세
협동로봇이 부품을 어떤 자세로 들어 올릴지에 따라 촬영 가능한 면이 정해집니다. 검사해야 할 면을 먼저 정하고 로봇 경로를 거꾸로 설계했습니다.
여기서 중요한 것은 반복 정밀도입니다. 로봇이 부품을 매번 같은 위치, 같은 각도로 가져다 놓아야 모델이 "정상"의 범위를 좁게 학습할 수 있습니다. 그리퍼와 지그는 부품 형상마다 달랐지만, 기준면을 잡는 방식은 통일했습니다. 부품 종류가 바뀔 때 그리퍼만 교체하고 프로그램은 재사용하기 위해서입니다.
세 번째 결정: 판정 기준을 문서로
"이 정도 스크래치는 양품인가"에 대한 답이 검사원마다 달랐습니다. 기준을 문서로 만들고 라벨링 규칙으로 옮기는 데 현장 분들의 도움이 컸습니다.
문서화 과정에서 배운 것이 하나 있습니다. 기준은 처음부터 완벽할 수 없고, 완벽하려고 하면 프로젝트가 시작되지 않습니다. 우리는 "이건 확실히 불량", "이건 확실히 양품", "애매함" 세 구간으로 시작했고, 애매한 구간의 사례를 모아 매주 한 번 현장과 함께 기준을 갱신했습니다.
판정 기준 문서에 들어간 항목
- 결함 유형 목록과 각 유형의 사진 예시 (양품 경계 포함)
- 유형별 허용 크기와 위치 (기능면, 외관면 구분)
- 조명 조건별 촬영 예시
- 애매한 사례의 판정 기록과 판정한 사람
- 기준 변경 이력과 변경 이유
이 세 가지가 정리된 뒤에야 모델 학습이 의미가 있었습니다.

라인 속도가 곧 요구 사항
검사 AI는 라인 속도 안에서 판정을 끝내야 합니다. 정확도가 높아도 사이클 타임을 넘기면 라인이 멈춥니다. 우리는 촬영, 추론, 판정, 로봇 동작을 하나의 사이클로 보고 시간을 배분했습니다.
| 단계 | 시간 예산 | 비고 |
|---|---|---|
| 픽업과 자세 정렬 | 로봇 경로에 따라 결정 | 그리퍼 교체 시 재측정 |
| 촬영 | 면당 수십 ms | 조명 전환 시간 포함 |
| 추론과 판정 | 수백 ms 이내 | 엣지 장비 기준 |
| 배출 | 로봇 경로에 따라 결정 | 불량은 별도 트레이 |
시간 예산을 먼저 정하니 모델 크기와 추론 장비 선택이 자연스럽게 정해졌습니다. 큰 모델을 서버에서 돌리는 대신, 작은 모델을 라인 옆 엣지 장비에서 돌리는 쪽을 택했습니다. 네트워크가 끊겨도 라인이 멈추지 않아야 하기 때문입니다.
데이터: 불량은 적고, 정상은 넘친다
학습을 시작하면 바로 부딪히는 문제가 데이터 불균형입니다. 정상 부품 사진은 하루에 수천 장이 쌓이지만, 불량은 유형별로 몇 장뿐인 경우가 많습니다.
우리는 세 가지를 같이 썼습니다.
- 정상 학습. 정상의 분포를 먼저 배우고 거기서 벗어나는 것을 잡는 방식으로 시작했습니다. 불량 사진이 거의 없는 초기에 특히 유효했습니다.
- 증강. 조명, 회전, 위치 변화를 인위적으로 만들어 정상의 범위를 넓혔습니다. 다만 실제 조명 조건과 다른 증강은 오히려 오탐을 늘려서, 현장 조건 안에서만 했습니다.
- 검사원의 라벨링. 모델이 애매하다고 판단한 사진을 검사원에게 보내 판정을 받았습니다. 이 판정이 다시 학습 데이터가 됩니다. 불량 데이터는 이렇게 조금씩 쌓였습니다.
운영: 배포 후 첫 달
배포 직후 정확도는 학습 때와 비슷했습니다. 문제는 몇 주 뒤에 나타났습니다. 계절이 바뀌며 창으로 들어오는 빛이 달라졌고, 특정 시간대에 오탐이 늘었습니다. 모델이 틀린 것이 아니라, 학습 때 없던 조명 조건이 생긴 것입니다.
이 경험 때문에 우리는 이후 프로젝트에서 두 가지를 기본으로 넣습니다. 하나는 촬영 환경을 외부 빛과 분리하는 차광, 다른 하나는 오탐률이 기준을 넘으면 알리고 재학습을 시작하는 모니터링입니다. 두 번째는 나중에 4I-MLOps의 드리프트 감지 기능이 되었습니다.
처음엔 기계가 검사원을 대신한다고 생각했는데, 써 보니 검사원이 기계를 가르치는 일에 가까웠습니다. 그리고 그게 더 나은 방식이었습니다.


검사원의 역할은 없어지지 않았습니다
자동화 후에도 검사원은 남았습니다. 역할이 바뀌었을 뿐입니다. AI가 판정한 결과 중 애매한 것을 확인하고, 새로운 불량 유형이 나오면 라벨을 달아 주는 일입니다. 이 피드백이 다시 학습 데이터가 됩니다.
현장에서 배운 가장 큰 교훈은 이것입니다. AI는 검사원을 대체하는 것이 아니라, 검사원이 놓치던 것을 잡아내고 검사원의 판단을 데이터로 남기는 도구입니다.
숫자로 남은 것
실제 생산 라인에서 검증한 4I-Quality의 실시간 결함 검출 정확도는 98%입니다.
다만 프로젝트를 마치고 돌아보면 이 숫자가 가장 큰 변화는 아니었습니다. 더 크게 달라진 것은 판정 이력이 남기 시작했다는 점입니다.
그전까지 불량은 검사원의 손에서 걸러지고 그대로 폐기됐습니다. 몇 개가 걸러졌는지는 알아도, 어느 시간대에 어느 설비를 거친 부품이었는지는 남지 않았습니다. 이력이 쌓이자 그 질문에 답할 수 있게 되었고, 검사는 불량을 걸러내는 마지막 관문에서 원인을 찾는 출발점이 되었습니다.
검사 자동화는 품질 데이터의 시작이기도 합니다.
체크리스트: 검사 자동화를 시작하기 전에
시작 전에 답해야 할 질문 8가지
- 검사해야 할 면과 결함 유형이 문서로 정리되어 있는가
- 결함 유형별로 가장 잘 보이는 조명 조건을 확인했는가
- 부품을 매번 같은 자세로 놓을 수 있는가 (지그, 그리퍼)
- 부품당 검사에 쓸 수 있는 시간은 몇 초인가
- 불량 사진은 유형별로 몇 장이나 있는가
- 애매한 판정을 누가, 어떤 화면에서 확인할 것인가
- 정확도가 떨어지면 누가 언제 알게 되는가
- 판정 결과와 이력을 어디에 남길 것인가
여덟 개 중 답이 없는 것이 있다면, 모델보다 그 질문부터 푸는 것이 빠릅니다.
다음 편
검사가 돌아가기 시작하면 다음 벽은 데이터입니다. PLC, 센서, 비전 데이터가 서로 다른 곳에 흩어져 있고, 그대로는 쓸 수 없습니다. 시리즈 2편에서 그 이야기를 이어갑니다.


