[python] scikit-learn을 이용한 이미지 분류

이미지 분류는 기계 학습의 중요한 응용 분야입니다. 이 문서에서는 scikit-learn을 사용하여 이미지를 분류하는 방법에 대해 알아보겠습니다.

필요한 패키지 설치

scikit-learn을 사용하기 위해 먼저 해당 패키지를 설치해야 합니다. 아래의 명령어를 사용하여 설치할 수 있습니다.

pip install scikit-learn

이미지를 다루기 위해 추가로 Pillow 패키지도 설치해야 합니다.

pip install Pillow

데이터 로드

먼저 이미지 데이터를 로드해야 합니다. scikit-learn은 내장된 이미지 데이터셋을 제공하여 테스트 용도로 사용할 수 있습니다.

from sklearn.datasets import load_digits

digits = load_digits()
X = digits.images
y = digits.target

# 데이터 확인
print("이미지 개수:", len(X))
print("이미지 형태:", X[0].shape)
print("라벨:", y[0])

이미지 전처리

데이터를 분석하기 전에 이미지를 전처리하는 것이 일반적입니다. 이미지 전처리의 목적은 노이즈 제거, 이미지 크기 조정, 특징 추출 등입니다.

예를 들어, 아래의 코드는 이미지를 8x8 크기로 조정합니다.

from skimage.transform import resize

X_resized = []
for image in X:
    new_image = resize(image, (8, 8))
    X_resized.append(new_image)

X_resized = np.array(X_resized)

데이터 분할

전체 데이터를 학습과 테스트용으로 분할해야 합니다. 일반적으로는 70-30 또는 80-20 비율로 분할합니다.

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X_resized, y, test_size=0.3, random_state=42)

모델 학습

분류 모델을 생성하고 학습합니다. 여기서는 RandomForestClassifier를 사용합니다.

from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier()
clf.fit(X_train, y_train)

모델 평가

모델의 성능을 평가합니다. 여기서는 정확도를 사용합니다.

from sklearn.metrics import accuracy_score

y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("정확도:", accuracy)

결론

scikit-learn을 사용하여 이미지 분류를 수행하는 방법에 대해 알아보았습니다. 이미지 전처리, 데이터 분할, 모델 학습 및 평가 과정을 간단히 소개했습니다. scikit-learn은 다양한 기계 학습 알고리즘과 편리한 함수들을 제공하여 이미지 분류 작업을 쉽게 수행할 수 있습니다.

참고문헌