본문 바로가기
OrangeDataMining

CNN을 활용한 이미지 분류 실습 (MNIST, CIFAR-10)

by learningflix 2025. 5. 5.
반응형

CNN을 활용한 이미지 분류 실습 (MNIST, CIFAR-10)

지금 당장 손글씨 숫자와 귀여운 동물 사진을
딥러닝으로 구분할 수 있다면 믿으시겠어요?
Orange Data Mining만 있으면 가능합니다!
반응형

https://inf.run/mg1G5

 

Next.js 15: Full-Stack Development| 구멍가게코딩단 - 인프런 강의

전통적인 React 개발 방식과 Next.js를 이용해서 개발하는 방식은 전혀 다릅니다. 이 강의는 최신 Next.js 15의 핵심을 꿰뚫고, '진짜' Next.js다운 개발 방식을 알려드립니다. 취업 포트폴리오부터 실무

www.inflearn.com

 

안녕하세요~ 😊
오늘은 CNN(합성곱 신경망)을 실제로 이미지 분류 문제에 어떻게 활용할 수 있는지 실습을 통해 알아볼 거예요. 특히, MNISTCIFAR-10이라는 대표적인 이미지 데이터셋을 이용해서 딥러닝 모델이 이미지를 어떻게 이해하고 분류하는지를 직접 경험해볼 겁니다. 이론만으로는 막연했던 딥러닝이, 손에 잡히는 현실로 느껴지는 순간을 함께 만들어봐요!

1. MNIST와 CIFAR-10 데이터셋 소개 📊

먼저 우리가 사용할 MNISTCIFAR-10이라는 두 데이터셋을 간단히 소개할게요. 이 두 가지는 딥러닝 모델이 잘 작동하는지 실험하고 비교할 때 아주 많이 쓰이는 대표적인 이미지 데이터셋이에요. 초보자부터 전문가까지 누구나 한 번쯤은 다뤄보는 데이터랍니다!

MNIST란 무엇인가요?

MNIST는 미국 고등학교 학생들이 손으로 쓴 숫자(0~9)를 28x28 픽셀의 흑백 이미지로 저장한 데이터셋이에요. 총 7만 개의 이미지가 있고, 그중 6만 개는 학습용, 1만 개는 테스트용이에요. 이미지를 시각적으로 분석하고 분류 모델을 훈련시키기에 아주 좋은 데이터죠.

항목 내용
이미지 크기 28 x 28 픽셀
채널 흑백(1채널)
클래스 수 10개 (0~9 숫자)
데이터 수 70,000개

CIFAR-10은 또 뭔가요?

CIFAR-10은 조금 더 복잡한 데이터셋이에요. 무려 컬러 이미지가 포함되어 있고, 해상도는 32x32 픽셀이에요. 총 10가지 카테고리로 나뉜 이미지들이 있고요, 예를 들면 비행기, 자동차, 개, 고양이, 배 등등 다양한 사물이 등장합니다. 딥러닝 모델이 더 정교해질 수밖에 없겠죠!

  • 이미지 크기: 32 x 32 픽셀
  • 채널: RGB (3채널)
  • 클래스 수: 10개 (비행기, 자동차, 개, 고양이, 배 등)
  • 데이터 수: 60,000개 (학습용 50,000 + 테스트용 10,000)

이제 두 데이터셋이 어떤 특징을 가지고 있는지 이해했으니, 다음 단계에서는 Orange Data Mining에서 이들을 어떻게 활용할 수 있는지 실습 준비를 해볼게요!

2. Orange에서 CNN 실습 워크플로우 설계 🛠️

지금부터는 Orange Data Mining 툴에서 이미지 분류를 위한 CNN 실습을 어떻게 설계하는지 함께 따라가 볼 거예요. Orange는 시각적인 워크플로우로 머신러닝과 딥러닝을 학습할 수 있어서 코딩이 부담스러운 분들에게 정말 강력한 도구랍니다!

🧩 Orange 환경 준비하기

  • Orange 설치 및 실행 (공식 웹사이트: orangedatamining.com)
  • Image Analytics 애드온 설치 (Add-ons 메뉴에서 설치)

🔧 CNN 이미지 분류 워크플로우 기본 구성

Orange에서 CNN을 직접 코딩하지는 않지만, Image Embedding 기능을 활용해 이미지 데이터를 벡터로 변환하고, 그걸 분류기(Classification)로 학습시키는 구조로 딥러닝 실습을 할 수 있어요.

