본문 바로가기
딥러닝실무응용/딥러닝

[인공지능과 경영] 03 :: 딥러닝 개요

by udeserveit1 2024. 8. 30.

딥러닝 개요

음성 인식, 이미지 식별 또는 예측 등 사람의 작업을 대신 수행하도록 컴퓨터를 학습시키는 일종의 머신러닝을 의미
딥러닝의 핵심 요소인 신경망이미 문자 언어를 처리하고 분석하는 데 사용
자연어 처리를 통해 텍스트 마이닝 기술은 고객의 불만 사항이나 진료기록, 뉴스, 보고서 등에서 특징적인 패턴을 발견하는 데 유용하게 사용

 

ANN(Artificial NeuralNetwork)
DNN(Deep Neural Networks)
CNN(Convolutional Deep Neural Networks)
RNN(Recurrent Neural Network)
DBN(Deep Belief Networks)

 

인공신경망(Artificial Neural Network)

 

 

ANN 문제점

 

 - 첫째, 학습 과정에서 파라미터의 최적값을 찾기 어려움

 

- Overfitting에 따른 문제로 학습 시간이 너무 느림

 

ANN을 보완

심층 신경망(Deep Neural Network)

심층 신경망이란 입력층과 출력층 사이에 여러 개의 은닉층으로 이루어진 신경망을 의미
 

합성곱신경망(Convolutional Neural Network)

-합성곱 신경망은 시각적 영상을 분석하는 데 사용되는 다층의 피드-포워드적인 인공신경망의 한 종류

- 기존의 방식은 데이터에서 지식을 추출해 내고 이를 통해 학습이 이루어졌지만, CNN은 데이터의 특징을 추출하고 패턴을 파악하는 구조로 CNN 알고리즘은 Convolution 과정Pooling 과정을 통해 수행

 

- Convolution Layer와 Pooling Layer를 복합적으로 구성하여 알고리즘을 만듦
 

 

 

예제)

ChatGpt 를 이용한 CNN 신경망으로 그림판의 숫자 맞는지 확인

import numpy as np
from tensorflow.keras.preprocessing import image

# 이미지 불러오기
img_path = 'number.png'  # 그림판에서 저장한 이미지 경로
img = image.load_img(img_path, target_size=(28, 28), color_mode="grayscale")

# 이미지 전처리
img = image.img_to_array(img)
img = np.expand_dims(img, axis=0)
img = img.astype('float32') / 255

# 모델 불러오기
model = tf.keras.models.load_model('mnist_cnn_model.h5')

# 예측
prediction = model.predict(img)
predicted_digit = np.argmax(prediction)
print(f"예측된 숫자: {predicted_digit}")

# 모델 저장 (Keras 형식)
model.save('mnist_cnn_model.keras')

 

3. 그림판에서 숫자 작성 후 맞는지 확인

이 부분에서는 사용자가 그림판에서 작성한 숫자를 모델이 맞출 수 있는지 확인하는 루틴을 구현합니다.

그림판에서 숫자 가져오기 및 예측

  1. 그림판에서 숫자 그리기:
    • 숫자를 그림판에 그린 후, .png 형식으로 저장합니다.
    • 예를 들어, "number.png"로 저장합니다.
  2. 이미지 불러와서 예측: Python에서 이미지를 불러와 CNN 모델을 통해 예측합니다.
 
import numpy as np
from tensorflow.keras.preprocessing import image

# 이미지 불러오기
img_path = '7.png'  # 그림판에서 저장한 이미지 경로
img = image.load_img(img_path, target_size=(28, 28), color_mode="grayscale")

# 이미지 전처리
img = image.img_to_array(img)
img = np.expand_dims(img, axis=0)
img = img.astype('float32') / 255

# 모델 불러오기
model = tf.keras.models.load_model('mnist_cnn_model.h5')

# 예측
prediction = model.predict(img)
predicted_digit = np.argmax(prediction)
print(f"예측된 숫자: {predicted_digit}")