1. Image Classification Basics
A picture is worth a thousand words.
— English idiom
우리는 살면서 이런 말을 수 없이 들어왔습니다. 한 장의 이미지로 복잡한 아이디어를 전달할 수 있다는 뜻입니다. 주식 포트폴리오 투자의 라인 차트를 살펴보든, 단순히 유튜브를 보든 우리는 시각적인 내용을 끊임없이 수집하고 그 의미를 해석하고 나중에 사용할 수 있도록 저장하고 있습니다.
하지만, 컴퓨터에게 있어서 이미지의 내용물을 해석하는 것은 인간과는 다릅니다 – 컴퓨터가 보는 모든 것은 숫자들의 큰 행렬입니다. 따라서 이미지가 전달하려는 의도, 노력, 의미에 대해서 컴퓨터는 알지 못합니다.
이미지의 내용을 이해하기 위해서는 이미지에서 의미를 추출하기 위해 컴퓨터 비전과 기계 학습 알고리즘을 사용하는 작업인 이미지 분류를 적용해야 합니다. 이 작업은 이미지가 포함한 내용에 레이블을 지정하는 것처럼 단순할 수도 있고, 이미지의 내용을 해석하고 사람이 읽을 수 있는 문장을 반환하는 것처럼 발전할 수도 있습니다.
이미지 분류와 이미지 이해는 향후 10년 동안 컴퓨터 비전의 가장 일반적인 하위 분야입니다. 우리는 미래에 구글, 마이크로소프트, 바이두 등과 같은 회사들이 이미지 이해에 성공하는 스타트업 기업을 빠르게 확보하는 것을 보게 될 것입니다. 우리는 스마트폰에서 이미지의 내용을 이해하고 해석할 수 있는 소비자 애플리케이션을 점점 더 많이 보게 될 것입니다.
What Is Image Classification?
이미지 분류는 미리 정의된 범주 집합에서 이미지에 레이블을 할당하는 작업이 가장 핵심입니다.
실질적으로, 이것은 이미지를 분석하고 그 이미지를 분류하는 라벨을 반환하는 것입니다. 라벨은 항상 미리 정의된 가능한 카테고리 세트에서 나옵니다.
예를 들어, 가능한 범주 집합에는 다음이 포함된다고 가정합니다:
categories = {cat, dog, panda}
이미지(그림 1)를 분류 시스템에 제시합니다:
여기서 우리의 목표는 이 입력 이미지를 가져와서 카테고리 세트(이 경우 개)에서 라벨을 할당하는 것입니다.
우리의 분류 시스템은 또한 개: 95%, 고양이: 4%, 팬더: 1%와 같은 확률을 통해 이미지에 여러 레이블을 할당할 수 있습니다.
좀 더 형식적으로, 각각 Red, Green, Blue 세 개의 채널이 있는 W×H 픽셀의 입력 이미지를 고려할 때, 우리의 목표는 W×H×3 = N 픽셀 이미지를 촬영하여 이미지의 내용을 올바르게 분류하는 방법을 찾는 것입니다.
A Note on Terminology
머신러닝과 딥러닝을 수행할 때 지식을 추출하고자 하는 데이터셋이 있습니다. 데이터셋의 각 예/항목(이미지 데이터, 텍스트 데이터, 오디오 데이터 등)은 데이터 포인트입니다. 따라서 데이터셋은 데이터 포인트의 집합입니다(그림 2).
우리의 목표는 머신러닝과 딥러닝 알고리즘을 적용하여 데이터셋의 기본 패턴을 발견하고 알고리즘이 아직 보지 못한 데이터 포인트를 올바르게 분류할 수 있도록 하는 것입니다.
- 이미지 분류의 맥락에서 데이터 세트는 이미지의 모음입니다.
- 따라서 각 이미지는 데이터 포인트입니다.
The Semantic Gap
그림 3의 두 사진의 (위)를 보면 왼쪽과 오른쪽에 고양이와 개가 있습니다. 이 것을 분류하는 것은 인간에게는 매우 쉽습니다. 하지만 컴퓨터가 보는 것은 픽셀로 이루어진 두 개의 큰 행렬(아래)뿐입니다.
컴퓨터가 보는 모든 것이 픽셀의 큰 행렬임을 감안할 때, 우리는 semantic gap의 문제에 도달합니다. semantic gap은 인간이 이미지의 내용을 인식하는 방식과 컴퓨터가 그 과정을 이해하는 방식으로 이미지를 표현하는 방식 사이의 차이입니다.
다시 위의 두 사진을 빠르게 시각적으로 관찰하면 두 종의 동물의 차이를 알 수 있습니다. 하지만 실제로는 컴퓨터가 처음부터 이미지 속에 동물이 있는지 전혀 알지 못합니다. 이 점을 분명히 하기 위해 고요한 해변의 사진이 들어 있는 그림 4를 보세요.
이미지를 다음과 같이 설명할 수 있습니다:
- Spatial: 하늘이 영상의 맨 위에 있고 모래/바다가 맨 아래에 있습니다.
- Color: 하늘은 검푸르고, 바닷물은 하늘보다 연한 파란색인 반면, 모래는 황갈색입니다.
- Texture: 하늘은 비교적 균일한 패턴을 가지고 있는 반면 모래는 그렇지 않습니다.
이 모든 정보를 컴퓨터가 이해할 수 있는 방식으로 인코딩하려면 이미지의 내용을 정량화하기 위해 특징을 추출해야 합니다. 특징 추출은 입력된 이미지를 촬영하고 알고리즘을 적용하여 이미지를 정량화하는 특징 벡터(즉, 숫자 리스트)를 얻는 과정입니다.
이 과정을 수행하기 위해 HOG, LBP 또는 기타 "전통적인" 접근 방식과 같은 손으로 조작한 기능을 이미지 정량화에 적용하는 것을 고려할 수 있습니다.
하지만, 이작업은 간단하지 않습니다. 왜냐하면 일단 우리가 현실 세계에서 이미지를 조사하기 시작하면, 우리는 많은 많은 challenge에 직면하기 때문입니다.
Challenges
만약 semantic gap이 문제가 되지 않았다면, 우리는 이미지나 물체가 나타나는 방식의 변화 요인도 처리해야 합니다. 그림 5는 이러한 변화 요인의 수를 시각화한 것입니다.
우선, 물체가 촬영되고 캡처되는 방식에 대해 물체가 다차원으로 배향/회전될 수 있는 viewpoint variation(시점 변화)가 있습니다. 이 Raspberry Pi를 캡처하는 각도와 상관없이 여전히 Raspberry Pi입니다.
또한 스케일 변화도 고려해야 합니다. 사이즈는 다르지만 다 똑같은 스타벅스 커피이며, 가까이에서 찍을 때와 멀리서 찍을 때 극적으로 다르게 보일 것입니다. 이미지 분류 방법은 이러한 유형의 스케일 변화에 견딜 수 있어야 합니다.
이미지 분류는 또한 분류하고자 하는 물체의 많은 부분이 이미지에서 보이지 않게 숨겨져 있는 occlusion을 처리할 수 있어야 합니다(그림 5). 왼쪽에는 개 사진이 있어야 합니다. 오른쪽에는 이불 밑에 파묻혀 있는 개 사진이 있지만 우리는 두 사진 모두 개 사진이 있다는 것을 압니다. 이미지 분류기는 이런 문제도 견딜수 있어야 합니다.
조도의 변화도 처리해야 합니다. 표준 조명과 저조도 조명에서 포착된 커피 컵을 살펴보면 왼쪽과 오른쪽에서는 같은 컵이지만 (그림 5). 왼쪽의 영상은 표준 오버헤드 조명으로 촬영되었고 오른쪽의 영상은 매우 적은 조명으로 촬영되었습니다. 우리는 여전히 같은 컵을 조사하고 있지만 조명 조건에 따라 컵은 극적으로 달라 보입니다 (낮은 조명 조건에서 컵의 수직 판지 이음새가 명확하게 보이는 것은 좋지만 표준 조명은 그렇지 않습니다).
배경을 어수선하게 만드는 것도 고려해야 합니다.
마지막으로, 클래스 내 변형이 있습니다. 컴퓨터 비전에서 클래스 내 변형의 표준적인 예는 의자의 다양성을 보여주는 것입니다. 일반적으로 사용하는 편안한 의자부터 가족 모임을 위해 부엌 테이블을 정렬하는 의자, 초현대적인 아트 데코 의자까지, 의자는 여전히 의자입니다. 그리고 이미지 분류 알고리즘은 이 모든 변형을 올바르게 분류할 수 있어야 합니다.
이미지 분류 알고리즘을 위한 사실상의 표준 벤치마크 데이터 세트인 ImageNet은 일상 생활에서 접하는 1,000개의 객체로 구성되어 있으며, 이 데이터 세트는 여전히 딥 러닝을 위한 최첨단 기술을 발전시키기 위해 노력하는 연구자들에 의해 적극적으로 사용되고 있습니다.
딥러닝은 마법이 아닙니다. 대신 딥러닝은 강력한 무기와 같습니다. 제대로 휘두르면 강력하고 유용하지만, 적절한 고려 없이 사용하면 위험합니다.