텐서플로우 딥러닝 (CNN)
본 내용은
"
텐서플로우 딥러닝 (CNN)
"
의 원문 자료에서 일부 인용된 것입니다.
2023.03.30
문서 내 토픽
  • 1. 데이터 세트
    학습 데이터에 사용할 영상은 Google에서 이미지 검색으로 꽃을 검색하고, FatKun이라는 크롬 확장 프로그램을 사용하여 영상을 다운로드 받았다. 테스트 데이터에 사용할 영상은 꽃을 직접 구입하여 촬영한 영상 데이터를 사용했다. 학습 데이터는 총 234개, 테스트 데이터는 총 150개이며, 검증 데이터는 훈련데이터의 20%를 사용하여 총 57개이다.
  • 2. 합성곱 신경망 (CNN)
    기본적으로 이미지 분류를 하기 위해서는 합성 곱 신경망(CNN)이 필요하다. 2차원 CNN의 특징 추출 부분은 MaxPool2D층과 Conv2D층을 반복하여 구성하고, 분류를 위한 출력층은 완전 연결 Dense 층으로 구성한다. CNN은 합성 곱 층과 풀링 층을 반복적으로 사용하여 훈련 데이터의 특징을 학습하고, 완전 연결 Dense 층을 출력층으로 사용하여 분류한다. 함수형 API로 모델을 구성하면 다중 입력과 다중 출력을 갖는 모델을 만들어 다양한 구조의 모델을 생성할 수 있다.
  • 3. 이미지 데이터 증강
    구글에서 크롤링한 학습 데이터 이미지들과 직접 촬영한 테스트 데이터 이미지들은 서로 각기 다른 size를 가지고 있다. ImageDataGenerator()는 배치 크기의 실시간 영상확장(이동, 회전, 줌 등) generator이다. Python의 generator 함수를 사용하면, 미리 모든 데이터를 생성하여 메모리에 로드하지 않아도, model.fit()에서 배치 데이터가 필요할 때마다 배치 데이터를 얻을 수 있다는 장점이 있다. 또한 데이터 영상들을 따로 resize할 필요가 없다는 크나 큰 장점이 있다.
  • 4. 모델 평가
    model.predict()로 train_generator를 y_pred로 예측하고, y_label을 계산한다. train_generator.labels과 y_label을 이용하여 컨퓨전 행렬 C를 계산하고, model.evaluate()로 train_generator와 test_generator를 평가한다. 훈련 데이터의 정확도는 96%, 테스트 데이터의 정확도는 86% 정도 되는 것을 알 수 있다.
  • 5. 결과 시각화
    loss, train accuracy, validation accuracy의 history를 matplotlib.pyplot을 통해 그래프로 나타낸다. 그래프의 x축은 epochs, y축은 loss를 나타낸다. 시간이 경과함에 따라 손실함수가 감소하고, 정확도가 증가하는 것으로 볼 때 학습이 성공적으로 진행되고 있다는 것을 알 수 있다.
Easy AI와 토픽 톺아보기
  • 1. 데이터 세트
    데이터 세트는 기계 학습 모델 개발의 핵심 요소입니다. 데이터 세트의 품질과 다양성은 모델의 성능에 직접적인 영향을 미치므로, 데이터 세트 구축 및 관리는 매우 중요합니다. 데이터 세트는 모델 학습, 검증, 테스트에 사용되며, 데이터의 편향성, 노이즈, 불완전성 등을 최소화하는 것이 중요합니다. 또한 데이터 세트의 크기와 대표성도 모델 성능에 큰 영향을 미치므로, 이를 고려하여 데이터 세트를 구축해야 합니다. 데이터 세트 관리는 기계 학습 프로젝트의 성공을 위한 필수적인 요소라고 할 수 있습니다.
  • 2. 합성곱 신경망 (CNN)
    합성곱 신경망(CNN)은 이미지 및 비디오 데이터 분석에 널리 사용되는 딥러닝 모델입니다. CNN은 이미지의 공간적 특성을 효과적으로 학습할 수 있으며, 이를 통해 이미지 분류, 객체 탐지, 세그멘테이션 등 다양한 컴퓨터 비전 문제를 해결할 수 있습니다. CNN은 합성곱 층, 풀링 층, 완전 연결 층 등의 구조로 이루어져 있으며, 이를 통해 이미지의 저수준 특징부터 고수준 의미 특징까지 효과적으로 학습할 수 있습니다. 최근에는 ResNet, VGGNet, Inception 등 다양한 CNN 아키텍처가 개발되어 이미지 분석 분야에서 뛰어난 성능을 보이고 있습니다. CNN은 이미지 데이터 분석에 있어 매우 강력한 도구로 자리잡고 있습니다.
  • 3. 이미지 데이터 증강
    이미지 데이터 증강은 기계 학습 모델의 성능 향상을 위해 매우 중요한 기법입니다. 이미지 데이터 증강은 기존 이미지 데이터를 변형하여 새로운 이미지 데이터를 생성하는 것으로, 이를 통해 모델의 일반화 성능을 높일 수 있습니다. 대표적인 이미지 데이터 증강 기법으로는 회전, 이동, 크기 변경, 대칭, 노이즈 추가 등이 있습니다. 이러한 기법들을 통해 모델이 다양한 형태의 이미지 데이터를 학습할 수 있게 되어, 실제 환경에서의 성능 향상으로 이어질 수 있습니다. 특히 데이터가 부족한 경우 이미지 데이터 증강은 매우 효과적인 방법이 될 수 있습니다. 따라서 이미지 데이터 증강은 컴퓨터 비전 분야에서 필수적인 기법이라고 할 수 있습니다.
  • 4. 모델 평가
    모델 평가는 기계 학습 프로젝트에서 매우 중요한 단계입니다. 모델 평가를 통해 모델의 성능을 객관적으로 측정하고, 모델 개선을 위한 방향을 설정할 수 있습니다. 대표적인 모델 평가 지표로는 정확도, 정밀도, 재현율, F1 점수 등이 있습니다. 이러한 지표들은 모델의 분류 성능, 예측 정확성, 오분류 비율 등을 나타냅니다. 또한 교차 검증, 홀드아웃 검증 등의 기법을 통해 모델의 일반화 성능을 평가할 수 있습니다. 모델 평가 결과를 바탕으로 모델 구조, 하이퍼파라미터, 데이터 전처리 등을 개선하여 모델 성능을 향상시킬 수 있습니다. 따라서 모델 평가는 기계 학습 프로젝트의 핵심 단계라고 할 수 있습니다.
  • 5. 결과 시각화
    결과 시각화는 기계 학습 프로젝트에서 매우 중요한 부분입니다. 시각화를 통해 모델의 성능, 예측 결과, 학습 과정 등을 직관적으로 이해할 수 있기 때문입니다. 대표적인 시각화 기법으로는 정확도 곡선, 혼동 행렬, 클래스 별 성능 지표, 모델 구조 시각화 등이 있습니다. 이러한 시각화 기법을 통해 모델의 강점과 약점을 파악하고, 모델 개선을 위한 방향을 설정할 수 있습니다. 또한 시각화된 결과를 통해 모델의 동작 원리를 이해하고, 모델의 신뢰성을 높일 수 있습니다. 따라서 결과 시각화는 기계 학습 프로젝트에서 필수적인 단계라고 할 수 있습니다.