Suite 오토라벨링으로 이미지 분류용 AI 모델 학습시키기
들어가며
컴퓨터 비전 분야에서 정확도란 매우 중대한 요소입니다. 이미지를 정확하게 탐지하지 못하는 모델은 현실에 적용해봤자 쓸모가 없거나, 더 심각한 경우 위험한 상황을 일으킬 수도 있습니다. 이렇듯 컴퓨터 비전 모델이 제대로 물체를 식별해내지 못하면 재해에 가까운 결과를 불러올 수 있습니다. 한편으로는 학습이 제대로 된 모델은 워크플로우를 수월하게 하고, 의학적인 미스터리를 풀어주고, 운송문제를 해결해주기도 합니다. 컴퓨터 비전은 사회가 더욱 잘 돌아가도록 하는 역할을 합니다. 컴퓨터 비전의 가능성을 연구하면 실험 환경 안에서뿐만 아니라 그 밖에서도 실용화 할 수 있는 모델을 구축하는 일이 중요함을 깨달을 수 있습니다.
이미지 분류(Image Classification)란?
컴퓨터 비전 모델을 구축하는 과정은 여러 단계에 걸쳐서, 높은 수준의 엔지니어링과 및 수백·수천 개의 이미지가 필요한 정교한 과정입니다. 이러한 모델은 주어진 이미지마다 고도화된 알고리즘을 이용해서 라벨이나 태그를 할당하는 이미지 분류(Super AI Suite에서는 categorization으로 부릅니다.) 기술을 통해 각 이미지를 식별할 수 있도록 학습하게 됩니다. 이미지 분류는 모델을 학습시킬 때 이미 구축된 데이터셋을 활용합니다. 이러한 학습 과정에서 모델은 이미지에 맞는 라벨을 판단하기 위해서 각 이미지를 픽셀 단위로 분석하죠. 큰 그림으로 생각하면 이미지 분류는 컴퓨터 비전 모델에게 현실에서 발생하는 패턴과 행동 등을 가르쳐주는 것과 같습니다. 섬세한 학습 과정을 통해서 실용화하기 전에 높은 수준의 모델 정확도를 달성할 수 있죠.
이미지 분류의 핵심 요소들
이미지 분류는 머신 러닝이라는 난해한 파이의 한 조각에 지나지 않습니다. 분류 이외에도 컴퓨터 비전 기술에는 객체 탐지(object detection)와 객체 위치 식별(object localization)이라는 다른 핵심 부분들도 존재하죠. 컴퓨터 비전에서의 이러한 다양한 기술 사이의 차이를 아는 것은 머신러닝에 있어서 이미지 분류의 중요성과 분류 기술을 파악하는 데 중요합니다.
객체 위치 식별(object localization)과 객체 탐지(object detection)
머신 러닝 분야에서 안정적인 모델을 제작할 때는 여러 과정을 거칩니다. 정확한 데이터셋을 구축하기 위해 가장 중요한 과정은 이미지 분류지만, 객체 탐지와 객체 위치 식별 역시 그와 비등하게 중요한 역할을 합니다. 데이터 라벨링을 할 때 보통 이미지 내의 특정 객체를 바운딩 박스로 둘러서 감싸게 되는데, 이러한 과정을 객체 위치 식별이라고 부릅니다. 이미지 자체에 하나의 라벨을 부여하는 객체 분류와 달리, 이미지 안의 특정 객체마다 그 위치를 바운딩 박스로 정의해주는 것입니다.
예를 들면 물고기 한 마리가 물 속에 있는 사진은 ‘물고기’라고 라벨링 될 것입니다. 라벨러가 이 사진 속 물고기의 주위에 바운딩 박스로 영역을 잡는 순간 바로 객체 위치 식별의 과정이 발생했다고 볼 수 있습니다. 하지만 이러한 사진 한 장, 또는 다른 여러 장의 사진들 속에 라벨링이 필요한 객체가 하나가 아니라 여러 개가 있다면 어떻게 하면 될까요? 이것은 객체 탐지 기술이 적용되는 상황이며, 데이터 라벨링 과정에서 흔히 발생합니다.
이미지 어노테이션 작업은 크게 세 가지 부분(이미지 분류, 객체 위치 식별, 객체 탐지)으로 나누어 볼 수 있습니다. 이러한 프로세스 간의 차이를 잘 파악해두면 라벨링 팀은 데이터셋 내에서 서로 다른 이미지에 접근하는 방법을 보다 잘 이해할 수 있습니다. 데이터셋을 정확하게 분류하고 라벨링하는 것은 머신 러닝 모델을 구축하는 데 있어 핵심 구성 요소인데, 이를 달성하는 방법은 다양합니다. 따라서 가장 먼저 데이터셋 분류 전략을 세우는 것이 중요합니다.
지도 학습(Supervised Learning)
이미지 분류 과정에는 데이터셋을 구축하고 수정하기 위해 알고리즘을 기반으로 한 청사진이 필요합니다. 지도 학습은 컴퓨터 비전 분야에서 사용되는 시스템 중 가장 주목할 만 합니다. 이 시스템에서 모델은 기존에 구축한 데이터셋을 토대로 주어진 이미지들에 대한 학습을 진행합니다. 이 때 모델은 기존의 데이터셋으로 학습되었기에, 학습한 내용을 토대로 새로운 데이터셋에 적용하기 수월한 것이죠. 단순해 보이는 시스템이지만 모델이 정확하게 이미지를 라벨링하기 위해서는 많은 시행착오를 거쳐야 합니다.
지도 학습은 ‘Single-Label’과 ‘Multi-Label’이라는 두 가지 분류법으로 나누어집니다. Single-Label 분류는 이미지 내에 라벨링이 필요한 객체가 하나인 상황을 말합니다. 가장 흔하게 보이고 자주 사용되는 분류법이죠. 반면 Multi-Label 분류는 한 장의 이미지를 단일 그룹으로 묶을 수 없을 때 발생합니다. 이미지 내에 다양한 객체가 있어서 이미지 자체를 콕 집어서 분류할 수 없습니다. 예를 들어 건강에 여러 가지 이상이 있는 환자는 한 장의 이미지 안에서도 다양한 문제점이 나타날 수 있기 때문에 클래스를 다중으로 부여받을 수 있겠죠.
비지도 학습(Unsupervised Learning)
지도 학습이 이미 구축된 데이터셋에 의존한다면 비지도 학습은 그와 반대로 접근합니다. 비지도 학습과 같은 알고리즘을 이용하면, 데이터셋에서 패턴을 학습해서 주어지는 로우 데이터에 대한 결론을 도출하게 됩니다. 여전히 컴퓨터 비전 모델은 사람의 도움 없이 데이터를 분류할 수 있어야 하지만, 지도 학습처럼 이미지에 클래스를 부여하는 게 아니라 이미지를 클러스터로 배정하는 방식입니다. 이렇게 클러스터 작업을 통해 데이터는 여러 그룹으로 나누어집니다. 이후 머신 러닝 엔지니어는 BIRCH, 병합 군집(Agglomerative Clustering), K-평균(K-Means) 등 다양한 알고리즘을 통해 이러한 데이터를 여러 가지의 클래스로 나누는 방법을 찾게 됩니다.
합성곱 신경망(Convolutional Neural Networks)
컴퓨터 비전의 목표는, AI 모델이 다른 이미지를 "보고" 인간의 뇌를 모방하는 방식으로 그것들을 분류하도록 훈련시키는 것입니다. 인간의 발달 과정 중에서 우리는 반복적인 노출과 인지 학습을 통해 눈앞의 이미지를 판별할 수 있게 됩니다. AI 엔지니어가 만들어낸 머신 러닝 모델 역시 마찬가지입니다. 이는 합성곱 신경망(Convolutional Neural Network)을 통해 가능한데, 줄여서 CNN이라고 부릅니다. CNN은 미미한 정도의 사람의 개입만 가지고도 인간의 뇌 신경망처럼 행동하는 딥러닝 구조를 말합니다. 이 방식은 머신 러닝에 있어서 극도의 정확도와 동시에 효율 역시 가지고 있다고 입증됐죠.
주요 이미지 분류 메트릭
만약 정말 사람의 뇌와 같은 기능을 가진 모델을 만들려고 한다면, 각 모델이 얼마나 잘 작동하는지 관찰하는 것이 가장 중요할 것입니다. 모델이 시험을 통과하고 실생활에 적용 가능하게 하려면 먼저 고려해야 할 점이 있습니다. 정확도와 정밀도, 재현율, 그리고 F1 점수가 바로 그러한 메트릭입니다.
- 정확도 Accuracy
가장 기본적인 평가 지표는 정확도입니다. 이는 모델이 맞춘 예측의 수와 총예측 수의 비율을 말합니다.
이렇게 직관적인 계산 방식은 모델의 각 클래스 간의 데이터 분포가 균일할 때 유용합니다. 그렇지 않은 경우 계산 결과가 실제 데이터셋을 제대로 반영하지 않을 수 있습니다. 왜일까요? 특이도가 부족하기 때문입니다. 정확도는 false negative나 false positive 같은 오류 유형을 고려하지 않고 오직 정확한 예측 수만 확인합니다. 이 때문에 정밀도, 재현율 및 F1 점수와 같은 다른 메트릭을 대신 살펴보는 것이 더 유리할 수 있습니다.
- 정밀도 Precision
머신러닝 모델을 구축하는 데 있어 데이터 라벨링을 제외하고 가장 큰 어려움은 모델의 정확한 작동을 보장하는 것입니다. 따라서 ML 엔지니어들은 모델이 실험 환경 밖에서 실제 작업을 수행하기 전에 측정할 주요 지표를 찾는 것이 매우 중요합니다. 여기서 가장 먼저 측정해야 하는 메트릭은 정밀도입니다. 머신 러닝에서의 정밀도는 올바르게 분류된 positive class의 식별 비율이며, 다음과 같이 계산합니다.
정밀도를 계산하려면 여러 가지의 요소를 살펴봐야 합니다. true positives, 또는 positive class에서 positive로 올바르게 예측된 결과의 수와 true negatives, 또는 negative class에서 negative로 올바르게 예측된 결과의 수이죠. 또한 false positives, 또는 모델이 positive가 아닌데 positive class로 잘못 예측한 데이터의 수도 고려합니다.
- 재현율 Recall
다음은 재현율이라는 메트릭을 살펴봐야 합니다. 이 지표는 올바르게 분류된 positive class 식별의 비율을 확인합니다. 재현율의 수식은 다음과 같이 표현합니다.
위의 수식에서는 true positive의 수를 true positive와 false negative의 합으로 나눕니다. 재현율과 정밀도는 ML 엔지니어가 모델의 정확도를 확인할 때 꼭 고려해야 하는 메트릭입니다. 불행하게도 두 메트릭은 서로에게 직접적으로 영향을 미치는데, 긍정적인 방식이 아닙니다. 정밀도를 높이면 재현율이 떨어지거나 재현율을 높이면 정밀도가 떨어지는 경우가 태반이죠.
이와 같이 두 메트릭이 보통 반비례하는 경향이 있기 때문에 ML 엔지니어들은 F1 점수라는 지표를 확인합니다.
- F1 점수
수학 시간에 데이터나 숫자 집합의 추세를 표현하기 위해 평균값을 계산하는 법을 배우셨을 것입니다. 이처럼 F1 점수는 서로에게 영향을 주는 정밀도와 재현율을 숫자 하나로 표현하는 역할을 합니다. F1 점수를 계산하기 위해서는 다음과 같은 수식을 사용합니다.
F1 점수는 정밀도와 재현율을 균등하게 비교하기에 지표에 대한 귀중한 정보를 제공합니다. 또한 정밀도와 재현율에 대해 다음과 같은 정보를 알려주어 어떻게 모델을 조정해야 하는지 방향성을 제시합니다.
• F1 score가 높다면 정밀도와 재현율 모두 높습니다.
• F1 점수가 낮다면 정밀도와 재현율 모두 낮습니다.
• F1 점수가 중간 정도라면 정밀도와 재현율 중 한 지표수는 높고 다른 하나는 낮다는 것을 나타냅니다.
Suite에서 이미지 분류 작업하기
분류에 대해 어느 정도 배웠으니 이제 직접 데이터셋을 다뤄볼 준비가 되었습니다. 데이터 라벨링과 분류 작업을 어떻게 접근해야 하는지 이해하는 것이야말로 그 방식이 매뉴얼이 됐건 자동화가 됐건 성공적인 모델을 구축하기 위한 첫걸음입니다. 지도 학습이 라벨에 대한 완전한 통제권을 쥘 수 있어 그것이 유리한 프로젝트들에 유용하다면, 비지도 학습을 이용하는 게 더 나은 프로젝트들도 있겠죠. 어느 방식을 결정하느냐는 진행하고자 하는 프로젝트의 니즈와 지향하는 목표에 달렸습니다. Superb AI는 Suite에서 이미지 분류 작업이 얼마나 간단한지에 대해 소개하기 위해 단계별로 설명해주는 비디오 튜토리얼을 준비했습니다. 매뉴얼 데이터 라벨링을 진행하거나 커스텀 자동화 모델을 위해 정답 데이터(Ground Truth)를 구축하려는 목적 등 어느 쪽이든 성공적으로 모델을 구축 할 수 있는 툴을 제공합니다.
오토라벨링으로 이미지 분류용 AI 모델 학습시키기
이제 Superb AI Suite에서 이미지 분류용 자동화 모델을 만드는 과정을 들여다볼 시간입니다. 경험 수준에 상관없이 Superb AI를 통해서 몇 가지 간단한 단계만으로, 이미지 분류용 정답 데이터셋과 커스텀 오토라벨링 모델을 구축할 수 있습니다. 시작하기 위해서는 커스텀 오토라벨링 기능을 제공하는 Team 플랜 14일 무료 체험에 가입해야 합니다. 이후 나머지 과정은 아래와 같이 단순합니다.
1) 데이터를 업로드 해주세요. 이미 라벨링된 데이터를 업로드하거나 Superb AI의 라벨링 기능을 이용할 수 있습니다. 다음 단계로 진행하기 전, 사전에 라벨링된 이미지를 적어도 100개 이상 준비해 두는 것이 좋습니다.
2) 라벨링된 데이터를 내보내기 하세요. 이 기능을 위해서는 화면 왼쪽에 위치한 확장 메뉴에서 ‘Labels’를 클릭한 후, ‘Filter by’라고 적힌 부분 아래에 있는 체크 박스를 선택하세요. 모든 라벨이 선택될 것입니다. 이후 화면 오른쪽에 있는 ‘...’ 버튼을 클릭하고 ‘Export’를 누르면 됩니다.
3) 커스텀 오토라벨링 AI를 만드세요. Projects 메뉴의 사이드바에서 ‘Label Exports’ 버튼을 클릭하고 ‘Create a Custom Auto-Label AI’를 클릭하세요. 예상되는 소진 크레딧을 확인한 뒤 OK 버튼을 클릭하면 됩니다.
프로젝트의 사이드바에서 ‘Custom Auto-Label’을 선택해서 커스텀 오토라벨링 AI를 만들 수도 있습니다. 메뉴 화면 오른쪽 구석에 보면 ‘+Create Custom Auto-Label AI’라고 적혀있는 부분이 있습니다. 그것을 클릭한 뒤 내보내기 한 목록에서 원하는 데이터셋을 선택하세요. ‘Confirm’ 버튼을 눌러서 소진 예정 크레딧과 남은 크레딧을 확인한 뒤 다시 버튼을 눌러주세요. 마지막으로 카드 오른쪽에 위치한 ‘Apply’ 버튼을 눌러주면 됩니다. 카드를 클릭하면 크기를 확장해서 정확도와 재현율 평가 결과를 알 수 있습니다.
4) 커스텀 오토라벨링 AI가 적용되면 결과를 확인하고 오류 수정을 하는 과정을 반복해주세요. 완벽한 모델과 높은 품질의 정답 데이터셋을 얻기 위해서 필요한 만큼 반복하는 것을 권장드립니다.
마치며
이미지 분류는 머신 러닝 알고리즘 구축에 있어서 필수 과정입니다. 모델은 지도 학습과 CNN을 활용하거나 비지도 학습을 이용하게 됩니다. 어느 방식이 더 적합한지는 사용할 데이터와 달성하려는 목적, 그리고 워크플로우에 달려있습니다. Superb AI는 이미지 분류가 ML 모델 구축 과정 중 직관적인 과정이 되는 것을 목표로 합니다. 고객의 전문성에 자동화의 편리성을 더해서 모델을 학습시키는 것입니다. Superb AI의 커스텀 오토라벨링 AI를 통해 데이터를 매뉴얼로 라벨링할 때 발생하는 병목 현상을 줄이고, 워크플로우의 속도를 향상하는 손쉬운 기술을 적용하여 그 어느 때보다도 빠르게 이미지를 분류해보세요.