위젯 기능
Import Images 이미지 데이터셋 불러오기 (폴더 단위)
Image Embedding 이미지를 벡터 특성으로 변환 (사전 훈련된 딥러닝 모델 사용)
Classification 변환된 벡터로 머신러닝 모델 학습 (로지스틱 회귀, 결정트리 등 선택 가능)
Test & Score 모델 성능 평가 (정확도, AUC 등)
Confusion Matrix 클래스별 예측 정확도 분석

이런 워크플로우를 통해 Orange에서도 CNN 기반 이미지 분류를 직관적으로 학습하고 실험할 수 있답니다. 다음 단계에서는 실제 데이터(MNIST)로 실습을 진행해볼게요!

3. MNIST 이미지 분류 실습 👟

드디어 실습입니다! 🧑‍💻 이번에는 손글씨 숫자 이미지로 유명한 MNIST 데이터셋을 Orange에서 불러와 분류 모델을 훈련시키고 평가해볼 거예요. 아래 순서를 따라하면 딥러닝의 기본 흐름을 자연스럽게 익힐 수 있어요.

📥 1단계: 데이터 불러오기

  • Import Images 위젯에서 MNIST 이미지 폴더 선택
  • 이미지 라벨은 0~9의 폴더명으로 자동 설정

📊 2단계: 이미지 임베딩 처리

Image Embedding 위젯을 연결하여 이미지들을 벡터로 변환해요. Orange는 이 단계에서 내부적으로 SqueezeNet과 같은 사전 학습된 CNN을 활용해 이미지의 특징을 뽑아냅니다.

🧠 3단계: 분류 모델 학습

이제 Classification 위젯을 연결해 분류 모델을 학습합니다. MNIST는 비교적 단순한 이미지이기 때문에 로지스틱 회귀나 결정트리만으로도 꽤 괜찮은 성능이 나와요.

사용 가능한 모델

  • 로지스틱 회귀 (Logistic Regression)
  • 결정 트리 (Decision Tree)
  • 랜덤 포레스트 (Random Forest)

✅ 4단계: 모델 평가 및 결과 확인

Test & ScoreConfusion Matrix를 연결해서 성능을 평가해보세요. 정확도(Accuracy), AUC, 정밀도 등 다양한 지표를 확인할 수 있고, 어느 숫자가 자주 오분류되는지도 분석할 수 있어요.

이처럼 단순한 이미지 분류지만 CNN 기반의 임베딩이 얼마나 강력한지 직접 체험해볼 수 있어요. 다음 단계에서는 더 어려운 데이터셋인 CIFAR-10으로 넘어가볼게요!

4. CIFAR-10 이미지 분류 실습 🐶🚗🛩️

이번에는 난이도를 한 단계 올려볼까요? 😎 MNIST보다 복잡하고 컬러풀한 이미지들이 가득한 CIFAR-10 데이터셋을 사용해서 분류 모델을 만들어볼 거예요. 이제 진짜 CNN의 힘이 필요한 타이밍이죠!

📥 CIFAR-10 데이터 준비

CIFAR-10은 공식적으로 Python 형식의 데이터셋으로 배포되지만, Orange에서 사용하려면 클래스별 폴더 형태로 이미지를 변환해 구성해야 해요. 예를 들어, 아래처럼 각 이미지가 폴더에 들어 있어야 합니다:

  • ./cifar10/airplane/
  • ./cifar10/dog/
  • ./cifar10/ship/

이렇게 구성한 후 Import Images 위젯으로 폴더를 통째로 불러오면 됩니다!

🧠 CNN 기반 분류 흐름

워크플로우 구성은 MNIST와 동일하지만, 이미지의 복잡도와 색상 정보 때문에 분류 정확도는 상대적으로 낮을 수 있어요. 그러니 다음과 같은 팁을 활용해 보세요:

  • Feature Scoring으로 임베딩 후 특징 중요도 분석
  • 여러 분류기 비교 (SVM, Random Forest, Neural Network)
  • 오분류 이미지 분석: 어떤 클래스가 혼동되는지 확인

CIFAR-10은 초보자에게 도전적인 데이터셋이지만, Orange의 강력한 시각화 도구를 활용하면 충분히 구조를 파악하고 성능을 향상시킬 수 있어요. 다음 파트에서는 모델 평가에 대해 본격적으로 다뤄볼게요!

5. 모델 성능 평가와 결과 시각화 📈

