텐서플로우 설치 포스팅에 이어 사전 학습된 VGG 모델을 활용하는 방법을 살펴보겠습니다. VGG Network는 2014년 이미지넷 인식 학술대회에서 2등을 한 신경망 구조입니다. 본격적으로 층이 깊어지기 시작한 초기 모델 중 하나이며, 사용이 쉽고 연결 구조가 직관적이여서 현재까지도 다양한 학습 모델 연구에서 활용되고 있습니다. 모델은 VGG16/19로 나뉘며 본 포스팅에서는 ImageNet 데이터로 사전 학습된 VGG16 모델을 텐서플로우를 통해 활용해보도록 하겠습니다.
기본 시스템 환경은 다음과 같습니다. 윈도우에서 아나콘다 가상환경으로 구축하였으며 파이참으로 코드를 구현하였습니다. 이전 포스팅을 참고하시면 빠르게 기본 환경을 구축하실 수 있습니다.
OS : Windows 10
Python : 3.8
Tensorflow : 2.2
CUDA : 10.1
cuDNN : 7.6.5
2020/07/05 - [Python] - [Tensorflow] 아나콘다 가상환경에서 텐서플로우 설치하기
0. 소스코드 다운로드 (깃허브) : github.com/DEEPI-LAB/python-TensorFlow-Tutorials.git
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 모델을 사용하실 수 있습니다.
2. VGG16 모델 구조 확인/출력
conda install pydot # 모델 출력을 위한 필수 라이브러리
print(model.summary()) # 모델 구조 확인
plot_model(model, to_file = 'model.png') # 모델 구조 출력
모델을 불러왔으면 확인을 해봐야죠. summary()는 네트워크 구조를 출력하는 함수입니다. VGG16은 비교적 단순한 모델이지만 출력되는 터미널을 보면 아... 이놈도 보통은 아니구나 느낄 수 있죠.
학습된 모델을 불러왔기에 기본 입력의 크기는 224 x 224이며 총 파라미터 수는 138,357,544개입니다. 파이썬이 실행된 경로를 가시면 plot_model() 함수로 출력된 네트워크 구조를 확인 할 수 있습니다.
이와 같은 방법으로 다양한 학습 모델을 불러올수 있습니다.
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')
사용 환경에 맞게 입력의 크기를 조정하거나 특정 파라미터만을 학습, 특징맥 추출 등의 방법은 다음 포스팅에서 다루도록 하겠습니다.
# 머신러닝 프로젝트 제작, 상담 및 컨설팅 / 머신러닝 접목 졸업작품 컨설팅
# 데이터 가공, 수집, 라벨링 작업 / C, 파이썬 프로그램 제작
# email : deepi.contact.us@gmail.com
# site : www.deep-i.net
'Python > Tensorflow' 카테고리의 다른 글
[Python] tensorflow에서 GPU, CPU 사용가능 칩셋 여부 확인하기 (0) | 2020.11.08 |
---|---|
[Tensorflow] 사전 학습된 VGG16 모델에서 특징맵 추출하기 (0) | 2020.10.23 |
[Tensorflow] 아나콘다 가상환경에서 텐서플로우 설치하기 (0) | 2020.07.05 |
[Mask R-CNN] Python과 Keras를 이용한 실시간 객체 탐지 알고리즘 구현 (0) | 2020.06.23 |
[Tensorflow] ImportError: cannot import name 'regex_replace' 에러 (0) | 2020.05.18 |