1장. AI 비전과 OpenCV 개발환경
컴퓨터비전이 하는 일
과일 가게 사장님이 사진 한 장을 보고 할 수 있는 일은 여러 가지입니다. "이건 사과 사진이네"라고 이름을 붙일 수도 있고, "사과는 왼쪽 아래에 있어"라고 자리를 짚을 수도 있고, 사과의 테두리를 가위로 오려 낼 수도 있고, "지름이 몇 cm 인지, 흠은 없는지" 잴 수도 있습니다. 컴퓨터비전의 일도 이렇게 네 갈래로 나뉩니다.
그림의 네 상자가 왼쪽부터 분류, 탐지, 분할, 측정·검사입니다. 오른쪽으로 갈수록 사진을 더 잘게 들여다봅니다. 여기서 "이름 붙이기"가 분류, "자리 짚기"가 탐지, "가위로 오리기"가 분할, "자로 재기"가 측정·검사입니다.
네 가지 일
| 일 | 묻는 것 | 답의 모양 | 과일 가게 예 | 이 과정에서 |
|---|---|---|---|---|
| 분류(classification) | 무엇인가? | 이름 하나 | "사과 사진" | 16장 데이터 준비 |
| 탐지(detection) | 어디에 있나? | 네모 상자와 이름 | "사과는 (40, 100) 자리에" | 17장부터 19장까지 YOLO |
| 분할(segmentation) | 어디까지인가? | 픽셀마다 이름 | 사과의 테두리대로 오리기 | 8장, 12장의 영역 나누기 |
| 측정·검사(measurement) | 얼마나? 정상인가? | 숫자, 합격·불합격 | 지름 재기, 흠집 찾기 | 12장, 13장의 객체 분석 |
어떤 일인지 가르는 법
| 하고 싶은 말 | 고를 일 |
|---|---|
| "이 사진은 OO 이다" | 분류 |
| "OO 이 몇 개, 어디에 있다" | 탐지 |
| "OO 의 넓이가 얼마다" | 분할 |
| "OO 의 크기가 기준보다 크다" | 측정·검사 |
# 하고 싶은 질문과 그 일의 이름을 사전으로 짝지어 둔다
tasks = {
"이 사진은 사과인가?": "분류",
"사과가 어디에 몇 개 있나?": "탐지",
"사과가 차지한 넓이는?": "분할",
"사과에 흠집이 있나?": "측정·검사",
}
for question, task in tasks.items():
print(f"{task:6} ← {question}")주의할 점
- 한 서비스가 여러 일을 섞어 쓰기도 합니다. 예를 들어 탐지로 사과를 찾은 뒤, 찾은 자리만 잘라 흠집을 검사합니다.
- 답이 자세할수록 정답 데이터를 만드는 수고도 커집니다. 분류는 사진마다 이름 하나면 되지만, 분할은 픽셀마다 이름을 붙여야 합니다.