[AI 검사, 현장의 문제들 (1)] 불량 제품이 없는 상태에서 AI Inspection 시작하기

AI Inspection은 대개 불량 데이터가 부족한 상태에서 시작하며, 데이터가 쌓이는 과정에서도 불균형·레이블 오류·미학습 결함·다품종 문제에 부딪힙니다. 이 다섯 가지 문제의 공통점은 모델이 아니라 데이터에 있다는 점입니다.

2026.08.03

  • 기술·제품

제조 고객과의 검사 자동화 미팅에서 저희가 가장 먼저 확인하는 것은 보유한 불량의 수량입니다. 답은 거의 매번 비슷합니다. 결함 유형 하나에 수량은 대여섯 개, 어떤 유형은 한 개, 신규 라인이라면 아예 없을 때도 있습니다.

수율이 좋다는 뜻이니 공정 입장에서는 좋은 상황입니다. 다만 학습 데이터 관점에서는 곤란합니다. 그리고 이건 단순히 시간을 투자해 "데이터를 더 모으면 되는" 문제가 아닙니다. 데이터가 쌓이기 시작해도 끝나지 않고, 오히려 다른 종류의 문제가 이어집니다.

100여 건의 PoC와 30건 이상의 양산 프로젝트를 거치면서 같은 지점에서 반복해서 막혔고, 그 지점들이 서로 얽혀 있다는 걸 알게 됐습니다. 이 글은 그 다섯 가지를 정리한 것입니다. 각각을 어떻게 다뤘는지는 이어지는 글에서 따로 소개하겠습니다.

1. 데이터가 쌓이는 속도가 느립니다

안정된 라인의 불량률은 보통 1% 아래입니다. 하루 수만 개를 생산해도 특정 유형의 결함은 한 달에 한 건 나오면 다행입니다. 학습에 쓸 만큼 모으려면 수 주에서 수개월이 걸리고, 그동안 시료 보관·촬영·레이블링 공수가 계속 들어갑니다.

신규 라인이나 신규 품목이면 결함 데이터가 0인 상태에서 시작합니다. 실무에서는 이 대기 기간 자체가 도입을 막습니다. 기술이 부족해서가 아니라 착수할 재료가 없어서 프로젝트가 서 있는 경우가 많습니다.

그렇다고 라인을 돌려 불량을 일부러 만들 수도 없습니다. 의도적으로 만든 불량은 발생 메커니즘이 실제와 달라서 형태가 다르게 나옵니다. 결국 자연 발생을 기다려야 합니다.

2. 유형별 수량이 균등하지 않습니다

데이터를 모아도 유형별로 고르게 쌓이지 않습니다. 자주 발생하는 두세 가지가 대부분을 차지하고, 나머지 수십 가지는 유형당 한두 장 수준으로 흩어집니다.

그림1_결함 유형별 데이터 수량 분포.png

[그림 1] 결함 유형별 데이터 수량 분포

모델의 평균 성능은 데이터가 많은 앞쪽 구간이 결정합니다. 그런데 유출 사고는 대체로 꼬리 쪽에서 납니다. 검출률 98%라는 숫자가 안심의 근거가 되기 어려운 이유입니다. 나머지 2%가 어떤 유형인지에 따라 의미가 완전히 달라집니다.

여기서 흔히 하는 대응이 희귀 클래스 오버샘플링인데, 원본이 한두 장이면 같은 이미지를 반복해서 보는 것에 가까워집니다. 회전·플립·밝기 변형을 걸어도 결함 자체의 형태 다양성은 늘지 않습니다. 실제 라인에서 같은 유형의 결함은 방향과 깊이와 길이가 매번 다른데, 원본 두 장을 아무리 변형해도 그 분산은 만들어지지 않습니다. 과적합만 늘고 일반화는 잘 되지 않습니다.

3. 레이블에 오류가 섞여 있습니다

학습 데이터의 레이블은 사람이 만듭니다. 육안 검사자마다 기준이 조금씩 다르고, 합격과 불합격 경계에 걸친 시료는 같은 사람이 봐도 날마다 판정이 갈립니다. 교대 근무 중 오기입도 생깁니다.

