혼동행렬 — 네 칸으로 나눠 센다
| 실제 정상 | 실제 불량 | |
|---|---|---|
| 모델: OK | 맞음 | 미검 (불량 유출) |
| 모델: NG | 과검 (정상 폐기·재검) | 맞음 |
불량률이 1%인 라인에서 모든 부품을 OK로 판정하는 '모델'의 정확도는 99%입니다. 하지만 불량을 하나도 못 잡습니다. 그래서 정확도 하나가 아니라 아래 지표를 함께 봅니다.
- 재현율(Recall) — 실제 불량 중 모델이 잡은 비율. 미검이 적을수록 높습니다.
- 정밀도(Precision) — 모델이 NG라고 한 것 중 진짜 불량의 비율. 과검이 적을수록 높습니다.
- F1 — 재현율과 정밀도의 조화평균. 둘의 균형을 숫자 하나로 볼 때 씁니다.
임계값은 비용으로 정한다
대부분의 현장에서 미검 하나의 비용이 과검 하나보다 훨씬 큽니다. 불량이 고객에게 가면 클레임과 리콜로 이어지지만, 과검은 재검사 비용입니다. 그래서 순서는 이렇습니다.
- 허용할 수 있는 미검률을 먼저 정합니다. 예: 0건.
- 그 조건을 만족하는 임계값 중 과검이 가장 적은 값을 고릅니다.
- 과검이 너무 많으면 임계값이 아니라 영상(조명·정렬)과 모델을 개선합니다.
F1이 가장 높은 지점을 자동으로 찾아 주는 기능(RoboVision)은 좋은 출발점이지만, 최종 값은 이 비용 기준으로 조정합니다. 확신하기 어려운 구간은 이중 임계값의 Gray로 사람에게 넘깁니다.
데이터를 세 벌로 나눈다
- 학습 세트 — 모델이 배우는 데이터.
- 검증 세트 — 알고리즘과 임계값을 고를 때 보는 데이터.
- 평가 세트 — 마지막에 단 한 번 성능을 확인하는 데이터.
임계값을 평가 세트를 보며 맞추면, 그 숫자는 실제보다 좋게 나옵니다. 또 같은 부품을 여러 각도로 찍은 이미지가 학습과 평가에 나뉘어 들어가면 안 됩니다. 모델이 "본 부품"을 다시 맞히는 셈이기 때문입니다.
라인에 올리기
- 속도 — 판정은 라인의 택트 타임 안에 끝나야 합니다. 이미지 한 장의 추론 시간뿐 아니라 촬영·전처리·결과 전송까지 합한 시간을 잽니다.
- 최적화 형식 — 학습한 모델을 ONNX나 TensorRT로 변환하면 같은 GPU에서 추론이 빨라집니다. Physical AI Platform(PaaS)의 Model Hub가 변환과 배포를 관리합니다.
- 결과 기록 — 판정, 점수, 이미지 경로를 CSV로 남기고 fineAi Dash로 모으면 시간대·라인·불량 유형별 추세, SPC, 파레토를 볼 수 있습니다.
운영 중의 변화 — 드리프트
라인은 계속 변합니다. 조명이 노후되고, 원자재 로트가 바뀌고, 카메라가 살짝 틀어집니다. 그러면 정상 부품의 점수 분포가 조금씩 오른쪽으로 이동하고, 어느 날 과검이 갑자기 늘어납니다. PaaS는 점수 분포가 학습 당시와 얼마나 달라졌는지를 **PSI(Population Stability Index)**로 계산해 경고합니다. 과검이 터지기 전에 원인을 찾을 수 있습니다.
재학습의 고리
- 현장 운영자가 NG와 Gray 이미지에 실제 판정을 표시합니다.
- 표시된 이미지가 데이터셋에 쌓입니다.
- 주기적으로 다시 학습하고, 평가 세트로 이전 모델보다 나은지 확인합니다.
- 나아졌으면 OTA로 현장 장비에 배포합니다.
이 고리가 돌아가면 모델은 라인과 함께 나아집니다. 반대로 고리가 없으면 출시일의 성능이 최고점이 됩니다.