DEEP.I - Lab

오프라인 공간의 지능화를 꿈꾸는 딥아이 연구실입니다.

Python/Tensorflow

[Tensorflow] 텐서플로우에서 사전 학습된 VGG16 모델 불러오기

Jongwon Kim 2020. 7. 10. 16:48
반응형

텐서플로우 설치 포스팅에 이어 사전 학습된 VGG 모델을 활용하는 방법을 살펴보겠습니다. VGG Network는 2014년 이미지넷 인식 학술대회에서 2등을 한 신경망 구조입니다. 본격적으로 층이 깊어지기 시작한 초기 모델 중 하나이며, 사용이 쉽고 연결 구조가 직관적이여서 현재까지도 다양한 학습 모델 연구에서 활용되고 있습니다. 모델은 VGG16/19로 나뉘며 본 포스팅에서는 ImageNet 데이터로 사전 학습된 VGG16 모델을 텐서플로우를 통해 활용해보도록 하겠습니다.

 

 

VGG16 모델 구조 ( 입력 영상 크기 = 224 x 224 )

 

 

기본 시스템 환경은 다음과 같습니다. 윈도우에서 아나콘다 가상환경으로 구축하였으며 파이참으로 코드를 구현하였습니다. 이전 포스팅을 참고하시면 빠르게 기본 환경을 구축하실 수 있습니다.

 

OS : Windows 10

Python : 3.8

Tensorflow : 2.2

CUDA : 10.1

cuDNN : 7.6.5

 

2020/07/05 - [Python] - [Tensorflow] 아나콘다 가상환경에서 텐서플로우 설치하기

 

[Tensorflow] 아나콘다 가상환경에서 텐서플로우 설치하기

2019년 말, 텐서플로우 2.0 버전이 배포되면서 머신러닝 분야에서 텐서플로우의 열기는 더욱 더 뜨거워졌습니다. 새로워진 텐서플로우 설치를 시작으로 CNN (Convolutional Neural Network) 기반의 이미지 �

deep-eye.tistory.com

 

0. 소스코드 다운로드 (깃허브) : github.com/DEEPI-LAB/python-TensorFlow-Tutorials.git

 

DEEPI-LAB/python-TensorFlow-Tutorials

Contribute to DEEPI-LAB/python-TensorFlow-Tutorials development by creating an account on GitHub.

github.com

git clone https://github.com/DEEPI-LAB/python-TensorFlow-Tutorials.git

1. 사전 학습된 VGG16 모델 불러오기 (import)

 

from tensorflow.keras.applications.vgg16 import VGG16		# VGG16 모델
from tensorflow.keras.utils import plot_model     		# 모델 시각화 함수

model = VGG16(weights='imagenet')				# imagenet으로 사전 학습된 모델 불러오기

 

정말 간단합니다. 내장된 keras 함수를 통해 VGG16을 로드해주시면 됩니다. 첫 실행에서는 VGG16 모델을 다운로드 받는데 1분정도의 시간이 걸리지만, 이후에는 별도의 다운로드 없이 빠르게 사전 학습된 VGG16 모델을 사용하실 수 있습니다.

 

VGG16 모델 다운로드 중

 

2. VGG16 모델 구조 확인/출력 

 

conda install pydot						# 모델 출력을 위한 필수 라이브러리

 

print(model.summary())						# 모델 구조 확인
plot_model(model, to_file = 'model.png')			# 모델 구조 출력

 

모델을 불러왔으면 확인을 해봐야죠. summary()는 네트워크 구조를 출력하는 함수입니다. VGG16은 비교적 단순한 모델이지만 출력되는 터미널을 보면 아... 이놈도 보통은 아니구나 느낄 수 있죠. 

 

VGG16 Model 구조 요약 

학습된 모델을 불러왔기에 기본 입력의 크기는 224 x 224이며 총 파라미터 수는 138,357,544개입니다. 파이썬이 실행된 경로를 가시면 plot_model() 함수로 출력된 네트워크 구조를 확인 할 수 있습니다.

 

VGG16 모델 구조

 

이와 같은 방법으로 다양한 학습 모델을 불러올수 있습니다. 

 

from tensorflow.keras.applications.vgg16 import VGG16                        
from tensorflow.keras.applications.inception_v3 import InceptionV3
from tensorflow.keras.applications.resnet import ResNet50
from tensorflow.keras.applications.vgg19 import VGG19

model_VGG16 = VGG16(weights='imagenet')
model_VGG19 = VGG19(weights='imagenet')
model_RESNET50 = ResNet50(weights='imagenet')
model_INCEPTIONV3 = InceptionV3(weights='imagenet')

 

 

기본적으로 제공하는 NETWORK

 

사용 환경에 맞게 입력의 크기를 조정하거나 특정 파라미터만을 학습, 특징맥 추출 등의 방법은 다음 포스팅에서 다루도록 하겠습니다. 

 

 

 

# 머신러닝 프로젝트 제작, 상담 및 컨설팅  / 머신러닝 접목 졸업작품 컨설팅

# 데이터 가공, 수집, 라벨링 작업 / C, 파이썬 프로그램 제작

# email : deepi.contact.us@gmail.com

# site : www.deep-i.net

반응형