AI 외관검사를 위한 결함 라벨링 방법: 바운딩 박스 어노테이션 가이드

저희가 처음 학습시킨 결함 검출 모델은 형편없었고, 그건 저희 잘못이었어요. 사진도 괜찮았고 모델도 괜찮았어요. 문제는 결함 주위에 그린 박스가 제각각이었다는 거예요. 모델은 저희가 보여준 것을 정확히 배웠고, 그건 혼란이었어요.
그 뒤로 저희도, 함께 일하는 분들도 정말 많은 부품을 라벨링했는데 늘 같은 몇 가지 문제가 반복해서 나와요. 복잡한 건 하나도 없어요. 대부분은 누군가 짚어 주기만 하면 바로 당연해 보이는 것들이에요. 이 글이 바로 그 짚어 주는 역할을 하려고 해요.
핵심 요약
모델이 촬영 환경이 아니라 결함을 배우도록 여러 각도, 거리, 조명에서 사진을 찍으세요. 그다음 모든 이미지의 모든 결함을 라벨링하고, 박스는 딱 맞게 그리고, 매번 같은 방식으로 라벨링하고, 서로 다른 결함 유형의 박스는 겹쳐도 그대로 두고, 나중에 합칠 수 있도록 세분화된 클래스로 시작하세요. 실무에서는 정직한 박스 하나가 놓친 박스 열 개보다 낫고, 애매한 샘플은 데이터셋에서 빼는 게 맞아요. 그리고 두 사람이 다르게 그릴 것 같은 박스라면 아마 그 박스가 잘못된 거예요.
사진 촬영: 원칙 하나
모델은 다양한 이미지를 보면서 일반화하는 법을 배워요. 핀홀 사진을 전부 같은 자리에서 같은 조명 아래 찍으면 모델은 그 자리와 그 조명을 배우고, 부품이 살짝 돌아간 채로 처음 들어오는 순간 헷갈리기 시작해요. 그래서 학습 이미지를 모을 때 꼭 해야 할 한 가지는 계속 움직이는 거예요.
다양한 각도. 결함 주위를 돌면서 여러 방향에서 찍으세요. 같은 핀홀도 정면에서 볼 때와 45도에서 볼 때 다르게 보이고, 모델은 두 모습을 모두 봐야 해요.

다양한 조명과 배경. 밝을 때, 어두울 때, 그늘에서, 작업대 위에서, 라인 위에서 찍어 보세요. 배경을 바꿔 줘야 모델이 배경을 무시하는 법을 배워요.

다양한 거리. 가까이 다가갔다가 뒤로 물러나 보세요. 화면을 가득 채우는 결함도, 구석에 점처럼 보이는 결함도 모두 모델이 생산 현장에서 마주하게 될 모습이에요.

카메라가 라인에 고정되어 있다면 이건 전혀 문제가 되지 않아요. 고정된 위치에서는 매우 일관된 이미지가 나오고, 그 한 가지 시점에 아주 강한 모델이 만들어져요. 다양성이 가장 중요한 건 iPhone을 손에 들고 쓸 때, 또는 모델 하나로 여러 스테이션을 커버해야 할 때예요.
라벨링: 다섯 가지 기본 원칙
이건 Enao만의 규칙이 아니에요. 객체 검출을 위한 모든 이미지 어노테이션에 적용되는 원칙이고, 확신 있게 판정하는 모델과 계속 다시 확인해 달라고 하는 모델의 차이를 만들어요.
1. 이미지 속 모든 결함을 라벨링하세요

저희가 가장 먼저 틀린 게 바로 이거예요. 이미지에 결함이 세 개 있는데 두 개만 박스를 치면, 세 번째는 배경이라고 모델에게 가르친 셈이에요. 데이터셋 전체에서 이런 일이 수십 번 반복되면 같은 패턴이 양쪽으로 다 제시된 탓에 진짜 경보와 오경보의 경계가 흐려지기 시작해요. 눈에 보이면 박스를 치세요.
2. 결함에 딱 맞게 박스를 그리세요

몇 픽셀 정도 여유를 둔 딱 맞는 박스는 결함 패턴 전체를 가르치고, 그 외에는 아무것도 가르치지 않아요. 박스가 결함을 자르면 패턴 일부가 빠져요. 너무 느슨하게 그리면 모델이 그 많은 배경을 무시하는 법까지 배워야 하는데, 그러려면 누구도 라벨링하고 싶지 않을 만큼 많은 예시가 필요해요. 게다가 딱 맞는 박스가 그리기도 더 빠르니 덤으로 얻는 장점도 있어요.
3. 매번 같은 방식으로 라벨링하세요

작은 결함이 모여 있을 때 쓸 수 있는 좋은 방법은 두 가지예요. 하나씩 박스를 치거나, 그룹 전체에 박스 하나를 그리는 거예요. 둘 다 잘 통해요. 안 되는 건 두 방식을 섞는 거예요. 그러면 모델은 같은 상황이 두 가지 방식으로 라벨링된 걸 보고 판단을 내리지 못해요. 팀이 일관되게 지키기 쉬운 쪽을 고르고, 어딘가에 적어 두세요.
4. 서로 다른 결함의 박스는 겹쳐도 괜찮아요

스크래치가 얼룩을 가로지르는 건 흔한 일이에요. 스크래치에 박스를 치고, 얼룩에도 박스를 치고, 겹치게 두세요. 부분적으로 겹치는 건 전혀 문제가 없어요. 피해야 할 건 클래스가 다른 두 박스가 거의 정확히 포개지는 경우예요. 그러면 그 픽셀이 어느 클래스에 속하는지 배울 방법이 없어요.
5. 세분화해서 시작하고, 나중에 합치세요

