티스토리 뷰

[딥러닝 express]의 연습문제 10장 풀이입니다. (개인적인 풀이기에 오답이 있을 수 있습니다!)

 

 

Google의 colab에서 실행합니다.

 

 

Google Colaboratory

 

colab.research.google.com

 

 


 

컨볼루션 신경망 (CNN : Convolutional Neural Network)

CNN은 앞서 살펴보았던 신경망들과는 다르게 특징맵이라는 여러 개의 층으로 구성되어 있습니다. 각 특징맵은 부분적으로만 연결되어 있으며 데이터의 특징을 추출하는 역할을 합니다. 이러한 구조는 고양이의 시각세포가 움직이는 물체를 볼 때 특정 부분만 활성화되는 현상에서 아이디어를 얻어 고안되었습니다. 

 

 

 

특징맵은 컨볼루션서브샘플링(풀링)이라는 연산을 반복하며 생성됩니다. 이 과정에서 데이터의 특징이 심층적으로 추출됩니다.( 입력단에서 멀어질수록 고급 특징들이 추출된다.) 마지막엔 완전히 연결되어있는 전통적인 분류 신경망이 연결되어있어 추출한 특징들을 바탕으로 물체를 인식합니다. 때문에 DNN과 같이 인간이 직접 특징을 추출한 필요가 없으며 이미지처리에서 뛰어난 성능을 보여줍니다.

 

 


 

 

3. 본문에서 컨벌루션 신경망으로 CIFAR-10 데이터 세트를 인식하는 프로그램을 소개하였다. CIFAR-10데이터 세트를 기본적인 심층 신경망으로 처리하는 프로그램을 작성해 보자. 이것과 본문의 컨벌루션 버전을 비교해 보자. 어떤 쪽이 더 성능이 높은가?

 

 

CIFAR-10 데이터에 대해 CNN과 DNN으로 학습해 성능을 비교해 보았습니다. CNN의 경우 훈련데이터 학습때보다 테스트 데이터에 대한 정확도가 떨어져 과적합 상태가 우려되나 그럼에도 DNN보다 높은 정확도를 확인할 수 있습니다.

CNN의 성능이 DNN보다 뛰어납니다.

 

 

 

 

 

 

 

8. 사전 학습된 ConvNet, ResNet, MobileNet과 같은 케라스 애플리케이션 중에서 하나를 선택하여, 다양한 인터넷 사진을 인식하는 프로그램을 작성해보자.

 

 

tf.keras.applications.mobilenet_v2.MobileNetV2  |  TensorFlow v2.10.0

Instantiates the MobileNetV2 architecture.

www.tensorflow.org

위 사이트를 참고해 MobileNetV2 모델을 구축하고 예측할 수 있도록 코드를 작성하였습니다.

 

 

/content/data/ 디렉토리를 생성하고 몇 개의 이미지를 업로드해 테스트한 결과는 다음와 같습니다.

 

예측 top3 : [('n02690373', 'airliner', 0.89429253),
      ('n04592741', 'wing', 0.023297708),
          ('n04552348', 'warplane', 0.02016794)]
예측 top3 : [('n07747607', 'orange', 0.99828726),
     ('n07749582', 'lemon', 0.0006361571),
       ('n07753592', 'banana', 3.6624624e-05)]
예측 top3 : [('n11939491', 'daisy', 0.91993344),
  ('n02219486', 'ant', 0.0068589365),
          ('n03457902', 'greenhouse', 0.006275666)]
예측 top3 : [('n03991062', 'pot', 0.4877389),
  ('n04522168', 'vase', 0.15184432),
     ('n03443371', 'goblet', 0.034238264)]

 

 

 

 

 

 

 

 

9. 구글 텐서플로우 사이트에는 약 3700장의 꽃 사진 데이터 세트가 있다. 이 데이터 세트에서는 3700 장의 사진을 5종(daisy, dandelion, roses, sunflowers, fulips)으로 분류한다. 컨벌루션 신경망을 이용하여서 이들 꽃을 분류하는 프로그램을 작성해보자.  https://www.tensorflow.org/tutorials/images/classification 를 참고한다.

 

 

이미지 분류  |  TensorFlow Core

이미지 분류 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 튜토리얼은 꽃 이미지를 분류하는 방법을 보여줍니다. keras.Sequential 모델을 사용하여 이미지

www.tensorflow.org

 

 

사이트를 참고하여 위와 같이 코드를 작성하고 학습을 진행해 보았습니다. 손실함수의 값이 어느 순간 줄지 않으며 훈련데이터에 비해 테스트 데이터의 정확률이 떨어져 과적합이 우려됩니다. 

 

 

 

 

 

 

 

10. 9번 문제를  layer.experimental.preprocessing.RandomFilp()과 같은 데이터 증강 레이어를 추가하여 다시 작성해보자.

https://www.tensorflow.org/tutorials/images/data_augmentation를 참고한다. 

 

 

데이터 증강  |  TensorFlow Core

데이터 증강 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 개요 이 튜토리얼에서는 이미지 회전과 같은 무작위(그러나 사실적인) 변환을 적용하여 훈련 세

www.tensorflow.org

 

9번의 코드에서 위와 같이 데이터 증강(무작위로 뒤집기, 회전, 확대/축소 옵션) 레이어와 드롭아웃을 추가하여 학습을 다시 진행해 보았습니다. 손실 함수는 꾸준히 줄어들고, 정확도는 오르는 것으로 보아 과적합이 줄어든 것을 확인할 수 있습니다.

 

 

 

 

 

감사합니다.

 


공부한 내용을 복습/기록하기 위해 작성한 글이므로 내용에 오류가 있을 수 있습니다.

댓글
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Total
Today
Yesterday