@@@ 인공지능/수학·통계를 몰라도 이해할 수 있는 쉬운 딥러닝

2 - 1. 이미지 분류(Classification) 기법 활용하기(6)

HTG 2021. 7. 17. 14:53
728x90

2-1-6. AI는 가위바위보를 할 수 있을까?

데이터 살펴보기

데이터 - 가위, 바위, 보 사진이 각각 964장씩 준비.

데이터의 픽셀값을 0 ~ 1 사이로 노멀라이즈.

 

●어떤 인공지능 사용?

5층짜리 CNN, Flatten, 2층짜리 FNN

이전의 예제와 출력층을 제외하고 같은 인공지능.

층수 종류 크기 활성화 함수
1층 CNN 16, (3, 3) ReLu
- MaxPool (2, 2) -
2층 CNN 32, (3, 3) ReLu
- MaxPool (2, 2) -
3층 CNN 64, (3, 3) ReLu
- MaxPool (2, 2) -
4층 CNN 64, (3, 3) ReLu
- MaxPool (2, 2) -
5층 CNN 64, (3, 3) ReLu
- MaxPool (2, 2) -
6층 Flatten - -
7층 FNN 128 ReLu
8층 FNN 3 SoftMax

출력층의 경우 '가위', '바위', '보' 3가지이므로 크기가 3. 활성화 함수는 SoftMax를 사용.

 

●딥러닝 코딩

- 인공신경망 제작

이전과 비슷

 

- 인공신경망 컴파일

옵티마이저(optimizer) - Adam

메트릭(metrics) - accuracy

로스(loss) - sparse_categorical_crossentropy

 

●인공지능 학습

- 인공신경망 학습

 

- 학습 결과 출력

그래프로 출력

 

●인공지능 학습 결과 확인

- 인공지능 성능 확인하기

저자의 경우 정확도가 100%에 육박. 정확하게 분류 성공.

나의 경우에도 정확도 100%

 

- 학습 기록 확인하기

빨간 선이 train, 파란 선이 test

 

저자의 경우

Loss와 Accuracy 모두 2에포크 이후 거의 완벽에 가까운 수치

성능이 굉장히 뛰어남.

 

나의 경우

Loss와 Accuracy 모두 2에포크 이후 거의 완벽에 가까운 수치

성능이 굉장히 뛰어남.

 

 

 

- DCNN, 인코더-디코더

CNN은 이미지 정보를 축소.

필터를 적용한 이미지의 사이즈가 원본보다 작아지기 때문.

CNN의 반대인 DCNN(Deconvolutional Neural Network, 혹은 Transpose Convolutional Neural Network)도 있음.

DCNN은 이미지를 확대하는 용도로 주로 사용.

CNN을 이용하여 이미지를 압축하고, 다시 DCNN을 활용하여 이미지를 확대하는 방식이 의외로 굉장히 많이 사용.

이러한 시도는 사진의 노이즈를 제거하거나, 저화질 이미지를 고화질 이미지로 변환하는 등 이미지를 입력해 이미지를 출력하는 AI를 만들 때 유용.

CNN을 활용하여 이미지의 크기를 압축하는 과정을 인코터(encoder)라고 부르고, DCNN 등을 활용하여 이미지의 크기를 다시 확장하는 과장을 디코더(decoder)라고 부름. 

뒤에서 살펴볼 U-Net은 튿수한 구조의 인코더-디코더 구조.

 

- 모델 크기 줄이기

AI의 성능이 높은 것을 보니 이번에도 축소해도 될거 같음. 경제적으로 이득을 보기위해 인공지능 크기를 줄이자.

 

 

1층 줄이기

1층을 줄여서 비슷한 성능을 얻음.

 

2층 줄이기

2층을 줄여도 비슷한 성능을 보임.

 

3층 줄이기

3층을 줄여도 비슷한 성능을 보임.

신기하군.