프로젝트에 따라서는 넘겨받은 학습 데이터의 30~40%가 오염된 상태였던 경우도 있었습니다. 여기서 오염은 양품으로 분류된 이미지에 실제 불량이 섞여 있는 경우와, 결함 유형이 잘못 지정된 경우를 지칭합니다. 양품 폴더에 불량이 들어 있으면 모델은 그 불량을 정상 범위로 학습합니다. 데이터를 늘릴수록 판정 기준이 오히려 흐려집니다.

이건 잘 드러나지 않습니다. 검증 세트도 같은 사람들이 같은 방식으로 레이블링했다면 지표상으로는 아무 문제가 없어 보입니다. 모델이 사람의 오류까지 따라 학습한 상태라 오히려 정확도가 높게 나옵니다. 현장에 넣고 나서야 어긋나기 시작합니다.

그림2_학습 세트와 검증 세트가 같은 오류를 공유할 때.png

[그림 2] 학습 세트와 검증 세트가 같은 오류를 공유할 때

경계 시료를 별도로 관리하면 어느 정도 완화됩니다. 같은 시료를 여러 검사자에게 돌려 판정이 나뉘는 것을 보면 학습 이전에 찾아낼 수 있습니다. 다만 그 자체가 별도 공수이고, 라인이 돌아가는 중에 확보하기 쉽지 않습니다.

4. 학습에 없던 결함이 나옵니다

공정 조건이 바뀌고 원자재 로트가 바뀌고 설비가 노후화되면, 학습 시점에 없던 형태의 결함이 나타납니다. 가능성의 문제가 아니라 시간의 문제입니다.

분류 모델은 학습한 클래스 중 하나로 답해야 합니다. 처음 보는 패턴에 "모르겠다"는 선택지가 없어서 가장 가까워 보이는 클래스로 들어가고, 그게 대개 정상입니다. 성능이 조금 떨어지는 정도가 아니라 불량이 그대로 후공정으로 넘어갑니다.

소프트맥스 확신도로 걸러내는 방법이 자주 쓰이는데, 학습하지 않은 입력에 대해서도 확신도가 높게 나오는 경우가 많아 신뢰하기 어렵습니다. 모델은 자기가 모른다는 것을 모릅니다.

5. 품종 수만큼 모델이 늘어납니다

품종별로 모델을 만드는 방식에서는 품종 200개면 모델도 200개입니다. 학습 데이터셋 200개, 모니터링 대상 200개, 공정 변경 시 재학습·검증·배포도 200번입니다. 신규 품종이 들어오면 데이터 수집부터 다시 시작하니 품종 하나에 몇 주가 듭니다. 품종이 수천 종 규모가 되면 이 방식은 성능이 아니라 운영으로 무너집니다.

그림3_습한 클래스 밖의 입력이 처리되는 방식.png

[그림 3] 학습한 클래스 밖의 입력이 처리되는 방식

정리

위 다섯 가지 문제에는 공통점이 있습니다. 전부 모델이 아니라 데이터 쪽의 문제라는 점입니다. 백본(backbone)을 최신 것으로 바꾸거나 파라미터(parameter)를 늘려도 그대로 남습니다. 이에 저희가 잡은 방향은 네 가지입니다.

•  정제를 전제하지 않고 노이즈와 롱테일이 섞인 원본을 그대로 학습시킨다

•  학습하지 않은 결함을 정상으로 분류하지 않도록 지도·비지도 두 트랙을 함께 쓴다

•  표본이 부족하면 생성해서 채운다

•  품종이 늘어도 모델은 하나로 유지한다

여기에 하나 더 있습니다. 위 네 가지가 다 해결돼도, 촬영 위치가 매번 달라지면 성능은 나오지 않습니다. 다품종 라인에서 광학계 정합을 사람이 하는 한, 앞의 문제들과 같은 규모로 공수가 늘어납니다. 이에 따라, 이어지는 글에서는 아래와 같은 순서로 각각을 다루도록 하겠습니다.

2편. 정상만 학습해서 이상을 찾을 때 막히는 지점들
3편. 지도학습과 비지도학습을 한 시스템에 같이 넣은 이유
4편. 품종 수천 종을 모델 하나로 처리하기까지
5편. 결함 데이터를 생성해서 학습에 쓸 때 지켜야 할 것
6편. 품종이 바뀔 때마다 사람이 광학계를 맞추는 문제

함께 보면 좋은 콘텐츠

아이벡스가 궁금하다면?

왜 AIVEX인지, 그리고 우리가 어떤 팀인지 자세히 알아보세요.