깊은 스크래치, 미세 스크래치, 마찰 자국이 클래스 하나인지 셋인지 확신이 없다면 셋으로 시작하세요. 나중에 합치는 건 클릭 한 번이면 돼요. 하지만 뭉뚱그려 둔 클래스를 쪼개려면 전부 다시 훑어봐야 해요. 합칠 때가 됐다는 신호는 모델이 두 클래스를 계속 서로 헷갈릴 때예요. 보통은 여러분에게는 의미가 달라도 카메라에는 비슷하게 보인다는 뜻이에요.
실무 팁: 직접 부딪혀서 배운 네 가지
기본 원칙은 규칙이에요. 여기부터는 실제로 앉아서 박스를 그려 봐야 비로소 마주치는 판단의 문제들이에요.
결함은 여러 개, 박스는 하나

점 열다섯 개에 작은 박스 열다섯 개를 치려면 한참 걸리고, 열한 번째 박스쯤에서 하나는 꼭 놓쳐요. 저희가 그랬으니까 알아요. 무리 전체에 정직한 박스 하나를 치는 게 더 빠르고, 모델도 개의치 않아요. 작은 박스보다 일관성이 더 중요해요.
원칙에 얽매이지 말고 효율적으로

때로는 그룹에 박스 하나, 동떨어진 결함에 박스 하나를 치는 게 정답이에요. 네, 방식을 섞는 거 맞아요. 그래도 동떨어진 결함 하나를 잡으려고 배경이 가득한 거대한 박스를 치거나, 개별 박스 열다섯 개를 치고 세 개를 놓치는 것보다는 나아요. 모든 규칙 밑에 깔린 규칙은 다음 사람도 똑같이 라벨링할 수 있게 라벨링하는 거예요.
애매한 샘플은 데이터셋에서 빼세요

어떤 이미지는 일관되게 라벨링하는 게 그냥 불가능해요. 결함 세 개가 겹쳐 있고, 경계를 구분할 수 없고, 다섯 명이 다섯 가지 다른 박스를 그릴 그런 이미지예요. 이런 이미지는 과감히 빼고, 미안해할 필요도 없어요. 깔끔한 이미지 200장으로 만든 데이터셋이 노이즈 많은 1,000장보다 나아요. 모델은 생산 현장에서 겹친 결함도 여전히 잡아내요. 다만 그런 이미지로 학습하면 안 될 뿐이에요.
주관적인 박스보다 배경이 더 들어간 박스가 나아요

긴 스크래치는 박스 하나로 칠 수도, 짧은 박스 여섯 개로 칠 수도 있어요. 사람마다 알아서 하게 두면 두 가지가 다 나와요. 배경이 조금 더 들어간 박스 하나는 누가 쳐도 똑같아요. 라벨링 결정이 누가 마우스를 잡고 있느냐에 따라 달라진다면, 더 이상 달라지지 않을 때까지 박스를 키우세요.
이미지는 몇 장이 필요할까요?
이미지가 좋기만 하면 생각보다 적게 필요해요. 한 제품의 결함 유형 하나라면, 라벨링이 잘된 이미지 25장에서 50장이면 라인에 올려 놓고 배워 나갈 첫 모델로 보통 충분해요. 프로젝트를 망치는 건 대개 이미지가 너무 적어서가 아니라, 이미지 100장이 세 가지 다른 방식으로 라벨링돼 있어서예요. 작게 시작하고, 꼼꼼하게 라벨링하고, 테스트한 다음, 모델이 가장 약한 부분에 이미지를 추가하세요.
자주 묻는 질문
바운딩 박스 어노테이션이란 뭔가요?
모델이 찾아야 할 대상, 여기서는 각 결함 주위에 사각형을 그리는 작업이에요. 그래야 모델이 그 대상이 어떻게 생겼고 주로 어디에 나타나는지 배울 수 있어요. 외관검사에서 가장 흔하게 쓰이는 이미지 어노테이션 방식이에요.
박스에 배경을 포함해야 하나요?
몇 픽셀 정도 여유만 두고, 그 이상은 두지 마세요. 결함의 가장자리가 박스 안에 들어올 만큼은 두되, 모델이 주변을 무시하는 법까지 배워야 할 만큼 넓게 두지는 마세요.
일부가 가려진 결함은 어떻게 라벨링하나요?
보이는 부분만 딱 맞게 박스를 치세요. 나머지를 추측해서 그리지는 마세요. 대부분이 가려져 있다면 그 이미지가 애초에 데이터셋에 들어가야 하는지부터 따져 보세요.
양품도 라벨링해야 하나요?
네, 박스를 치지 않은 채로 두면 돼요. 결함도 박스도 없는 이미지는 정상이 어떤 모습인지 모델에게 가르쳐 주고, 이런 이미지도 결함 이미지만큼 필요해요.
두 사람의 라벨이 서로 다르면 어떻게 하나요?
누가 맞는지 고를 게 아니라 규칙을 바꾸라는 신호예요. 박스를 키우거나, 클래스를 합치거나, 두 사람이 똑같이 그릴 수 있을 때까지 그 샘플을 빼세요.
여러분의 부품으로 직접 해 보세요
이 내용이 정말 맞는지 확인하는 가장 좋은 방법은 여러분 라인에 있는 부품 이미지 25장을 라벨링하고 모델을 학습시켜 보는 거예요. 가입 없이 60초 만에 데모를 체험하거나 무료로 시작하세요.
Explore with AI
Discuss this article with your favorite AI assistant