이미지 분류 모델을 만들었다면, 그 다음은 성능 평가가 필수죠! 모델이 얼마나 정확하게 이미지를 분류했는지, 어떤 클래스에서 오분류가 자주 발생했는지를 분석하면, 모델 개선 방향도 명확해져요.

🧪 Test & Score로 정확도 측정하기

Orange의 Test & Score 위젯을 이용하면 다양한 평가 지표를 손쉽게 확인할 수 있어요. 각 모델별로 아래와 같은 결과가 출력됩니다:

지표 설명
Accuracy 전체 예측 중 올바르게 분류된 비율
AUC 모델의 분류 능력을 확률적으로 측정
F1 Score 정밀도와 재현율의 조화 평균

📊 Confusion Matrix로 오분류 분석하기

모델 성능의 깊이를 보려면 Confusion Matrix 위젯이 필수예요. 이 매트릭스를 보면 어떤 클래스가 어떤 클래스와 혼동되었는지 정확히 알 수 있어요.

  • 비행기 vs 새, 개 vs 고양이 등 유사 클래스 간 오분류 주의
  • 가장 많이 헷갈린 클래스는 향후 개선의 핵심!

📈 ROC Curve, 시각화까지 완벽하게!

ROC Curve 위젯을 추가하면, 클래스별로 모델의 분류 경계가 얼마나 잘 설정되어 있는지도 확인할 수 있어요. 곡선 아래 면적(AUC)이 1에 가까울수록 성능이 좋다는 뜻입니다.

이제 모델을 잘 평가하고 결과를 해석할 수 있는 능력까지 갖췄네요! 마지막으로, 실전에서 정말 유용한 팁들과 확장 아이디어를 정리해볼게요 ✨

6. 실전에서 유용한 팁과 확장 아이디어 💡

여기까지 따라오셨다면, 여러분은 이제 이미지 분류의 흐름을 머리로만이 아니라 손으로도 익힌 상태입니다! 하지만 여기서 멈추기엔 살짝 아쉽죠? 🧐 현업에서 또는 프로젝트로 발전시키기 위한 실전 팁과 확장 아이디어들을 정리해드릴게요.

📌 실전 팁 모음

  • 데이터 전처리 중요성: 이미지 크기 맞춤, 노이즈 제거, 색상 통일 등
  • 사전 학습된 모델 적극 활용: SqueezeNet 외에도 MobileNet 등 선택 가능
  • 예측 결과 저장하기: Orange의 Data Export 기능을 활용해 CSV 저장 가능

🌱 확장 아이디어 제안

아래 아이디어들은 블로그나 포트폴리오로 발전시키기에 딱 좋아요:

  1. 🧠 나만의 이미지 데이터셋 만들기: 고양이 표정, 꽃 종류, 음식 사진 등 흥미 주제로 진행
  2. 📸 스마트폰 사진 분류기: 폰 갤러리 사진을 자동 분류하는 프로젝트 도전!
  3. 🔍 오분류 원인 분석 리포트: 왜 분류가 틀렸는지 이미지와 함께 정리
  4. 🤖 Flask + Orange로 웹앱 만들기: 모델 결과를 웹으로 보여주는 간단 서비스 구성

이제 여러분은 단순히 ‘이미지 분류를 해봤다’에서 그치지 않고, 직접 기획하고 활용할 수 있는 단계에 와 있어요. 실습을 넘어서 현업에서 쓰이는 방향까지 한 발 더 나아가 보세요!

마무리하며 🧩

여기까지 함께 해주셔서 감사합니다! 오늘 우리가 다룬 주제는 단순한 기술 실습을 넘어, 딥러닝이라는 기술이 어떻게 이미지를 이해하고 판단하는지에 대한 핵심 흐름을 체험하는 시간이었어요. MNIST처럼 단순한 이미지부터 CIFAR-10처럼 복잡한 컬러 이미지까지, Orange를 통해 직접 해보니까 훨씬 이해가 쉬우셨죠?

이제 여러분은 다음과 같은 능력을 갖추게 되었습니다:

  • CNN 기반 이미지 분류 실습을 Orange에서 구현 가능
  • 분류 성능을 평가하고 오분류 분석까지 수행 가능
  • 이미지 분류를 실무 프로젝트로 확장할 수 있는 응용력

딥러닝은 어렵게만 느껴졌지만, 오늘 실습을 통해 조금은 친숙해졌기를 바랍니다. 다음 편에서는 전이 학습(Transfer Learning)을 활용한 더욱 강력한 이미지 인식 실습을 준비 중이니, 기대해주세요!

반응형